{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.TimerTrigger$TimerTriggerCause",
          "shortDescription" : "Started by timer"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/dev-language" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 226,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "8603806fa5162dce1f25e94ae2548a10dae00c69",
            "branch" : [
              {
                "SHA1" : "8603806fa5162dce1f25e94ae2548a10dae00c69",
                "name" : "refs/remotes/origin/dev-language"
              }
            ]
          },
          "revision" : {
            "SHA1" : "8603806fa5162dce1f25e94ae2548a10dae00c69",
            "branch" : [
              {
                "SHA1" : "8603806fa5162dce1f25e94ae2548a10dae00c69",
                "name" : "refs/remotes/origin/dev-language"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "8603806fa5162dce1f25e94ae2548a10dae00c69",
        "branch" : [
          {
            "SHA1" : "8603806fa5162dce1f25e94ae2548a10dae00c69",
            "name" : "refs/remotes/origin/dev-language"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/UstadMobile/Respect.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "respect-app-compose-debug.apk",
      "fileName" : "respect-app-compose-debug.apk",
      "relativePath" : "respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk"
    },
    {
      "displayPath" : "respect-app-compose-release.apk",
      "fileName" : "respect-app-compose-release.apk",
      "relativePath" : "respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk"
    },
    {
      "displayPath" : "respect-app-compose-debug.aab",
      "fileName" : "respect-app-compose-debug.aab",
      "relativePath" : "respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab"
    },
    {
      "displayPath" : "respect-app-compose-release.aab",
      "fileName" : "respect-app-compose-release.aab",
      "relativePath" : "respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab"
    },
    {
      "displayPath" : "mapping.txt",
      "fileName" : "mapping.txt",
      "relativePath" : "respect-app-compose/build/outputs/mapping/release/mapping.txt"
    },
    {
      "displayPath" : "respect-cli.zip",
      "fileName" : "respect-cli.zip",
      "relativePath" : "respect-cli/build/distributions/respect-cli.zip"
    },
    {
      "displayPath" : "respect-server-1.0.0.zip",
      "fileName" : "respect-server-1.0.0.zip",
      "relativePath" : "respect-server/build/distributions/respect-server-1.0.0.zip"
    },
    {
      "displayPath" : "respect-server-shadow-1.0.0.zip",
      "fileName" : "respect-server-shadow-1.0.0.zip",
      "relativePath" : "respect-server/build/distributions/respect-server-shadow-1.0.0.zip"
    }
  ],
  "building" : false,
  "description" : null,
  "displayName" : "#226",
  "duration" : 13149,
  "estimatedDuration" : 147816,
  "executor" : null,
  "fullDisplayName" : "dev-language #226",
  "id" : "226",
  "inProgress" : false,
  "keepLog" : false,
  "number" : 226,
  "queueId" : 190,
  "result" : "FAILURE",
  "timestamp" : 1790735820353,
  "url" : "https://devserver3.ustadmobile.com/jenkins/job/dev-language/226/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "a6d22afea62ab81feffaa73dc64902dc471cd682",
        "timestamp" : 1769190744000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: remove unused accountManager\u000a\u000aRemoves the unused `accountManager` field from the `ShareFeedbackViewModel` constructor.\u000a",
        "date" : "2026-01-23 23:22:24 +0530",
        "id" : "a6d22afea62ab81feffaa73dc64902dc471cd682",
        "msg" : "Refactor: remove unused accountManager",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "ff6e74cdb0ef0568cf22fb53bd4e733d88442fad",
        "timestamp" : 1769445344000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "creating list of category from string.xml\u000a",
        "date" : "2026-01-26 22:05:44 +0530",
        "id" : "ff6e74cdb0ef0568cf22fb53bd4e733d88442fad",
        "msg" : "creating list of category from string.xml",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherAndroid.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "78eb1098a7bd589e5f1f03ef8151c21b401bac06",
        "timestamp" : 1769446978000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Implement feedback submission functionality\u000a\u000aThis commit wires up the ShareFeedback screen to enable users to submit feedback.\u000a\u000aKey changes:\u000a- Implemented `onPhoneChanged` and `onEmailChanged` to update the UI state.\u000a- Connected the \"Submit\" button to create and send a `FeedbackTicket`.\u000a- The ticket now correctly uses the user-provided email, selected category, and feedback text.\u000a- Standardized the email subject line using a string resource.\u000a",
        "date" : "2026-01-26 22:32:58 +0530",
        "id" : "78eb1098a7bd589e5f1f03ef8151c21b401bac06",
        "msg" : "feat: Implement feedback submission functionality",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "00f944b82cc7799a057a65be32fe5d4dc1723c58",
        "timestamp" : 1769488351000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Implement feedback ticket submission\u000a\u000aThis commit introduces the functionality to create and submit a feedback ticket.\u000a\u000aChanges include:\u000a- Adding the necessary Koin dependency injection for `FeedbackDataSource`.\u000a- Correcting the Zammad authentication token format.\u000a- Updating the `ShareFeedbackViewModel` to construct and submit the `FeedbackTicket`.\u000a- Modifying the `FeedbackDataSourceHttp` to remove the response body handling.\u000a",
        "date" : "2026-01-27 10:02:31 +0530",
        "id" : "00f944b82cc7799a057a65be32fe5d4dc1723c58",
        "msg" : "feat: Implement feedback ticket submission",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/EmailLauncher.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "bc4cb731b6210e8f5b2dd172c60f382cb50678f1",
        "timestamp" : 1769492342000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactored share feedback view model\u000a\u000a- Extracted hardcoded strings to constants.\u000a- Added a `ticketTitle` variable to `ShareFeedbackViewModel`.\u000a- The `ticketTitle` is now passed as the subject when sending an email.\u000a- Updated the `guess` string resource to include a colon.\u000a",
        "date" : "2026-01-27 11:09:02 +0530",
        "id" : "bc4cb731b6210e8f5b2dd172c60f382cb50678f1",
        "msg" : "Refactored share feedback view model",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/EmailLauncher.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "889350a0ca1ed4e28b906610ddcd4799ecb4d6c7",
        "timestamp" : 1769493693000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refact: Move feedback data source to school data source\u000a\u000aThe `FeedBackDataSource` is now accessed through the `SchoolDataSource` interface.\u000a\u000aChanges include:\u000a- Adding `feedBackDataSource` to the `SchoolDataSource` interface.\u000a- Implementing `feedBackDataSource` in `SchoolDataSourceHttp`, `SchoolDataSourceRepository`, and `SchoolDataSourceDb` (with a TODO).\u000a- Updating `ShareFeedbackViewModel` to use `schoolDataSource.feedBackDataSource`.\u000a- Removing the now-redundant `FeedbackDataSource` Koin definitions.\u000a",
        "date" : "2026-01-27 11:31:33 +0530",
        "id" : "889350a0ca1ed4e28b906610ddcd4799ecb4d6c7",
        "msg" : "Refact: Move feedback data source to school data source",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "58d45b3e973aa06d1cd1b50b8bfe14d5dff88185",
        "timestamp" : 1769495167000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: Renamed `ticketTitle` to `subject` for clarity.\u000a\u000aThe `ticketTitle` variable in `ShareFeedbackViewModel` has been renamed to `subject` to better reflect its purpose.\u000a\u000aIn `EmailLauncherAndroid`, the logic for building the mailto URI has been updated to use string interpolation and `toUri()` for a more concise implementation.\u000a",
        "date" : "2026-01-27 11:56:07 +0530",
        "id" : "58d45b3e973aa06d1cd1b50b8bfe14d5dff88185",
        "msg" : "Refactor: Renamed `ticketTitle` to `subject` for clarity.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherAndroid.kt"
        ],
        "commitId" : "70aa6344ea518a1f4d14d29f02c2744c2188043c",
        "timestamp" : 1769507693000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Moved hardcoded values for WhatsApp, web URLs, and email recipients to a companion object in `ShareFeedbackViewModel`.\u000a",
        "date" : "2026-01-27 15:24:53 +0530",
        "id" : "70aa6344ea518a1f4d14d29f02c2744c2188043c",
        "msg" : "Moved hardcoded values for WhatsApp, web URLs, and email recipients to a companion object in `ShareFeedbackViewModel`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "2b8e20c1f9ff2442f20abf39818b9f086e6b4cc3",
        "timestamp" : 1769508238000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Moved hardcoded values for WhatsApp, web URLs, and email recipients to a companion object in `ShareFeedbackViewModel`.\u000a",
        "date" : "2026-01-27 15:33:58 +0530",
        "id" : "2b8e20c1f9ff2442f20abf39818b9f086e6b4cc3",
        "msg" : "Moved hardcoded values for WhatsApp, web URLs, and email recipients to a companion object in `ShareFeedbackViewModel`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
        ],
        "commitId" : "df262cc009526fe23c50664fd222e495b6ce0f95",
        "timestamp" : 1769513507000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Add validation to share feedback screen\u000a\u000a- Implement required field validation for the feedback description.\u000a- Add validation to ensure either a phone number or email is provided when a response is requested.\u000a- Display error messages on the respective fields.\u000a- Refactor `feedbackText` to `feedbackDescription` for clarity.\u000a",
        "date" : "2026-01-27 17:01:47 +0530",
        "id" : "df262cc009526fe23c50664fd222e495b6ce0f95",
        "msg" : "feat: Add validation to share feedback screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherAndroid.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
        ],
        "commitId" : "e775f4b827b76a76c029d5deaa73d9d0a048285b",
        "timestamp" : 1769573786000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2026-01-28 09:46:26 +0530",
        "id" : "e775f4b827b76a76c029d5deaa73d9d0a048285b",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "b37421b295042e61a653b9699a6eb26ff5e07984",
        "timestamp" : 1769574739000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2026-01-28 10:02:19 +0530",
        "id" : "b37421b295042e61a653b9699a6eb26ff5e07984",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
        ],
        "commitId" : "b97060ae591ccac9216e387e1abdae58504200a2",
        "timestamp" : 1769579614000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Removed email from contact validation on feedback form.\u000a",
        "date" : "2026-01-28 11:23:34 +0530",
        "id" : "b97060ae591ccac9216e387e1abdae58504200a2",
        "msg" : "feat: Removed email from contact validation on feedback form.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.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/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "3170d46d2bb22994e42648e6dea0607b0e079a46",
        "timestamp" : 1769579680000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Removed email from contact validation on feedback form.\u000a",
        "date" : "2026-01-28 11:24:40 +0530",
        "id" : "3170d46d2bb22994e42648e6dea0607b0e079a46",
        "msg" : "feat: Removed email from contact validation on feedback form.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "b9f6f0d89ce01e99c6d32d7eda68e59575c8d4ae",
        "timestamp" : 1769580768000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Fix: Share feedback contact validation\u000a\u000aCorrected the validation logic for the phone number field on the share feedback screen. The error will now be correctly triggered if the \"contact me\" checkbox is selected and the phone number field is left blank.\u000a",
        "date" : "2026-01-28 11:42:48 +0530",
        "id" : "b9f6f0d89ce01e99c6d32d7eda68e59575c8d4ae",
        "msg" : "Fix: Share feedback contact validation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "3bc1b77d4a8ac89585b74833e40873657cb46120",
        "timestamp" : 1769581119000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Appends the user's phone number to the body of the feedback ticket being created.\u000a",
        "date" : "2026-01-28 11:48:39 +0530",
        "id" : "3bc1b77d4a8ac89585b74833e40873657cb46120",
        "msg" : "Appends the user's phone number to the body of the feedback ticket being created.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "668e871940c87a96077d588d535822742a712982",
        "timestamp" : 1769581351000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Appends the user's phone number to the body of the feedback ticket being created.\u000a",
        "date" : "2026-01-28 11:52:31 +0530",
        "id" : "668e871940c87a96077d588d535822742a712982",
        "msg" : "Appends the user's phone number to the body of the feedback ticket being created.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt"
        ],
        "commitId" : "20989f794deb131a87be9c2ebdb5730c6c05bac3",
        "timestamp" : 1769584121000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Appends the user's phone number to the body of the feedback ticket being created.\u000a",
        "date" : "2026-01-28 12:38:41 +0530",
        "id" : "20989f794deb131a87be9c2ebdb5730c6c05bac3",
        "msg" : "Appends the user's phone number to the body of the feedback ticket being created.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/model/FeedbackTicket.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
        ],
        "commitId" : "58faa6168ea37cb58bb9754c4d8d9376493f847c",
        "timestamp" : 1769585134000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "The contact validation error message, which applies to both phone and email fields, has been moved from the phone number field to the email field to ensure it's always visible. Additionally, the validation logic is updated to require at least one contact method (phone or email) when the feedback checkbox is selected, and a new string resource for this validation message has been added.\u000a",
        "date" : "2026-01-28 12:55:34 +0530",
        "id" : "58faa6168ea37cb58bb9754c4d8d9376493f847c",
        "msg" : "The contact validation error message, which applies to both phone and email fields, has been moved from the phone number field to the email field to ensure it's always visible. Additionally, the validation logic is updated to require at least one contact method (phone or email) when the feedback checkbox is selected, and a new string resource for this validation message has been added.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/model/FeedbackTicket.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "4d8b3ea5b05b5a04ac72a864fc722ee782cf85b2",
        "timestamp" : 1769593172000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: Separate contact field validation on feedback form\u000a\u000aThe shared `contactError` state has been replaced with individual `phoneNumberError` and `emailError` states for the phone and email fields on the share feedback screen.\u000a\u000aThis change introduces specific validation logic for each field:\u000a*   If the \"contact me\" checkbox is selected, an error is now displayed under the email field, requiring at least one contact method.\u000a*   Individual validation for incorrect phone number and email formats has been added, displaying \"Invalid\" or \"Invalid email\" respectively.\u000a*   The error message for requiring at least one contact method has been updated for clarity.\u000a",
        "date" : "2026-01-28 15:09:32 +0530",
        "id" : "4d8b3ea5b05b5a04ac72a864fc722ee782cf85b2",
        "msg" : "Refactor: Separate contact field validation on feedback form",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/model/FeedbackTicket.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt"
        ],
        "commitId" : "c1517a73866c94cc252eada8bc1db51492116dde",
        "timestamp" : 1769595267000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Add feedback submitted screen\u000a\u000aIntroduced a confirmation screen that appears after a user successfully submits feedback. This involves creating the `FeedbackSubmittedScreen` and its corresponding `FeedbackSubmittedViewModel`.\u000a\u000aUpon successful ticket creation, the app now navigates to this new screen. Additionally, the phone number is no longer appended to the feedback ticket's article type.\u000a",
        "date" : "2026-01-28 15:44:27 +0530",
        "id" : "c1517a73866c94cc252eada8bc1db51492116dde",
        "msg" : "feat: Add feedback submitted screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/model/FeedbackTicket.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "c9b29b3995e18cfc591d3aa4713222d8b9a5f03a",
        "timestamp" : 1769595603000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Appends the user's phone number to the body of the feedback ticket being created.\u000a",
        "date" : "2026-01-28 15:50:03 +0530",
        "id" : "c9b29b3995e18cfc591d3aa4713222d8b9a5f03a",
        "msg" : "Appends the user's phone number to the body of the feedback ticket being created.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "2f1e0ec71b0e50c59cb1f9c2af727b2b2235c173",
        "timestamp" : 1769595619000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Appends the user's phone number to the body of the feedback ticket being created.\u000a",
        "date" : "2026-01-28 15:50:19 +0530",
        "id" : "2f1e0ec71b0e50c59cb1f9c2af727b2b2235c173",
        "msg" : "Appends the user's phone number to the body of the feedback ticket being created.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "e0d6c7f3e669335a88532177a3017f67b1176cc0",
        "timestamp" : 1769595651000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Appends the user's phone number to the body of the feedback ticket being created.\u000a",
        "date" : "2026-01-28 15:50:51 +0530",
        "id" : "e0d6c7f3e669335a88532177a3017f67b1176cc0",
        "msg" : "Appends the user's phone number to the body of the feedback ticket being created.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "409d446aec3f2a1707e242231d34771dcce86953",
        "timestamp" : 1769605638000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Appends the user's phone number to the body of the feedback ticket being created.\u000a",
        "date" : "2026-01-28 18:37:18 +0530",
        "id" : "409d446aec3f2a1707e242231d34771dcce86953",
        "msg" : "Appends the user's phone number to the body of the feedback ticket being created.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/feedback_sent.xml",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "c09dc8cd4b4ec4271c4d5420c3357fb08e4ef992",
        "timestamp" : 1769605642000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Appends the user's phone number to the body of the feedback ticket being created.\u000a",
        "date" : "2026-01-28 18:37:22 +0530",
        "id" : "c09dc8cd4b4ec4271c4d5420c3357fb08e4ef992",
        "msg" : "Appends the user's phone number to the body of the feedback ticket being created.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/feedback_sent.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
        ],
        "commitId" : "784c88546941121f6433fe6083af9d0c40e30659",
        "timestamp" : 1769607456000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Display submission error on feedback form\u000a\u000aIntroduces an error message on the \"Share Feedback\" screen that is displayed to the user if the feedback submission fails. This is implemented by adding an `errorMessage` state to the `ShareFeedbackViewModel` and a corresponding `Text` component in the UI to show the message. Additionally, a new string resource for the error has been created.\u000a",
        "date" : "2026-01-28 19:07:36 +0530",
        "id" : "784c88546941121f6433fe6083af9d0c40e30659",
        "msg" : "feat: Display submission error on feedback form",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.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/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "765037d6d5a5a721c6a9462fdda3029053f7e64f",
        "timestamp" : 1769609128000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "added end-to-end test\u000a",
        "date" : "2026-01-28 18:05:28 +0400",
        "id" : "765037d6d5a5a721c6a9462fdda3029053f7e64f",
        "msg" : "added end-to-end test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
        ],
        "commitId" : "659d0082b864fa67567d217a0c2555129f02e389",
        "timestamp" : 1769614249000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Cleared share feedback screen from backstack\u000a\u000aAfter successfully submitting feedback, the navigation logic is updated to clear the `ShareFeedback` screen from the back stack. This prevents the user from navigating back to the form they just submitted. Additionally, padding was added to the image on the `FeedbackSubmittedScreen`.\u000a",
        "date" : "2026-01-28 21:00:49 +0530",
        "id" : "659d0082b864fa67567d217a0c2555129f02e389",
        "msg" : "feat: Cleared share feedback screen from backstack",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
        ],
        "commitId" : "d3625e0f8b038a9937ee33ef7f92c34c93f13db1",
        "timestamp" : 1769616111000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-01-28 21:31:51 +0530",
        "id" : "d3625e0f8b038a9937ee33ef7f92c34c93f13db1",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "2828513646853240f8871234560cb1c7b51a6bb7",
        "timestamp" : 1769665993000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : " Refactor contact validation error on feedback form\u000a",
        "date" : "2026-01-29 11:23:13 +0530",
        "id" : "2828513646853240f8871234560cb1c7b51a6bb7",
        "msg" : "Refactor contact validation error on feedback form",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle/wrapper/gradle-wrapper.properties",
          "gradle/libs.versions.toml",
          "respect-datalayer-repository/log/respect-server.2026-01-14.0.log",
          "gradle.properties"
        ],
        "commitId" : "7ff74f04134b5fd2478c3e5cc7e3646e6d628d46",
        "timestamp" : 1769674384000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : " Update Gradle and remove log files\u000a",
        "date" : "2026-01-29 13:43:04 +0530",
        "id" : "7ff74f04134b5fd2478c3e5cc7e3646e6d628d46",
        "msg" : "Update Gradle and remove log files",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/log/respect-server.2026-01-14.0.log"
          },
          {
            "editType" : "edit",
            "file" : "gradle/wrapper/gradle-wrapper.properties"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "b2537e62509dfa2cedcb0b938e04431a70b8f72e",
        "timestamp" : 1769677857000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Configuration loading for Zammad credentials has been updated in `build.gradle.kts`, now sourcing the token and URL from a `zammad.properties` file or environment variables.\u000a",
        "date" : "2026-01-29 14:40:57 +0530",
        "id" : "b2537e62509dfa2cedcb0b938e04431a70b8f72e",
        "msg" : "Configuration loading for Zammad credentials has been updated in `build.gradle.kts`, now sourcing the token and URL from a `zammad.properties` file or environment variables.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/add_person_create_account.yaml",
          ".maestro/flows/004_user_send_feedback_test.yaml",
          ".maestro/flows/subflows/school_user_login_flow.yaml"
        ],
        "commitId" : "915ab3c24000630e1706b5a0a8b4af87e68e0e59",
        "timestamp" : 1769679989000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "added validations\u000a",
        "date" : "2026-01-29 13:46:29 +0400",
        "id" : "915ab3c24000630e1706b5a0a8b4af87e68e0e59",
        "msg" : "added validations",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/add_person_create_account.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/school_user_login_flow.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/004_user_send_feedback_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "76cd48a5efd336dc8c549ff95dde093f553d7dcc",
        "timestamp" : 1769704111000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Integrate FeedbackDataSource into SchoolDataSource\u000a\u000aExtracted the `FeedBackDataSource` into the `SchoolDataSource` interface and its various implementations (`Http`, `Db`, `Repository`). This refactoring centralizes data source access.\u000a\u000aKey changes include:\u000a- Passing Zammad URL and token configurations from the `AppKoinModule` to `SchoolDataSourceHttp`.\u000a- Updating `ShareFeedbackViewModel` to obtain the `feedBackDataSource` via the main `SchoolDataSource`.\u000a- Removing the hardcoded Zammad URL from `FeedbackDataSourceHttp` and using the configured one instead.\u000a- Hiding the bottom navigation on the \"Share Feedback\" screen.\u000a",
        "date" : "2026-01-29 21:58:31 +0530",
        "id" : "76cd48a5efd336dc8c549ff95dde093f553d7dcc",
        "msg" : "refactor: Integrate FeedbackDataSource into SchoolDataSource",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "aeea06f22157081cdd4b39d9b45681bc3482b0f4",
        "timestamp" : 1769705189000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Handle feedback submission errors and hide navigation\u000a\u000a- Checks the HTTP response status after attempting to create a feedback ticket.\u000a- Displays a generic error message to the user if the ticket submission fails.\u000a- On the feedback submission confirmation screen, the bottom navigation is now hidden.\u000a- The `createTicket` function in the data source and view model now returns an `HttpResponse` to enable status checking.\u000a",
        "date" : "2026-01-29 22:16:29 +0530",
        "id" : "aeea06f22157081cdd4b39d9b45681bc3482b0f4",
        "msg" : "Handle feedback submission errors and hide navigation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/EmailLauncher.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncher.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WebLauncher.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCase.kt"
        ],
        "commitId" : "741ff12b56f782bf6fa602ae19402ce5b24b026d",
        "timestamp" : 1769706105000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: Append \"UseCase\" to launcher class names\u000a\u000aRenamed the `EmailLauncher`, `WebLauncher`, and `WhatsAppLauncher` classes and their corresponding Android implementations to `EmailLauncherUseCase`, `WebLauncherUseCase`, and `WhatsAppLauncherUseCase` respectively. This change makes their purpose as use cases clearer and aligns them with the project's naming conventions.\u000a\u000aThe `ShareFeedbackViewModel` and the Koin dependency injection module have been updated to reflect these new class names.\u000a",
        "date" : "2026-01-29 22:31:45 +0530",
        "id" : "741ff12b56f782bf6fa602ae19402ce5b24b026d",
        "msg" : "Refactor: Append \"UseCase\" to launcher class names",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WebLauncher.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/EmailLauncher.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncher.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/sharefeedback/FeedBackDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "f4de51a39e15ee38525f4984521f1ff869953108",
        "timestamp" : 1769711106000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Removes the `FeedBackDataSource`, its HTTP implementation, and repository, along with their integration into the existing data source layers. The responsibility for feedback ticket creation has been moved from the data layer to the `ShareFeedbackViewModel`.\u000a\u000aAdditionally, Zammad API credentials (URL and token) are now configured through `buildConfigField` in the `respect-lib-shared` module, removing the previous hardcoded values and `respect-app-compose` build configurations.\u000a",
        "date" : "2026-01-29 23:55:06 +0530",
        "id" : "f4de51a39e15ee38525f4984521f1ff869953108",
        "msg" : "Removes the `FeedBackDataSource`, its HTTP implementation, and repository, along with their integration into the existing data source layers. The responsibility for feedback ticket creation has been moved from the data layer to the `ShareFeedbackViewModel`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/sharefeedback/FeedbackDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/sharefeedback/FeedBackDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/FeedBackDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/build.gradle.kts",
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "d40c7cc0b87c46fff6d4993e6bd088461452db09",
        "timestamp" : 1769712553000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Refactored feedback property names for clarity and consistency.\u000a\u000aRenamed Zammad and Respect contact properties to use a `FEEDBACK_` prefix, improving clarity about their purpose. This change affects build configuration files (`build.gradle.kts`) by renaming build config fields and the property files from which they are loaded (e.g., `zammad.properties` to `feedback.properties`).\u000a\u000aSpecifically, the following properties were renamed:\u000a- `ZAMMAD_URL` to `FEEDBACK_ZAMMADURL`\u000a- `ZAMMAD_TOKEN` to `FEEDBACK_ZAMMADTOKEN`\u000a\u000aAdditionally, new properties for Respect's contact details were introduced with the same naming convention:\u000a- `FEEDBACK_RESPECTPHONENUMBER`\u000a- `FEEDBACK_RESPECTEMAILID`\u000a",
        "date" : "2026-01-30 00:19:13 +0530",
        "id" : "d40c7cc0b87c46fff6d4993e6bd088461452db09",
        "msg" : "feat: Refactored feedback property names for clarity and consistency.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/build.gradle.kts"
        ],
        "commitId" : "6d249989f5de189a7a2a9efda5faa9581d947a09",
        "timestamp" : 1769754663000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update build.gradle.kts\u000a",
        "date" : "2026-01-30 12:01:03 +0530",
        "id" : "6d249989f5de189a7a2a9efda5faa9581d947a09",
        "msg" : "Update build.gradle.kts",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "6114a11cce90d520c07570b8502128178db91c0d",
        "timestamp" : 1769754866000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update AppKoinModule.kt\u000a",
        "date" : "2026-01-30 12:04:26 +0530",
        "id" : "6114a11cce90d520c07570b8502128178db91c0d",
        "msg" : "Update AppKoinModule.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/feedback/GetFeedbackInfoUseCaseImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/CreateTicketUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCaseAndroid.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/ZammadTicketResponse.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackTicket.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/model/FeedbackTicket.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/GetFeedbackInfoUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/feedback/CreateTicketUseCaseImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt"
        ],
        "commitId" : "a3eef313e4a16ce1ae3718a622c9691e3c799ecf",
        "timestamp" : 1769766902000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Integrate Zammad for feedback submission and refactor configuration\u000a\u000aIntegrated the feedback submission feature with the Zammad ticketing system. When a user submits feedback, a ticket is now created in Zammad, and the resulting ticket ID is passed to the confirmation screen.\u000a\u000aKey changes include:\u000a- A new `CreateTicketUseCase` is introduced to handle the API call to Zammad.\u000a- The `ShareFeedbackViewModel` now uses this use case to create a ticket and navigates to a success screen with the new ticket ID.\u000a- Configuration properties for Zammad (URL, token) and contact details (phone, email) have been moved from the `respect-app-compose` module to the `respect-lib-shared` module. This centralizes feedback-related settings.\u000a- The `EmailLauncherUseCase` and `WhatsAppLauncherUseCase` were updated to use the newly centralized contact information.\u000a",
        "date" : "2026-01-30 15:25:02 +0530",
        "id" : "a3eef313e4a16ce1ae3718a622c9691e3c799ecf",
        "msg" : "feat: Integrate Zammad for feedback submission and refactor configuration",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/sharefeedback/model/FeedbackTicket.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/feedback/CreateTicketUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/CreateTicketUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/ZammadTicketResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/GetFeedbackInfoUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/feedback/GetFeedbackInfoUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackTicket.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
        ],
        "commitId" : "ebdf205e7743ca2e21c120d1984761739dd04ca5",
        "timestamp" : 1769771208000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Display Zammad ticket ID on feedback submission screen\u000a\u000aAdds the Zammad ticket ID to the \"Feedback Submitted\" screen, making it visible to the user for reference. This ID is displayed in a new `Text` element and tagged for testing purposes.\u000a",
        "date" : "2026-01-30 16:36:48 +0530",
        "id" : "ebdf205e7743ca2e21c120d1984761739dd04ca5",
        "msg" : "feat: Display Zammad ticket ID on feedback submission screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "a2cb2fbb73001a7b5f887356164076ff6e989a18",
        "timestamp" : 1769773017000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "removed feedback changes from 003\u000a",
        "date" : "2026-01-30 15:36:57 +0400",
        "id" : "a2cb2fbb73001a7b5f887356164076ff6e989a18",
        "msg" : "removed feedback changes from 003",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
        ],
        "commitId" : "5849e1aed1e8698fa63ba334ee223d849ef5301b",
        "timestamp" : 1769774917000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Hide Zammad ticket ID on feedback submission screen\u000a\u000aThe Zammad ticket ID displayed on the feedback submitted screen is now hidden from the user by setting its color to transparent. This change is implemented for UI testing purposes while keeping the element accessible to test automation frameworks via its `testTag`.\u000a",
        "date" : "2026-01-30 17:38:37 +0530",
        "id" : "5849e1aed1e8698fa63ba334ee223d849ef5301b",
        "msg" : "feat: Hide Zammad ticket ID on feedback submission screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
        ],
        "commitId" : "86f6745273eb22e1251f02daf1e266c0c5736737",
        "timestamp" : 1769776840000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: Remove redundant quotes in error message string\u000a",
        "date" : "2026-01-30 18:10:40 +0530",
        "id" : "86f6745273eb22e1251f02daf1e266c0c5736737",
        "msg" : "Refactor: Remove redundant quotes in error message string",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "8caa1048eab1633dd01cd31c8a8f104fcad63093",
        "timestamp" : 1769777869000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: Clear error message on submit\u000a\u000aClears the previous error message when the user clicks the submit button again.\u000a",
        "date" : "2026-01-30 18:27:49 +0530",
        "id" : "8caa1048eab1633dd01cd31c8a8f104fcad63093",
        "msg" : "Refactor: Clear error message on submit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/004_user_send_feedback_test.yaml"
        ],
        "commitId" : "d0e2d7ec240fc7f1951cee7210d7150525be5ae9",
        "timestamp" : 1769781347000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "removed feedback changes from 003\u000a",
        "date" : "2026-01-30 17:55:47 +0400",
        "id" : "d0e2d7ec240fc7f1951cee7210d7150525be5ae9",
        "msg" : "removed feedback changes from 003",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/004_user_send_feedback_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/004_user_send_feedback_test.yaml"
        ],
        "commitId" : "29fbd62eb54bba1d39d538910c8f8c50a9b0c97c",
        "timestamp" : 1769781800000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "removed\u000a",
        "date" : "2026-01-30 18:03:20 +0400",
        "id" : "29fbd62eb54bba1d39d538910c8f8c50a9b0c97c",
        "msg" : "removed",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/004_user_send_feedback_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
        ],
        "commitId" : "0f9f5b501a3a25ccdfa9febd0272e1f5201c195e",
        "timestamp" : 1769784011000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Update feedback response string\u000a",
        "date" : "2026-01-30 20:10:11 +0530",
        "id" : "0f9f5b501a3a25ccdfa9febd0272e1f5201c195e",
        "msg" : "feat: Update feedback response string",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/004_user_send_feedback_test.yaml",
          ".maestro/flows/subflows/school_admin_login_flow.yaml"
        ],
        "commitId" : "754411a3fcb3d999a188224f65df0e41e8e66ba9",
        "timestamp" : 1769784936000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated\u000a",
        "date" : "2026-01-30 18:55:36 +0400",
        "id" : "754411a3fcb3d999a188224f65df0e41e8e66ba9",
        "msg" : "updated",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/school_admin_login_flow.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/004_user_send_feedback_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/log/respect-server.2026-01-14.0.log"
        ],
        "commitId" : "354e0b785a540e804b184351474377766fe21e51",
        "timestamp" : 1769788996000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Removed unused log file and import.\u000a.\u000a",
        "date" : "2026-01-30 21:33:16 +0530",
        "id" : "354e0b785a540e804b184351474377766fe21e51",
        "msg" : "refactor: Removed unused log file and import.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/log/respect-server.2026-01-14.0.log"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
        ],
        "commitId" : "e22305478068d670d68822d4c6e8d375bab70cdf",
        "timestamp" : 1769843403000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Update feedback form strings for clarity\u000a",
        "date" : "2026-01-31 12:40:03 +0530",
        "id" : "e22305478068d670d68822d4c6e8d375bab70cdf",
        "msg" : "feat: Update feedback form strings for clarity",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt"
        ],
        "commitId" : "e855eabd17ca05860f6b5ff2cf2b67b2ceeb56d3",
        "timestamp" : 1769844451000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Hide the user account icon on the \"Share Feedback\" and \"Feedback Submitted\" screens.\u000a",
        "date" : "2026-01-31 12:57:31 +0530",
        "id" : "e855eabd17ca05860f6b5ff2cf2b67b2ceeb56d3",
        "msg" : "Hide the user account icon on the \"Share Feedback\" and \"Feedback Submitted\" screens.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/004_user_send_feedback_test.yaml",
          "ci-run-maestro.sh",
          ".gitignore",
          ".maestro/flows/scripts/verifyZammadTicket.js"
        ],
        "commitId" : "9084cca9336ae8ee8f51955f8fcd5d6ead04cfb3",
        "timestamp" : 1769867489000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated API call\u000a",
        "date" : "2026-01-31 17:51:29 +0400",
        "id" : "9084cca9336ae8ee8f51955f8fcd5d6ead04cfb3",
        "msg" : "updated API call",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".gitignore"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/004_user_send_feedback_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/scripts/verifyZammadTicket.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/004_user_send_feedback_test.yaml"
        ],
        "commitId" : "b1b03b57aedeb7d35ddd5ad90270beedacc0eb9b",
        "timestamp" : 1769877996000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated API call\u000a",
        "date" : "2026-01-31 20:46:36 +0400",
        "id" : "b1b03b57aedeb7d35ddd5ad90270beedacc0eb9b",
        "msg" : "updated API call",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/004_user_send_feedback_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "317d4704bd268cec82ce1c8b7f8e7c267ab0b36e",
        "timestamp" : 1769878627000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated maestro.sh\u000a",
        "date" : "2026-01-31 20:57:07 +0400",
        "id" : "317d4704bd268cec82ce1c8b7f8e7c267ab0b36e",
        "msg" : "updated maestro.sh",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/004_user_send_feedback_test.yaml"
        ],
        "commitId" : "349b70c30db7eedf9f969ca33e2e06c9a0efde71",
        "timestamp" : 1769880034000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated 004 test\u000a",
        "date" : "2026-01-31 21:20:34 +0400",
        "id" : "349b70c30db7eedf9f969ca33e2e06c9a0efde71",
        "msg" : "updated 004 test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/004_user_send_feedback_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
        ],
        "commitId" : "4a93ed2c98d5bd33258c90cc65f387b920e055ff",
        "timestamp" : 1769962973000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "The `FeedbackCategory` enum has been refactored This change is reflected in the `ShareFeedbackScreen`\u000a\u000aAdditionally, Android-specific logging (`android.util.Log`) has been replaced with a common `print` statement in the `EmailLauncherUseCaseAndroid`, `WebLauncherUseCaseAndroid`, and `WhatsAppLauncherUseCaseAndroid` files.\u000a",
        "date" : "2026-02-01 21:52:53 +0530",
        "id" : "4a93ed2c98d5bd33258c90cc65f387b920e055ff",
        "msg" : "The `FeedbackCategory` enum has been refactored This change is reflected in the `ShareFeedbackScreen`",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "855e013ba71c3822d5f76bb199e8fb24d378aad2",
        "timestamp" : 1769963036000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "The `FeedbackCategory` enum has been refactored This change is reflected in the `ShareFeedbackScreen`\u000a",
        "date" : "2026-02-01 21:53:56 +0530",
        "id" : "855e013ba71c3822d5f76bb199e8fb24d378aad2",
        "msg" : "The `FeedbackCategory` enum has been refactored This change is reflected in the `ShareFeedbackScreen`",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackTicket.kt"
        ],
        "commitId" : "403b774ff4f1b9cc79f18870da6719f0549820bf",
        "timestamp" : 1769964674000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: Cleaned up feedback submission code\u000a",
        "date" : "2026-02-01 22:21:14 +0530",
        "id" : "403b774ff4f1b9cc79f18870da6719f0549820bf",
        "msg" : "Refactor: Cleaned up feedback submission code",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackTicket.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "bdb14a81f1c90639d7515747ac671926e0b2055f",
        "timestamp" : 1770011640000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: Cleaned up feedback submission code\u000a",
        "date" : "2026-02-02 11:24:00 +0530",
        "id" : "bdb14a81f1c90639d7515747ac671926e0b2055f",
        "msg" : "Refactor: Cleaned up feedback submission code",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
        ],
        "commitId" : "f8040ad5fb40a4f4708663b95c23300d73f5bf13",
        "timestamp" : 1770019216000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Improve Share Feedback screen code structure and accessibility\u000a\u000a`FeedbackCategory` enum is simplified\u000a The `FeedbackItem` composable has been renamed to `QuickContactItem` for better clarity, as it represents quick contact methods.\u000a",
        "date" : "2026-02-02 13:30:16 +0530",
        "id" : "f8040ad5fb40a4f4708663b95c23300d73f5bf13",
        "msg" : "refactor: Improve Share Feedback screen code structure and accessibility",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/004_user_send_feedback_test.yaml",
          "ci-run-maestro.sh",
          ".maestro/flows/scripts/verifyZammadTicket.js"
        ],
        "commitId" : "5891a0f12ff1049d67065ec87b6e98f10e8262bf",
        "timestamp" : 1770025661000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated properties file path\u000a",
        "date" : "2026-02-02 13:47:41 +0400",
        "id" : "5891a0f12ff1049d67065ec87b6e98f10e8262bf",
        "msg" : "updated properties file path",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/004_user_send_feedback_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/scripts/verifyZammadTicket.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh",
          ".maestro/flows/scripts/verifyZammadTicket.js"
        ],
        "commitId" : "7655ee448f1f9f2445f2080b1adc20f3a84d51e6",
        "timestamp" : 1770026876000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated properties file path\u000a",
        "date" : "2026-02-02 14:07:56 +0400",
        "id" : "7655ee448f1f9f2445f2080b1adc20f3a84d51e6",
        "msg" : "updated properties file path",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/scripts/verifyZammadTicket.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "d13a8050ff36cbb93c2827a982baaa00fc74399a",
        "timestamp" : 1770027265000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated\u000a",
        "date" : "2026-02-02 14:14:25 +0400",
        "id" : "d13a8050ff36cbb93c2827a982baaa00fc74399a",
        "msg" : "updated",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "9986ef65b07678a6bc7c8d62432759ce8df4e30e",
        "timestamp" : 1770027709000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated maestro.sh file\u000a",
        "date" : "2026-02-02 14:21:49 +0400",
        "id" : "9986ef65b07678a6bc7c8d62432759ce8df4e30e",
        "msg" : "updated maestro.sh file",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/log/respect-server.2026-02-01.0.log",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/log/respect-server.2026-01-29.0.log",
          "respect-lib-shared/log/respect-server.2026-01-30.0.log",
          "respect-datalayer-repository/log/respect-server.2026-01-30.0.log",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/log/respect-server.2026-02-01.0.log"
        ],
        "commitId" : "c7493171df92798b9878f58d42464ae7e5a2d273",
        "timestamp" : 1770030819000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "chore: Add server logs to gitignore.\u000a",
        "date" : "2026-02-02 16:43:39 +0530",
        "id" : "c7493171df92798b9878f58d42464ae7e5a2d273",
        "msg" : "chore: Add server logs to gitignore.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/log/respect-server.2026-01-29.0.log"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/log/respect-server.2026-01-30.0.log"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/log/respect-server.2026-02-01.0.log"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/log/respect-server.2026-02-01.0.log"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/log/respect-server.2026-01-30.0.log"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/log/respect-server.2026-01-29.0.log",
          "respect-datalayer-repository/log/respect-server.2026-02-01.0.log",
          "respect-lib-shared/log/respect-server.2026-01-30.0.log",
          "respect-datalayer-repository/log/respect-server.2026-01-30.0.log",
          "respect-lib-shared/log/respect-server.2026-02-01.0.log"
        ],
        "commitId" : "e7192fbf75581cea38dd37065654ef5bd82ce622",
        "timestamp" : 1770031029000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "chore: Add server logs to gitignore.\u000a",
        "date" : "2026-02-02 16:47:09 +0530",
        "id" : "e7192fbf75581cea38dd37065654ef5bd82ce622",
        "msg" : "chore: Add server logs to gitignore.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/log/respect-server.2026-02-01.0.log"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/log/respect-server.2026-01-30.0.log"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/log/respect-server.2026-01-29.0.log"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/log/respect-server.2026-02-01.0.log"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/log/respect-server.2026-01-30.0.log"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/add_person_create_account.yaml"
        ],
        "commitId" : "237f0ba51ef6e1a0f3275dc1abcaeef6dc90a7f3",
        "timestamp" : 1770036570000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated maestro.sh file\u000a",
        "date" : "2026-02-02 16:49:30 +0400",
        "id" : "237f0ba51ef6e1a0f3275dc1abcaeef6dc90a7f3",
        "msg" : "updated maestro.sh file",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/add_person_create_account.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh",
          ".maestro/flows/scripts/verifyZammadTicket.js"
        ],
        "commitId" : "b7c056400c60b78afd3f8111d33c8f10c84d74c4",
        "timestamp" : 1770038470000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated case\u000a",
        "date" : "2026-02-02 17:21:10 +0400",
        "id" : "b7c056400c60b78afd3f8111d33c8f10c84d74c4",
        "msg" : "updated case",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/scripts/verifyZammadTicket.js"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "49bab904229b75089fb7ba2029521e69d56453b7",
        "timestamp" : 1770039051000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated url\u000a",
        "date" : "2026-02-02 17:30:51 +0400",
        "id" : "49bab904229b75089fb7ba2029521e69d56453b7",
        "msg" : "updated url",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh",
          ".maestro/flows/scripts/verifyZammadTicket.js"
        ],
        "commitId" : "7a9ee1538b38f910f1f12bb88efd5d77d422bce8",
        "timestamp" : 1770040889000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "test cleanup\u000a",
        "date" : "2026-02-02 18:01:29 +0400",
        "id" : "7a9ee1538b38f910f1f12bb88efd5d77d422bce8",
        "msg" : "test cleanup",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/scripts/verifyZammadTicket.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt"
        ],
        "commitId" : "d1818a9b0c5d5383004aa9d621e6a8caef66583c",
        "timestamp" : 1770098488000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: Consolidate email launching logic into LaunchSendEmailUseCase.\u000a\u000aRemoved the specific `EmailLauncherUseCase` and its Android implementation. The existing `LaunchSendEmailUseCase` has been updated to handle all email launching scenarios by making the `body` and `emailId` parameters optional.\u000a\u000aThis change consolidates redundant code, allowing a single use case to manage sending emails with or without a pre-filled recipient and body. ViewModels have been updated to use the unified `LaunchSendEmailUseCase`.\u000a",
        "date" : "2026-02-03 11:31:28 +0530",
        "id" : "d1818a9b0c5d5383004aa9d621e6a8caef66583c",
        "msg" : "Refactor: Consolidate email launching logic into LaunchSendEmailUseCase.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/EmailLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
        ],
        "commitId" : "d7b438efa496d1f9d5fa09b2990f9230a302fb0f",
        "timestamp" : 1770287058000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: using material theme\u000a",
        "date" : "2026-02-05 15:54:18 +0530",
        "id" : "d7b438efa496d1f9d5fa09b2990f9230a302fb0f",
        "msg" : "feat: using material theme",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
        ],
        "commitId" : "a513cc61b6e256abb9d8d3a0e1a4f3bdf7dffb65",
        "timestamp" : 1770639944000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress: model Respect App manifest using OPDS.\u000a\u000aAdd database migrations.\u000a",
        "date" : "2026-02-09 16:25:44 +0400",
        "id" : "a513cc61b6e256abb9d8d3a0e1a4f3bdf7dffb65",
        "msg" : "Work in progress: model Respect App manifest using OPDS.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/3.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt",
          "gradle/gradle-daemon-jvm.properties",
          "settings.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "d0a2110dfec427c45610248a5f081cbd7d3327bd",
        "timestamp" : 1771253618000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add architecture and system to handle Opds for both external sources (eg. compatible apps) and internal (school playlists).\u000a",
        "date" : "2026-02-16 18:53:38 +0400",
        "id" : "d0a2110dfec427c45610248a5f081cbd7d3327bd",
        "msg" : "Add architecture and system to handle Opds for both external sources (eg. compatible apps) and internal (school playlists).",
        "paths" : [
          {
            "editType" : "add",
            "file" : "gradle/gradle-daemon-jvm.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/3.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.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/school/opds/ext/OpdsFeedExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-lib-opds-model/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeedMetadata.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsDataSource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedMetadataEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
        ],
        "commitId" : "31241d0934af33bbbc5cc9935f684cf1e6692746",
        "timestamp" : 1771401185000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress making OpdsFeed a writable entity as per other entities in the school database.\u000a",
        "date" : "2026-02-18 11:53:05 +0400",
        "id" : "31241d0934af33bbbc5cc9935f684cf1e6692746",
        "msg" : "Work in progress making OpdsFeed a writable entity as per other entities in the school database.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "edit",
            "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/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeedMetadata.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/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json"
        ],
        "commitId" : "1553ef245912541d474ca978dcb333ae810cad70",
        "timestamp" : 1771401223000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress making OpdsFeed a writable entity as per other entities in the school database.\u000a",
        "date" : "2026-02-18 11:53:43 +0400",
        "id" : "1553ef245912541d474ca978dcb333ae810cad70",
        "msg" : "Work in progress making OpdsFeed a writable entity as per other entities in the school database.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/BaseDataSourceValidationHelper.kt",
          "respect-datalayer-repository/README.md",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
        ],
        "commitId" : "83570f164f24df7e73d004ea4ead65a1bb14ea2d",
        "timestamp" : 1771429916000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement write support for OpdsFeed including handling etag and last-modified header for non-RESPECT generated feeds.\u000a",
        "date" : "2026-02-18 19:51:56 +0400",
        "id" : "83570f164f24df7e73d004ea4ead65a1bb14ea2d",
        "msg" : "Implement write support for OpdsFeed including handling etag and last-modified header for non-RESPECT generated feeds.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/BaseDataSourceValidationHelper.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedEntityDao.kt"
        ],
        "commitId" : "f3416e4cacc3a1a92ae8c21182724ee187d70d75",
        "timestamp" : 1771430925000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add OpdsFeed validation helper implementation.\u000a",
        "date" : "2026-02-18 20:08:45 +0400",
        "id" : "f3416e4cacc3a1a92ae8c21182724ee187d70d75",
        "msg" : "Add OpdsFeed validation helper implementation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.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/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsDataSource.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/OpdsDataSourceDb.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsDataSourceLocal.kt"
        ],
        "commitId" : "511867be668dad825097c0719e53e35898756da0",
        "timestamp" : 1771499288000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Make OpdsFeed writable to handle playlists: work in progress.\u000a\u000a1) Update OpdsRespectRepositoryIntegrationTest.kt to use OpdsFeedDataSource\u000a2) Update LaunchAppUseCase to use an OpdsPublication instead of a RespectAppManifest.\u000a",
        "date" : "2026-02-19 15:08:08 +0400",
        "id" : "511867be668dad825097c0719e53e35898756da0",
        "msg" : "Make OpdsFeed writable to handle playlists: work in progress.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
        ],
        "commitId" : "0b5e01f97298fa8cd802e6c26f1261419da15aff",
        "timestamp" : 1771501923000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update documentation on OpdsFeedDataSource on how external/internal data is handled.\u000a",
        "date" : "2026-02-19 15:52:03 +0400",
        "id" : "0b5e01f97298fa8cd802e6c26f1261419da15aff",
        "msg" : "Update documentation on OpdsFeedDataSource on how external/internal data is handled.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/README.md",
          ".maestro/flows/004_user_send_feedback_test.yaml",
          "respect-test-end-to-end/test-description/006_user_signup_using_passkey_test_description.md",
          "respect-test-end-to-end/test-description/006_002_user_send_feedback_test.md",
          ".maestro/flows/006_002_user_send_feedback_test.yaml",
          "respect-test-end-to-end/test-description/007_001_user_signup_using_passkey_test_description.md"
        ],
        "commitId" : "6982b9b5345b93fedb75a913eb056a49e72b7674",
        "timestamp" : 1771503783000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "test - updated test description\u000a",
        "date" : "2026-02-19 16:23:03 +0400",
        "id" : "6982b9b5345b93fedb75a913eb056a49e72b7674",
        "msg" : "test - updated test description",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/006_002_user_send_feedback_test.yaml"
          },
          {
            "editType" : "add",
            "file" : "respect-test-end-to-end/test-description/006_002_user_send_feedback_test.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/README.md"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/004_user_send_feedback_test.yaml"
          },
          {
            "editType" : "add",
            "file" : "respect-test-end-to-end/test-description/007_001_user_signup_using_passkey_test_description.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/test-description/006_user_signup_using_passkey_test_description.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt"
        ],
        "commitId" : "5e2515742c9f53c22a77484606cb7ca95d007c24",
        "timestamp" : 1771580037000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update FeedbackCategory.kt\u000a",
        "date" : "2026-02-20 15:03:57 +0530",
        "id" : "5e2515742c9f53c22a77484606cb7ca95d007c24",
        "msg" : "Update FeedbackCategory.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
        ],
        "commitId" : "a4a3eac753d458ceda02fbfc62a00198f70cee81",
        "timestamp" : 1772018741000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Make Opds Feed writable: make initial working client - server integration test.\u000a",
        "date" : "2026-02-25 15:25:41 +0400",
        "id" : "a4a3eac753d458ceda02fbfc62a00198f70cee81",
        "msg" : "Make Opds Feed writable: make initial working client - server integration test.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsPublicationDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsPublicationDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsDataSourceLocal.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "edff29ccaff5c8c9fdbbbfc459e5adf72a0097a4",
        "timestamp" : 1772098577000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move OpdsPublication data source to follow same naming pattern.\u000a",
        "date" : "2026-02-26 13:36:17 +0400",
        "id" : "edff29ccaff5c8c9fdbbbfc459e5adf72a0097a4",
        "msg" : "Move OpdsPublication data source to follow same naming pattern.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsPublicationDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsPublicationDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.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/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt"
        ],
        "commitId" : "e408883dc6a4cd98fecf00ece74ec46986d2f508",
        "timestamp" : 1772099762000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update OpdsPublicationDataSourceRepository to follow pattern as per OpdsFeedRepository.\u000a",
        "date" : "2026-02-26 13:56:02 +0400",
        "id" : "e408883dc6a4cd98fecf00ece74ec46986d2f508",
        "msg" : "Update OpdsPublicationDataSourceRepository to follow pattern as per OpdsFeedRepository.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsPublicationDataSourceHttp.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsPublicationDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/RespectAppManifestExt.kt"
        ],
        "commitId" : "ee1643a8e9741ccd588cf4051d60dc82bf67560b",
        "timestamp" : 1772446868000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "OpdsPublicationDataSource improvements\u000a\u000aFix mistake in query that prevented links on publication being saved correctly into database.\u000a\u000aUpdate OpdsPublicationDataSourceHttp.kt so it can handle RespectAppmanifest and convert into an OpdsPublication.\u000a",
        "date" : "2026-03-02 14:21:08 +0400",
        "id" : "ee1643a8e9741ccd588cf4051d60dc82bf67560b",
        "msg" : "OpdsPublicationDataSource improvements",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsPublicationDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsPublicationDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/RespectAppManifestExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DateConstants.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/DummySchoolConfigSettingsDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-server/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedMetadataEntityDao.kt"
        ],
        "commitId" : "cc9c881d4a49f8381dff27e539fad346bc728ea3",
        "timestamp" : 1772459395000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improvements to handling OpdsPublication and OpdsFeed / related entities.\u000a\u000aPut writing/reading of OpdsFeed and Opds in transactions.\u000a\u000aEnsure app dependency injection provides validation helpers for http fetching of OpdsFeed and OpdsPublication (ensure that if-modified-since/if-none-match work as expected).\u000a",
        "date" : "2026-03-02 17:49:55 +0400",
        "id" : "cc9c881d4a49f8381dff27e539fad346bc728ea3",
        "msg" : "Improvements to handling OpdsPublication and OpdsFeed / related entities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/DummySchoolConfigSettingsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DateConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/AbstractCacheInterceptorTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt"
        ],
        "commitId" : "156d9f6ac9da94feab4f23b8e8df8935e2ec0faf",
        "timestamp" : 1772465112000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add 304 response support to UstadCacheImpl.\u000a\u000aWhen a request to the cache includes its own http validation info (if-not-modified since and/or if-none-match), and the response is the cache is fresh, then the cache itself can reply immediately with an empty 304 not modified response.\u000a",
        "date" : "2026-03-02 19:25:12 +0400",
        "id" : "156d9f6ac9da94feab4f23b8e8df8935e2ec0faf",
        "msg" : "Add 304 response support to UstadCacheImpl.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/AbstractCacheInterceptorTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt"
        ],
        "commitId" : "44088c6860ebc37e91ba9ddb6a351f22e89e4906",
        "timestamp" : 1772546186000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add unit test for UstadCache to verify 304 response is returned correctly when incoming request has validation info.\u000a",
        "date" : "2026-03-03 17:56:26 +0400",
        "id" : "44088c6860ebc37e91ba9ddb6a351f22e89e4906",
        "msg" : "Add unit test for UstadCache to verify 304 response is returned correctly when incoming request has validation info.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
        ],
        "commitId" : "c9f0db375ac4093fe9ea94c358e8764b3ee7aa0c",
        "timestamp" : 1772615703000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update UstadCacheInterceptor.kt to respond 304 directly if the underlying request has its own cache validation info and a stale response is validated over the network.\u000a",
        "date" : "2026-03-04 13:15:03 +0400",
        "id" : "c9f0db375ac4093fe9ea94c358e8764b3ee7aa0c",
        "msg" : "Update UstadCacheInterceptor.kt to respond 304 directly if the underlying request has its own cache validation info and a stale response is validated over the network.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
        ],
        "commitId" : "c5c0aff9649d7521dd609b3bf9505ff8281e7ea4",
        "timestamp" : 1772691673000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add test checking 304 not modified response received using interceptor if cache validation headers are used.\u000a",
        "date" : "2026-03-05 10:21:13 +0400",
        "id" : "c5c0aff9649d7521dd609b3bf9505ff8281e7ea4",
        "msg" : "Add test checking 304 not modified response received using interceptor if cache validation headers are used.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepositoryTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDataSourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/CompatibleAppsDataSourceLocal.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/CompatibleAppsDataSource.kt"
        ],
        "commitId" : "b8c5c1ff312bffec071b3a9635cc8b0cd29add33",
        "timestamp" : 1772704588000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove CompatibleApp Datasource (replaced by using OpdsPublication).\u000a",
        "date" : "2026-03-05 13:56:28 +0400",
        "id" : "b8c5c1ff312bffec071b3a9635cc8b0cd29add33",
        "msg" : "Remove CompatibleApp Datasource (replaced by using OpdsPublication).",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/CompatibleAppsDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepositoryTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/entities/CompatibleAppEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/entities/CompatibleAppAddJoin.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/4.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppAddJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
        ],
        "commitId" : "205b330f195ef8c38eabf8c6a40add9201ddccb1",
        "timestamp" : 1772708805000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove CompatibleAppEntity from database.\u000a",
        "date" : "2026-03-05 15:06:45 +0400",
        "id" : "205b330f195ef8c38eabf8c6a40add9201ddccb1",
        "msg" : "Remove CompatibleAppEntity from database.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/4.json"
          },
          {
            "editType" : "delete",
            "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/datalayer/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppAddJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/entities/CompatibleAppAddJoin.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-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
        ],
        "commitId" : "f3acd9c68e215c54cf4b734f3052c7560f5de7cb",
        "timestamp" : 1773210046000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Initial commit\u000a",
        "date" : "2026-03-11 11:50:46 +0530",
        "id" : "f3acd9c68e215c54cf4b734f3052c7560f5de7cb",
        "msg" : "Initial commit",
        "paths" : [
          {
            "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/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "1dab74ce9dc687cfb2f9f4a2f2557ddeb51157db",
        "timestamp" : 1773210126000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "added tab\u000a",
        "date" : "2026-03-11 11:52:06 +0530",
        "id" : "1dab74ce9dc687cfb2f9f4a2f2557ddeb51157db",
        "msg" : "added tab",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md",
          ".maestro/flows/scripts/school_init.js",
          "ci-run-maestro.sh"
        ],
        "commitId" : "f5e206f4779043c8758c0fe3406988aefab78bf9",
        "timestamp" : 1773222029000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update ci-run-maestro.sh and school_init.js with option to disable automatic school creation for end-to-end tests.\u000a\u000aThis option is required to run an end-to-end test of self-registration of a new school.\u000a",
        "date" : "2026-03-11 13:40:29 +0400",
        "id" : "f5e206f4779043c8758c0fe3406988aefab78bf9",
        "msg" : "Update ci-run-maestro.sh and school_init.js with option to disable automatic school creation for end-to-end tests.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/scripts/school_init.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_005_add_school_self_service.yaml",
          ".maestro/flows/subflows/school_admin_login_flow.yaml"
        ],
        "commitId" : "43a92543301b52137bd67e0e1f67fca27c7bae01",
        "timestamp" : 1773311290000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "added test for school-self-registration\u000a",
        "date" : "2026-03-12 14:28:10 +0400",
        "id" : "43a92543301b52137bd67e0e1f67fca27c7bae01",
        "msg" : "added test for school-self-registration",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_005_add_school_self_service.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/school_admin_login_flow.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_005_add_school_self_service.yaml"
        ],
        "commitId" : "869fbfad19a693521ea7789d1ec9700fa9d4d0c9",
        "timestamp" : 1773313951000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test\u000a",
        "date" : "2026-03-12 15:12:31 +0400",
        "id" : "869fbfad19a693521ea7789d1ec9700fa9d4d0c9",
        "msg" : "updated test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_005_add_school_self_service.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_005_add_school_self_service.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "40a8c27e750ce3f0f22d2d8b1803ceaad14f328d",
        "timestamp" : 1773316182000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test 001_002\u000a",
        "date" : "2026-03-12 15:49:42 +0400",
        "id" : "40a8c27e750ce3f0f22d2d8b1803ceaad14f328d",
        "msg" : "updated test 001_002",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_005_add_school_self_service.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "674efff8c00e64926e44f45d073d2ed003a9ff30",
        "timestamp" : 1773318844000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test- added id for the Host URL\u000a",
        "date" : "2026-03-12 16:34:04 +0400",
        "id" : "674efff8c00e64926e44f45d073d2ed003a9ff30",
        "msg" : "updated test- added id for the Host URL",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "0d0152620aab4cb1ce28bfbc3c9968096bb1b8ca",
        "timestamp" : 1773390524000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fixes for AppLauncher screen.\u000a",
        "date" : "2026-03-13 12:28:44 +0400",
        "id" : "0d0152620aab4cb1ce28bfbc3c9968096bb1b8ca",
        "msg" : "Fixes for AppLauncher screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolValidationRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/util/SchoolUrlVerificationManager.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/schooldirectory/list/SchoolDirectoryListScreen.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCaseAndroid.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/verify/VerifySchoolUrlPointsToThisServerUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCase.kt"
        ],
        "commitId" : "3cf6aa6d01d29a88a6d944d3bd2bec317cb7d9d9",
        "timestamp" : 1773402867000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "initial commit for add school self service bug fix\u000a",
        "date" : "2026-03-13 17:24:27 +0530",
        "id" : "3cf6aa6d01d29a88a6d944d3bd2bec317cb7d9d9",
        "msg" : "initial commit for add school self service bug fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/SchoolUrlVerificationManager.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolValidationRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/schooldirectory/list/SchoolDirectoryListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/verify/VerifySchoolUrlPointsToThisServerUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DateConstants.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/ReadiumSubjectEntityAdapters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFacetAdapter.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedMetadataEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsPublicationEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsGroupEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsPublicationDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsPublicationEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumLinkEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/PersonPasskeyEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsGroupEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/ReadiumLinkEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsGroupAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumSubjectEntity.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/school/opds/adapters/OpdsGroupAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsGroupEntity.kt",
          "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/daos/PersonPasskeyEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFacetEntity.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedMetadataEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsGroupEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedMetadataEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsParentType.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolPrimaryKeyGenerator.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsPublicationDataSourceDb.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/school/opds/adapters/ReadiumSubjectEntityAdapters.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/LangMapEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumLinkEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/ReadiumSubjectEntity.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsParentType.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedMetadataEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFacetEntity.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"
        ],
        "commitId" : "2ab55511cea2ebbab668c3062ca606310e1163e3",
        "timestamp" : 1773422179000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update opds packages in datasource-db and datasource-http to use school.opds package.\u000a",
        "date" : "2026-03-13 21:16:19 +0400",
        "id" : "2ab55511cea2ebbab668c3062ca606310e1163e3",
        "msg" : "Update opds packages in datasource-db and datasource-http to use school.opds package.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsGroupEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DateConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsParentType.kt"
          },
          {
            "editType" : "delete",
            "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/school/opds/entities/OpdsGroupEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "delete",
            "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/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFacetAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsGroupAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsPublicationDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsParentType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsGroupEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumSubjectEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsGroupEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/ReadiumSubjectEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/PersonPasskeyEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "edit",
            "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/datalayer/db/opds/adapters/OpdsFacetAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolPrimaryKeyGenerator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFacetEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsPublicationDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/PersonPasskeyEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsFeedDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "edit",
            "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/datalayer/db/opds/adapters/OpdsGroupAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
        ],
        "commitId" : "03416dd533b01463d4cc6a4c72aff304fa6eb088",
        "timestamp" : 1773422596000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update database migration files.\u000a",
        "date" : "2026-03-13 21:23:16 +0400",
        "id" : "03416dd533b01463d4cc6a4c72aff304fa6eb088",
        "msg" : "Update database migration files.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.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/domain/navigation/onaccountcreated/NavigateOnAccountCreatedUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onappstart/NavigateOnAppStartUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
        ],
        "commitId" : "ece17bbf38864ba3f36d012e19f0c4fb29dc3d01",
        "timestamp" : 1773657905000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial home tabs design.\u000a",
        "date" : "2026-03-16 14:45:05 +0400",
        "id" : "ece17bbf38864ba3f36d012e19f0c4fb29dc3d01",
        "msg" : "Initial home tabs design.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.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/domain/navigation/onappstart/NavigateOnAppStartUseCase.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/scanqrcode/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onaccountcreated/NavigateOnAccountCreatedUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "9468f51446f73039c0fffa764fa23f3a883853ad",
        "timestamp" : 1773663252000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated maestro.sh\u000a",
        "date" : "2026-03-16 16:14:12 +0400",
        "id" : "9468f51446f73039c0fffa764fa23f3a883853ad",
        "msg" : "updated maestro.sh",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_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/curriculum/mapping/list/CurriculumMappingListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSection.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/CurriculumMappingAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/list/CurriculumMappingListScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSectionLink.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMapping.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
        ],
        "commitId" : "875314a97fbe0f5dbcbc5243a903186066b6da0d",
        "timestamp" : 1773720518000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "playlist screen added\u000a",
        "date" : "2026-03-17 09:38:38 +0530",
        "id" : "875314a97fbe0f5dbcbc5243a903186066b6da0d",
        "msg" : "playlist screen added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/CurriculumMappingAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/list/CurriculumMappingListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSection.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSectionLink.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMapping.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/list/CurriculumMappingListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
        ],
        "commitId" : "40d75ac779568c00e4d723c0ea483207a9f89146",
        "timestamp" : 1773720541000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "playlist screen added\u000a",
        "date" : "2026-03-17 09:39:01 +0530",
        "id" : "40d75ac779568c00e4d723c0ea483207a9f89146",
        "msg" : "playlist screen added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "57f8bdc13c2f97dda0ea87446f811a7245903dc4",
        "timestamp" : 1773727685000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "- Update `ci-run-maestro.sh` to remove a commented-out line and refine `TESTCONTROLLER_URL` parsing.\u000a- Increase the timeout for the \"Register New School\" screen in `001_002_add_user_direct_test.yaml`.\u000a",
        "date" : "2026-03-17 10:08:05 +0400",
        "id" : "57f8bdc13c2f97dda0ea87446f811a7245903dc4",
        "msg" : "- Update `ci-run-maestro.sh` to remove a commented-out line and refine `TESTCONTROLLER_URL` parsing.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
        ],
        "commitId" : "580608493b9da19f08d4b63e14d3fe0134800c39",
        "timestamp" : 1773728227000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix the myplaylist\u000a",
        "date" : "2026-03-17 11:47:07 +0530",
        "id" : "580608493b9da19f08d4b63e14d3fe0134800c39",
        "msg" : "fix the myplaylist",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/TestFolder/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/TestFolder/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/TestFolder/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/TestFolder/002_browse_lessons_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "9304a39c0f87d04578267ed2cce637376e8aaeaf",
        "timestamp" : 1773731511000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Move Maestro test flows for inviting users, login, assignments, and browsing lessons into a new `TestFolder` directory.\u000a",
        "date" : "2026-03-17 11:11:51 +0400",
        "id" : "9304a39c0f87d04578267ed2cce637376e8aaeaf",
        "msg" : "Move Maestro test flows for inviting users, login, assignments, and browsing lessons into a new `TestFolder` directory.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/TestFolder/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/TestFolder/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/TestFolder/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/TestFolder/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
        ],
        "commitId" : "08f9a39cfa88b59be7df95e6e7e5ed0b86a2c6be",
        "timestamp" : 1773732037000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add logs for testing\u000a",
        "date" : "2026-03-17 12:50:37 +0530",
        "id" : "08f9a39cfa88b59be7df95e6e7e5ed0b86a2c6be",
        "msg" : "add logs for testing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
        ],
        "commitId" : "44d10859fccfdcb0f87872443c4e87db32f206c3",
        "timestamp" : 1773732108000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add logs for testing\u000a",
        "date" : "2026-03-17 12:51:48 +0530",
        "id" : "44d10859fccfdcb0f87872443c4e87db32f206c3",
        "msg" : "add logs for testing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
        ],
        "commitId" : "a43f0ae29ae759b5e0bf78ec4405026dd5986b90",
        "timestamp" : 1773734547000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add logs for testing\u000a",
        "date" : "2026-03-17 13:32:27 +0530",
        "id" : "a43f0ae29ae759b5e0bf78ec4405026dd5986b90",
        "msg" : "add logs for testing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
        ],
        "commitId" : "afa5eeaa2e6198eefc188d013abc0632d34dfee6",
        "timestamp" : 1773736017000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add logs for testing\u000a",
        "date" : "2026-03-17 13:56:57 +0530",
        "id" : "afa5eeaa2e6198eefc188d013abc0632d34dfee6",
        "msg" : "add logs for testing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/AndroidManifest.xml"
        ],
        "commitId" : "4bcef5df1ecdde901f03c64d81f67ea078737516",
        "timestamp" : 1773737018000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add logs for testing\u000a",
        "date" : "2026-03-17 14:13:38 +0530",
        "id" : "4bcef5df1ecdde901f03c64d81f67ea078737516",
        "msg" : "add logs for testing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
        ],
        "commitId" : "7a1247db6933c037420887c980c5e53b3fc1a03b",
        "timestamp" : 1773737416000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add logs for testing\u000a",
        "date" : "2026-03-17 14:20:16 +0530",
        "id" : "7a1247db6933c037420887c980c5e53b3fc1a03b",
        "msg" : "add logs for testing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/chrome-first-run-check.yaml",
          ".maestro/flows/subflows/chrome-first-run-tap-notification-no-thanks.yaml",
          ".maestro/flows/subflows/chrome-first-run-accept-and-continue.yaml",
          ".maestro/flows/subflows/chrome-first-run-tap-accept-or-use-without-account.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/subflows/chrome-first-run-without-account.yaml",
          ".maestro/flows/subflows/chrome-first-run-accept-ad-privacy.yaml"
        ],
        "commitId" : "003751b6e519036a8a2809c50769deffc8c8477e",
        "timestamp" : 1773743455000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add Maestro subflows to handle Chrome's first-run experience screens and integrate them into the `001_002_add_user_direct_test` flow.\u000a",
        "date" : "2026-03-17 14:30:55 +0400",
        "id" : "003751b6e519036a8a2809c50769deffc8c8477e",
        "msg" : "Add Maestro subflows to handle Chrome's first-run experience screens and integrate them into the `001_002_add_user_direct_test` flow.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/chrome-first-run-tap-notification-no-thanks.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/chrome-first-run-accept-ad-privacy.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/chrome-first-run-accept-and-continue.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/chrome-first-run-tap-accept-or-use-without-account.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/chrome-first-run-check.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/chrome-first-run-without-account.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "2d2518260544cda227cd53bf4ce3e0f606e39a49",
        "timestamp" : 1773747128000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flow to tap on school URL using text instead of ID.\u000a",
        "date" : "2026-03-17 15:32:08 +0400",
        "id" : "2d2518260544cda227cd53bf4ce3e0f606e39a49",
        "msg" : "Update Maestro flow to tap on school URL using text instead of ID.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
        ],
        "commitId" : "af53905f34abbde626882ddd93a27ae8fad5e8ec",
        "timestamp" : 1773811226000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add logs for testing\u000a",
        "date" : "2026-03-18 10:50:26 +0530",
        "id" : "af53905f34abbde626882ddd93a27ae8fad5e8ec",
        "msg" : "add logs for testing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
        ],
        "commitId" : "b177ea2ef0b0c903e739cc1a0a8265b30a2e11f8",
        "timestamp" : 1773811741000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add logs for testing\u000a",
        "date" : "2026-03-18 10:59:01 +0530",
        "id" : "b177ea2ef0b0c903e739cc1a0a8265b30a2e11f8",
        "msg" : "add logs for testing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
        ],
        "commitId" : "f802eda5ed1da209f9d005b2e2dccaa3f3c787e4",
        "timestamp" : 1773822572000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "update url with school-directory\u000a",
        "date" : "2026-03-18 13:59:32 +0530",
        "id" : "f802eda5ed1da209f9d005b2e2dccaa3f3c787e4",
        "msg" : "update url with school-directory",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/TestFolder/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/TestFolder/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/TestFolder/002_browse_lessons_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/TestFolder/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "4411ab5ee1f44172055aca857588efc861319ece",
        "timestamp" : 1773823875000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Move Maestro flows from `TestFolder` to the root `.maestro/flows/` directory.\u000a",
        "date" : "2026-03-18 12:51:15 +0400",
        "id" : "4411ab5ee1f44172055aca857588efc861319ece",
        "msg" : "Move Maestro flows from `TestFolder` to the root `.maestro/flows/` directory.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/TestFolder/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/TestFolder/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/TestFolder/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/TestFolder/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
        ],
        "commitId" : "20619eeee7197cdc4a8d62efae4da7c3d4e73064",
        "timestamp" : 1773824593000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "remove  logs\u000a",
        "date" : "2026-03-18 14:33:13 +0530",
        "id" : "20619eeee7197cdc4a8d62efae4da7c3d4e73064",
        "msg" : "remove  logs",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/subflows/admin_add_app.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/video.mp4",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/lesson002.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/cover.png",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/lesson002.json",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/admin_add_app_and_teacher.yaml",
          ".maestro/flows/subflows/school_admin_login_flow.yaml"
        ],
        "commitId" : "2f6f43e7182d8b30964a2e99eef1dec9abfaddd6",
        "timestamp" : 1773826009000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "test: Update UI labels in Maestro flows and add Playlist browse test\u000a",
        "date" : "2026-03-18 13:26:49 +0400",
        "id" : "2f6f43e7182d8b30964a2e99eef1dec9abfaddd6",
        "msg" : "test: Update UI labels in Maestro flows and add Playlist browse test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/cover.png"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app.yaml"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/lesson002.html"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/lesson002.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/video.mp4"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/school_admin_login_flow.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json"
        ],
        "commitId" : "b8e87d5a025c6113d599d1f4c55b0dc997b3bb58",
        "timestamp" : 1773826041000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add Lesson 002 to grade1.json\u000a",
        "date" : "2026-03-18 13:27:21 +0400",
        "id" : "b8e87d5a025c6113d599d1f4c55b0dc997b3bb58",
        "msg" : "Add Lesson 002 to grade1.json",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json"
        ],
        "commitId" : "0dddce7f3937a7a79477feeb87aac00f8c45c57f",
        "timestamp" : 1773827167000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add Lesson 002 to grade1.json\u000a",
        "date" : "2026-03-18 13:46:07 +0400",
        "id" : "0dddce7f3937a7a79477feeb87aac00f8c45c57f",
        "msg" : "Add Lesson 002 to grade1.json",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/README.md",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".gitignore",
          ".maestro/flows/001_005_add_school_self_registration_test.yaml",
          "respect-test-end-to-end/test-description/001_005_add_school_self_registration_test_description.md"
        ],
        "commitId" : "b4f6e14937cbbaff43a82679c62ead4684d68f26",
        "timestamp" : 1773830574000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add Maestro end-to-end test and documentation for school self-registration.\u000a",
        "date" : "2026-03-18 14:42:54 +0400",
        "id" : "b4f6e14937cbbaff43a82679c62ead4684d68f26",
        "msg" : "Add Maestro end-to-end test and documentation for school self-registration.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/README.md"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-test-end-to-end/test-description/001_005_add_school_self_registration_test_description.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".gitignore"
        ],
        "commitId" : "40fb80666ed8c07f0b0009fb2e82c8fb7c0a05e1",
        "timestamp" : 1773830611000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add Maestro end-to-end test and documentation for school self-registration.\u000a",
        "date" : "2026-03-18 14:43:31 +0400",
        "id" : "40fb80666ed8c07f0b0009fb2e82c8fb7c0a05e1",
        "msg" : "Add Maestro end-to-end test and documentation for school self-registration.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".gitignore"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "50f2f895dbbede131b9a11c0dbdd85aae44efc0b",
        "timestamp" : 1773830921000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update the file path for the `get_started_select_school_by_name.yaml` subflow in the Maestro test configuration.\u000a",
        "date" : "2026-03-18 14:48:41 +0400",
        "id" : "50f2f895dbbede131b9a11c0dbdd85aae44efc0b",
        "msg" : "Update the file path for the `get_started_select_school_by_name.yaml` subflow in the Maestro test configuration.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "59e6db352497dc97de25a719bee2cc18a646f62e",
        "timestamp" : 1773831793000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro test flow to use school name variable instead of skipping school creation.\u000a",
        "date" : "2026-03-18 15:03:13 +0400",
        "id" : "59e6db352497dc97de25a719bee2cc18a646f62e",
        "msg" : "Update Maestro test flow to use school name variable instead of skipping school creation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README.md"
        ],
        "commitId" : "2ddc9dcad374af02f8837d5482bba9050898d85d",
        "timestamp" : 1773832955000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update Slack Space link in README\u000a",
        "date" : "2026-03-18 15:22:35 +0400",
        "id" : "2ddc9dcad374af02f8837d5482bba9050898d85d",
        "msg" : "Update Slack Space link in README",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "7228fdf9ee643ce0e84084d239ac640c5766ec1c",
        "timestamp" : 1773837406000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "test - updated maestro flows\u000a",
        "date" : "2026-03-18 16:36:46 +0400",
        "id" : "7228fdf9ee643ce0e84084d239ac640c5766ec1c",
        "msg" : "test - updated maestro flows",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
        ],
        "commitId" : "64a2d4db16d5854606753bd322cff9120556c606",
        "timestamp" : 1773841435000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix the homescreen\u000a",
        "date" : "2026-03-18 19:13:55 +0530",
        "id" : "64a2d4db16d5854606753bd322cff9120556c606",
        "msg" : "fix the homescreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
        ],
        "commitId" : "e179ba50e37b82ba30c8334eb41a1744535ad533",
        "timestamp" : 1773917633000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Minor school self registration tidyup.\u000a",
        "date" : "2026-03-19 14:53:53 +0400",
        "id" : "e179ba50e37b82ba30c8334eb41a1744535ad533",
        "msg" : "Minor school self registration tidyup.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
        ],
        "commitId" : "9aea8b7539b16f850a64faaf135807f59fb3d7ac",
        "timestamp" : 1773919220000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor RegisterSchoolUseCase : Create common interface that can be used to keep parameter names, request/response objects, etc.\u000a",
        "date" : "2026-03-19 15:20:20 +0400",
        "id" : "9aea8b7539b16f850a64faaf135807f59fb3d7ac",
        "msg" : "Refactor RegisterSchoolUseCase : Create common interface that can be used to keep parameter names, request/response objects, etc.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
        ],
        "commitId" : "c930eea4dc30645d6c87c6d79d58f3b12197f122",
        "timestamp" : 1773931137000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix the homescreen\u000a",
        "date" : "2026-03-19 20:08:57 +0530",
        "id" : "c930eea4dc30645d6c87c6d79d58f3b12197f122",
        "msg" : "fix the homescreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "85425a966905dabe7c0d7778848cfe7d31ca9dc2",
        "timestamp" : 1773974447000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "added the edit screen\u000a",
        "date" : "2026-03-20 08:10:47 +0530",
        "id" : "85425a966905dabe7c0d7778848cfe7d31ca9dc2",
        "msg" : "added the edit screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/application.conf",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/school/add/RegisterSchoolUseCaseTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/SchoolConfig.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
        ],
        "commitId" : "140bc7b90e0bad91f2949ec0cc57c16a98ba2140",
        "timestamp" : 1774004016000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove validation logic that was either unnecessary or did not belong in the SchoolRegistrationRoute.\u000a",
        "date" : "2026-03-20 14:53:36 +0400",
        "id" : "140bc7b90e0bad91f2949ec0cc57c16a98ba2140",
        "msg" : "Remove validation logic that was either unnecessary or did not belong in the SchoolRegistrationRoute.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/application.conf"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/SchoolConfig.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/school/add/RegisterSchoolUseCaseTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt",
          "respect-server/src/main/resources/application.conf",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/school/add/RegisterSchoolUseCaseTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/SchoolConfig.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
        ],
        "commitId" : "80416b37c205bbd659cc341ad2a74374fbc8cbad",
        "timestamp" : 1774009741000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fixes for subdomain based school self-registration.\u000a",
        "date" : "2026-03-20 16:29:01 +0400",
        "id" : "80416b37c205bbd659cc341ad2a74374fbc8cbad",
        "msg" : "Fixes for subdomain based school self-registration.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/application.conf"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/SchoolConfig.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/school/add/RegisterSchoolUseCaseTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "46aa8fc3e9336ac3220bbd9f09518426f4abfcde",
        "timestamp" : 1774015511000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix handling of icon image on AppLauncherscreen\u000a",
        "date" : "2026-03-20 18:05:11 +0400",
        "id" : "46aa8fc3e9336ac3220bbd9f09518426f4abfcde",
        "msg" : "Fix handling of icon image on AppLauncherscreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
        ],
        "commitId" : "eadd675d3a602c3f0dc1c0f43199ec080db0e4cc",
        "timestamp" : 1774016365000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove white space changes from main.\u000a",
        "date" : "2026-03-20 18:19:25 +0400",
        "id" : "eadd675d3a602c3f0dc1c0f43199ec080db0e4cc",
        "msg" : "Remove white space changes from main.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "e1948045f432f4c117218b2a2783dd0e231a8a7e",
        "timestamp" : 1774019009000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version.\u000a",
        "date" : "2026-03-20 19:03:29 +0400",
        "id" : "e1948045f432f4c117218b2a2783dd0e231a8a7e",
        "msg" : "Bump version.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiException.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionType.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt",
          "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActor.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/Attachment.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/State.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
        ],
        "commitId" : "d39b8f304885673e1173981a3ccc907265f84725",
        "timestamp" : 1774102711000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial Xapi Statement serialization model and test.\u000a",
        "date" : "2026-03-21 18:18:31 +0400",
        "id" : "d39b8f304885673e1173981a3ccc907265f84725",
        "msg" : "Initial Xapi Statement serialization model and test.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/Attachment.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/State.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/DurationAsISO8601Serializer.kt"
        ],
        "commitId" : "06c8e1c5b1b28c3d76e5d4a0b44e8319ba1352f5",
        "timestamp" : 1774167264000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update XapiStatement property types to use Instant and Duration where appr\u000a",
        "date" : "2026-03-22 12:14:24 +0400",
        "id" : "06c8e1c5b1b28c3d76e5d4a0b44e8319ba1352f5",
        "msg" : "Update XapiStatement property types to use Instant and Duration where appr",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/DurationAsISO8601Serializer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiEntityObjectTypeFlags.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiSessionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/XapiSessionEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/UuidExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateDeleteCommand.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndRelated.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityJson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/GroupMemberActorJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiSessionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbDao.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/ListExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntityJson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiEntityObjectTypeFlags.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/VerbEntityAndName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementContextActivityJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementAndActivity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateDeleteCommand.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
        ],
        "commitId" : "49578779969312d3e8855c1be1fe32548c3dd428",
        "timestamp" : 1774186955000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of converting Xapi models into local db entities.\u000a",
        "date" : "2026-03-22 17:42:35 +0400",
        "id" : "49578779969312d3e8855c1be1fe32548c3dd428",
        "msg" : "Initial implementation of converting Xapi models into local db entities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementAndActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiSessionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiSessionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateDeleteCommand.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbLangMapEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityJson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/VerbEntityAndName.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActorEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/ListExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityExtensionDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateDeleteCommandDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/UuidExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityInteractionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityExtensionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActorDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiEntityObjectTypeFlags.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/GroupMemberActorJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntityJson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiEntityObjectTypeFlags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndRelated.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateDeleteCommand.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt"
        ],
        "commitId" : "5b204dec35a1229d6a11b97b643523c240e001ed",
        "timestamp" : 1774187609000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Minor tidyup of typing.\u000a",
        "date" : "2026-03-22 17:53:29 +0400",
        "id" : "5b204dec35a1229d6a11b97b643523c240e001ed",
        "msg" : "Minor tidyup of typing.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/XapiSessionEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt",
          "respect-datalayer-db/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/Attachment.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAttachment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityInteractionDao.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiState.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/State.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDaoCommon.kt"
        ],
        "commitId" : "fa05f5c19f73b0ed9302033a4598116e73a8edb8",
        "timestamp" : 1774246056000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add StoreActivitiesUseCase and requirements.\u000a",
        "date" : "2026-03-23 10:07:36 +0400",
        "id" : "fa05f5c19f73b0ed9302033a4598116e73a8edb8",
        "msg" : "Add StoreActivitiesUseCase and requirements.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityExtensionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateDeleteCommandDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/Attachment.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAttachment.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementDaoCommon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDaoCommon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityInteractionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActorDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/State.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateDeleteCommandDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDaoCommon.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/share/PlaylistShareScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "263821cc27ab97df3024c5318d2f31052bf746a1",
        "timestamp" : 1774246743000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "add share screen\u000a",
        "date" : "2026-03-23 11:49:03 +0530",
        "id" : "263821cc27ab97df3024c5318d2f31052bf746a1",
        "msg" : "add share screen",
        "paths" : [
          {
            "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/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/share/PlaylistShareScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/ActorUidEtagAndLastMod.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorDaoExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
        ],
        "commitId" : "e94a382e15395946fb9160fabf4c370577df44b5",
        "timestamp" : 1774262386000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial commit of a version of XapiStatementDataSourceDb.kt that compiles.\u000a",
        "date" : "2026-03-23 14:39:46 +0400",
        "id" : "e94a382e15395946fb9160fabf4c370577df44b5",
        "msg" : "Initial commit of a version of XapiStatementDataSourceDb.kt that compiles.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorDaoExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/ActorUidEtagAndLastMod.kt"
          }
        ]
      },
      {
        "_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",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/CreatePlaylistShareLinkUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "cc00308dfdfbd09db9f346bf4d8ea49ec508de67",
        "timestamp" : 1774323572000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix Playlist share screen\u000a",
        "date" : "2026-03-24 09:09:32 +0530",
        "id" : "cc00308dfdfbd09db9f346bf4d8ea49ec508de67",
        "msg" : "fix Playlist share screen",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/CreatePlaylistShareLinkUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/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-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
        ],
        "commitId" : "2037bc479fede5e569ed0a3b2131f466aff9609e",
        "timestamp" : 1774327037000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "added the releation link\u000a",
        "date" : "2026-03-24 10:07:17 +0530",
        "id" : "2037bc479fede5e569ed0a3b2131f466aff9609e",
        "msg" : "added the releation link",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.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/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
        ],
        "commitId" : "e1b0c5da2beb1eae41bbb076c9efc5c458898d0e",
        "timestamp" : 1774331388000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix the build error\u000a",
        "date" : "2026-03-24 11:19:48 +0530",
        "id" : "e1b0c5da2beb1eae41bbb076c9efc5c458898d0e",
        "msg" : "fix the build error",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README.md"
        ],
        "commitId" : "635519e5577887607af9cfccecfda0c4e8f42850",
        "timestamp" : 1774358734000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update README.md\u000a",
        "date" : "2026-03-24 17:25:34 +0400",
        "id" : "635519e5577887607af9cfccecfda0c4e8f42850",
        "msg" : "Update README.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CONTRIBUTING.md"
        ],
        "commitId" : "bfa39b2a3c882f4d1a6bd38434113917aa9fd04f",
        "timestamp" : 1774359709000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Create CONTRIBUTING.md\u000a",
        "date" : "2026-03-24 17:41:49 +0400",
        "id" : "bfa39b2a3c882f4d1a6bd38434113917aa9fd04f",
        "msg" : "Create CONTRIBUTING.md",
        "paths" : [
          {
            "editType" : "add",
            "file" : "CONTRIBUTING.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CONTRIBUTING.md"
        ],
        "commitId" : "4d2d577c074261d46b7da9fd78869c41335c815b",
        "timestamp" : 1774359812000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update CONTRIBUTING.md to clarify contribution types\u000a\u000aExpanded contribution guidelines to include non-coding contributions.\u000a",
        "date" : "2026-03-24 17:43:32 +0400",
        "id" : "4d2d577c074261d46b7da9fd78869c41335c815b",
        "msg" : "Update CONTRIBUTING.md to clarify contribution types",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CONTRIBUTING.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CODE_OF_CONDUCT.md"
        ],
        "commitId" : "dbddedba8d033a04df559f19350ae22a6a3e5fe2",
        "timestamp" : 1774372715000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Add Contributor Covenant Code of Conduct\u000a\u000aAdded Contributor Covenant Code of Conduct to outline community standards and enforcement guidelines.\u000a",
        "date" : "2026-03-24 21:18:35 +0400",
        "id" : "dbddedba8d033a04df559f19350ae22a6a3e5fe2",
        "msg" : "Add Contributor Covenant Code of Conduct",
        "paths" : [
          {
            "editType" : "add",
            "file" : "CODE_OF_CONDUCT.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CONTRIBUTING.md"
        ],
        "commitId" : "255c9ea9b8c73cd3984a3a39fa98bfd76a5f0be3",
        "timestamp" : 1774373152000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Revise CONTRIBUTING.md\u000a",
        "date" : "2026-03-24 21:25:52 +0400",
        "id" : "255c9ea9b8c73cd3984a3a39fa98bfd76a5f0be3",
        "msg" : "Revise CONTRIBUTING.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CONTRIBUTING.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CONTRIBUTING.md"
        ],
        "commitId" : "66d6c3acce0f2f9e6d67ee69a50ed0052135ea6b",
        "timestamp" : 1774374472000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Revise CONTRIBUTING.md\u000a",
        "date" : "2026-03-24 21:47:52 +0400",
        "id" : "66d6c3acce0f2f9e6d67ee69a50ed0052135ea6b",
        "msg" : "Revise CONTRIBUTING.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CONTRIBUTING.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".github/ISSUE_TEMPLATE/add_app_to_default_catalog.MD"
        ],
        "commitId" : "3adb525ecee9881eeecb0701badac5cb1dfa4fb8",
        "timestamp" : 1774378557000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Add issue template for app catalog requests\u000a",
        "date" : "2026-03-24 22:55:57 +0400",
        "id" : "3adb525ecee9881eeecb0701badac5cb1dfa4fb8",
        "msg" : "Add issue template for app catalog requests",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".github/ISSUE_TEMPLATE/add_app_to_default_catalog.MD"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CONTRIBUTING.md"
        ],
        "commitId" : "d41eee02111a434cd28e8aaf46ec80aca4d17252",
        "timestamp" : 1774378654000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update CONTRIBUTING.md\u000a",
        "date" : "2026-03-24 22:57:34 +0400",
        "id" : "d41eee02111a434cd28e8aaf46ec80aca4d17252",
        "msg" : "Update CONTRIBUTING.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CONTRIBUTING.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".github/ISSUE_TEMPLATE/localization.MD"
        ],
        "commitId" : "1436b71a08c919402daf54676335d6f762ceeaf2",
        "timestamp" : 1774381716000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Create localization.MD\u000a",
        "date" : "2026-03-24 23:48:36 +0400",
        "id" : "1436b71a08c919402daf54676335d6f762ceeaf2",
        "msg" : "Create localization.MD",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".github/ISSUE_TEMPLATE/localization.MD"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CONTRIBUTING.md"
        ],
        "commitId" : "bef105b18bfdc9b0a6f50b71a583e255dcd24b32",
        "timestamp" : 1774381915000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update CONTRIBUTING.md\u000a",
        "date" : "2026-03-24 23:51:55 +0400",
        "id" : "bef105b18bfdc9b0a6f50b71a583e255dcd24b32",
        "msg" : "Update CONTRIBUTING.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CONTRIBUTING.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CONTRIBUTING.md"
        ],
        "commitId" : "508d677cb32637726a803e6a92bae4ad3b3fac34",
        "timestamp" : 1774382049000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update CONTRIBUTING.md\u000a",
        "date" : "2026-03-24 23:54:09 +0400",
        "id" : "508d677cb32637726a803e6a92bae4ad3b3fac34",
        "msg" : "Update CONTRIBUTING.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CONTRIBUTING.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CONTRIBUTING.md"
        ],
        "commitId" : "1abbff4ce9a48a56e39ac1aaaceabede35dc9ea2",
        "timestamp" : 1774382305000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update contributing.md\u000a",
        "date" : "2026-03-24 23:58:25 +0400",
        "id" : "1abbff4ce9a48a56e39ac1aaaceabede35dc9ea2",
        "msg" : "Update contributing.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CONTRIBUTING.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README.md"
        ],
        "commitId" : "1c61153609b7b0f4f77fd75a7385ac22fe62fc2c",
        "timestamp" : 1774382402000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Add contributing guidelines to README\u000a\u000aAdded a contributing section to the README to encourage community involvement.\u000a",
        "date" : "2026-03-25 00:00:02 +0400",
        "id" : "1c61153609b7b0f4f77fd75a7385ac22fe62fc2c",
        "msg" : "Add contributing guidelines to README",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README.md"
        ],
        "commitId" : "d0828308512c5fe7bc10a3e0fe7180c0e71dfb37",
        "timestamp" : 1774382441000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Fix link formatting in README.md\u000a",
        "date" : "2026-03-25 00:00:41 +0400",
        "id" : "d0828308512c5fe7bc10a3e0fe7180c0e71dfb37",
        "msg" : "Fix link formatting in README.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "8ec867d48c5d044950ba57ca8d95635abcd5eab7",
        "timestamp" : 1774407164000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "update `002_user_add_apps_playlists_bookmarks_test.yaml` Maestro flow to include Home navigation and verify Playlists visibility\u000a",
        "date" : "2026-03-25 06:52:44 +0400",
        "id" : "8ec867d48c5d044950ba57ca8d95635abcd5eab7",
        "msg" : "update `002_user_add_apps_playlists_bookmarks_test.yaml` Maestro flow to include Home navigation and verify Playlists visibility",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "88e4dba3f10f19b75c688850e23ccec2bfe3da3f",
        "timestamp" : 1774425574000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "update `002_user_add_apps_playlists_bookmarks_test.yaml` Maestro flow to include Home navigation and verify Playlists visibility\u000a",
        "date" : "2026-03-25 11:59:34 +0400",
        "id" : "88e4dba3f10f19b75c688850e23ccec2bfe3da3f",
        "msg" : "update `002_user_add_apps_playlists_bookmarks_test.yaml` Maestro flow to include Home navigation and verify Playlists visibility",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "ec5adb2e9cf84c581896e392bca250f73bdaa32c",
        "timestamp" : 1774436063000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro test flows for user and app management\u000a",
        "date" : "2026-03-25 14:54:23 +0400",
        "id" : "ec5adb2e9cf84c581896e392bca250f73bdaa32c",
        "msg" : "Update Maestro test flows for user and app management",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "d856a57d1a0cbac59cc379b891aa89043a690235",
        "timestamp" : 1774438771000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro test flows to reflect UI change from \"Apps\" to \"Home\" title text\u000a",
        "date" : "2026-03-25 15:39:31 +0400",
        "id" : "d856a57d1a0cbac59cc379b891aa89043a690235",
        "msg" : "Update Maestro test flows to reflect UI change from \"Apps\" to \"Home\" title text",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "7bb4dd1529b6c4c34438035e21aeb1989de5e1e6",
        "timestamp" : 1774438933000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Updated `002_user_add_apps_playlists_bookmarks_test.yaml` Maestro flow to match UI text change for playlist creation.\u000a",
        "date" : "2026-03-25 15:42:13 +0400",
        "id" : "7bb4dd1529b6c4c34438035e21aeb1989de5e1e6",
        "msg" : "Updated `002_user_add_apps_playlists_bookmarks_test.yaml` Maestro flow to match UI text change for playlist creation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
        ],
        "commitId" : "d29cb262b304057688bda325188896e9f1572ad0",
        "timestamp" : 1774444646000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix test for \"home\" and added the id\u000a",
        "date" : "2026-03-25 18:47:26 +0530",
        "id" : "d29cb262b304057688bda325188896e9f1572ad0",
        "msg" : "fix test for \"home\" and added the id",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "fa64b7437e81aede55693575dd2b6b8a00a7f195",
        "timestamp" : 1774448363000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update and refine Maestro end-to-end test flows for user assignments and playlists\u000a",
        "date" : "2026-03-25 18:19:23 +0400",
        "id" : "fa64b7437e81aede55693575dd2b6b8a00a7f195",
        "msg" : "Update and refine Maestro end-to-end test flows for user assignments and playlists",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.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" : "b5f453d555913a41674a72dc9db4c5202c126dcc",
        "timestamp" : 1774520442000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix the code\u000a",
        "date" : "2026-03-26 15:50:42 +0530",
        "id" : "b5f453d555913a41674a72dc9db4c5202c126dcc",
        "msg" : "fix the code",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.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/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          },
          {
            "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/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_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/learningunit/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "dfbb11fe8266866c03db6bd38615617fcaf00c48",
        "timestamp" : 1774530971000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "implement playlist selection logic and improve validation in PlaylistEdit\u000a\u000a- Implement selection logic in `LearningUnitListViewModel` to allow picking specific navigation items (e.g., Grades) for playlists.\u000a- Update `LearningUnitListScreen` to highlight selected navigation items and disable the \"Select Playlist\" button until a selection is made.\u000a- Refactor `PlaylistEditViewModel` to use `UiText` for title validation errors and display a \"required field\" message.\u000a- Update UI labels and strings, changing \"Lesson/assessment\" to \"Task\" and adding required field indicators.\u000a- Adjust Maestro test flow to reflect updated navigation and UI labels.\u000a",
        "date" : "2026-03-26 18:46:11 +0530",
        "id" : "dfbb11fe8266866c03db6bd38615617fcaf00c48",
        "msg" : "implement playlist selection logic and improve validation in PlaylistEdit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "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/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "8b2e2a825e6d37ecef707b0dba3d3863d849bf0f",
        "timestamp" : 1774533712000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix the test\u000a",
        "date" : "2026-03-26 19:31:52 +0530",
        "id" : "8b2e2a825e6d37ecef707b0dba3d3863d849bf0f",
        "msg" : "fix the test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
        ],
        "commitId" : "f7d30dc821ed2fca00fd73ea0759644a7b8a20eb",
        "timestamp" : 1774534177000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "update labels in AssignmentEditScreen\u000a",
        "date" : "2026-03-26 19:39:37 +0530",
        "id" : "f7d30dc821ed2fca00fd73ea0759644a7b8a20eb",
        "msg" : "update labels in AssignmentEditScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "48c4c8d4501f3ee4c0672c15c2cac286db2d33ef",
        "timestamp" : 1774539154000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "update labels in AssignmentEditScreen\u000a",
        "date" : "2026-03-26 21:02:34 +0530",
        "id" : "48c4c8d4501f3ee4c0672c15c2cac286db2d33ef",
        "msg" : "update labels in AssignmentEditScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "8083d5a443274b140ea22ef9b2ebf350589f3a00",
        "timestamp" : 1774544379000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix the assignment to follow the flow.\u000a",
        "date" : "2026-03-26 22:29:39 +0530",
        "id" : "8083d5a443274b140ea22ef9b2ebf350589f3a00",
        "msg" : "fix the assignment to follow the flow.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/index.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "c4fa61370719913d8c6e1b40c63dec00d3da3c7f",
        "timestamp" : 1774579892000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "update titles in respect-ds and adjust Maestro test assertions\u000a",
        "date" : "2026-03-27 08:21:32 +0530",
        "id" : "c4fa61370719913d8c6e1b40c63dec00d3da3c7f",
        "msg" : "update titles in respect-ds and adjust Maestro test assertions",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/index.json"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt"
        ],
        "commitId" : "198e19d89322723e32e41d5df63ee470857c34e6",
        "timestamp" : 1774588069000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix the flow.\u000a",
        "date" : "2026-03-27 10:37:49 +0530",
        "id" : "198e19d89322723e32e41d5df63ee470857c34e6",
        "msg" : "fix the flow.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "29c0b7270b53a708c924007572ad6b11c41cd724",
        "timestamp" : 1774591339000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix the flow.\u000a",
        "date" : "2026-03-27 11:32:19 +0530",
        "id" : "29c0b7270b53a708c924007572ad6b11c41cd724",
        "msg" : "fix the flow.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "35702c3d6796269401935e7a0356bcf463250e9c",
        "timestamp" : 1774593135000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix the flow.\u000a",
        "date" : "2026-03-27 12:02:15 +0530",
        "id" : "35702c3d6796269401935e7a0356bcf463250e9c",
        "msg" : "fix the flow.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
        ],
        "commitId" : "c020b51fdd3557389cfc0524594c1e0055581603",
        "timestamp" : 1774601800000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor learning unit selection and playlist editing.\u000a\u000a- Update Maestro test flows for improved playlist and section assertions.\u000a- Refactor `LearningUnitListScreen` to simplify multi-select UI and improve bottom button logic for playlist selection.\u000a- Update `LearningUnitListViewModel` to handle playlist picking mode, supporting `ReadiumLink` results and preventing multi-select of publications during playlist selection.\u000a- Improve `PlaylistEditViewModel` to correctly resolve playlist titles and navigation links when adding items to sections.\u000a- Refine section type detection in `PlaylistEditScreen` to properly distinguish between navigation and publication sections.\u000a- Remove redundant app bar state restoration calls in `PlaylistEditScreen`.\u000a",
        "date" : "2026-03-27 14:26:40 +0530",
        "id" : "c020b51fdd3557389cfc0524594c1e0055581603",
        "msg" : "Refactor learning unit selection and playlist editing.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "a3f4e5f74644f1d9d9bb1b91d0640729091e49a0",
        "timestamp" : 1774604390000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor onClickAssignSection to support optional indices and replace exceptions with early returns.\u000a",
        "date" : "2026-03-27 15:09:50 +0530",
        "id" : "a3f4e5f74644f1d9d9bb1b91d0640729091e49a0",
        "msg" : "Refactor onClickAssignSection to support optional indices and replace exceptions with early returns.",
        "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" : "6635c3829a71b25306606edaf5a009aafe606080",
        "timestamp" : 1774604621000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor onClickAssignSection to support optional indices and replace exceptions with early returns.\u000a",
        "date" : "2026-03-27 15:13:41 +0530",
        "id" : "6635c3829a71b25306606edaf5a009aafe606080",
        "msg" : "Refactor onClickAssignSection to support optional indices and replace exceptions with early returns.",
        "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-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "2047444347fcccefe9b35e34b80641ad6f794e52",
        "timestamp" : 1774609080000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Assignment support\u000a",
        "date" : "2026-03-27 16:28:00 +0530",
        "id" : "2047444347fcccefe9b35e34b80641ad6f794e52",
        "msg" : "Assignment support",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          },
          {
            "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/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "ffb2b1df0be25f4c733b758c84f1eecabe3fbfa3",
        "timestamp" : 1774610164000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix assignment navigation\u000a",
        "date" : "2026-03-27 16:46:04 +0530",
        "id" : "ffb2b1df0be25f4c733b758c84f1eecabe3fbfa3",
        "msg" : "fix assignment navigation",
        "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/playlists/mapping/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "3fe851221009338b67708e32a6e116de489cfb0b",
        "timestamp" : 1774613727000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "update maestro test flow and fix element IDs\u000a",
        "date" : "2026-03-27 17:45:27 +0530",
        "id" : "3fe851221009338b67708e32a6e116de489cfb0b",
        "msg" : "update maestro test flow and fix element IDs",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "35b286fe088742cb79ddaa32db5932359fb26038",
        "timestamp" : 1774728753000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix share\u000a",
        "date" : "2026-03-29 01:42:33 +0530",
        "id" : "35b286fe088742cb79ddaa32db5932359fb26038",
        "msg" : "fix share",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "f9f0efa7bf52de1412f44f2c2c5e867b98909e5c",
        "timestamp" : 1774764627000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "refactor assignmentedit\u000a",
        "date" : "2026-03-29 11:40:27 +0530",
        "id" : "f9f0efa7bf52de1412f44f2c2c5e867b98909e5c",
        "msg" : "refactor assignmentedit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
        ],
        "commitId" : "5e6b93f7cebe6c0a82390618f3bcbb3f1e044ff8",
        "timestamp" : 1774776985000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix issue #209\u000a\u000aAttempting to self-register a new school failed when URL is included in verified app links as per the Android Manifest.\u000a",
        "date" : "2026-03-29 13:36:25 +0400",
        "id" : "5e6b93f7cebe6c0a82390618f3bcbb3f1e044ff8",
        "msg" : "Fix issue #209",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
        ],
        "commitId" : "c86cd41b696bc6a2c81db3363dc0a0b2a4d30956",
        "timestamp" : 1774777246000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update LaunchCustomTabUseCase to use Url type.\u000a",
        "date" : "2026-03-29 13:40:46 +0400",
        "id" : "c86cd41b696bc6a2c81db3363dc0a0b2a4d30956",
        "msg" : "Update LaunchCustomTabUseCase to use Url type.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/build.gradle.kts",
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "c20ab8c871ed3a46390d51d4b9db99d3108783e3",
        "timestamp" : 1774778744000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update default base catalog url.\u000a",
        "date" : "2026-03-29 14:05:44 +0400",
        "id" : "c20ab8c871ed3a46390d51d4b9db99d3108783e3",
        "msg" : "Update default base catalog url.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "4ef8e0427f0d9ce3e869054aab57fde1d697ce84",
        "timestamp" : 1774789982000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version number.\u000a",
        "date" : "2026-03-29 17:13:02 +0400",
        "id" : "4ef8e0427f0d9ce3e869054aab57fde1d697ce84",
        "msg" : "Bump version number.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "4669e4ff928fd37c382a0d4bdc4b1a00789a73b9",
        "timestamp" : 1774839194000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix assignment navigation\u000a",
        "date" : "2026-03-30 08:23:14 +0530",
        "id" : "4669e4ff928fd37c382a0d4bdc4b1a00789a73b9",
        "msg" : "fix assignment navigation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "650ef92d057fd7233e884749b066598e807fa43a",
        "timestamp" : 1774845461000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "update maestro test flow to hide keyboard\u000a",
        "date" : "2026-03-30 10:07:41 +0530",
        "id" : "650ef92d057fd7233e884749b066598e807fa43a",
        "msg" : "update maestro test flow to hide keyboard",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
        ],
        "commitId" : "090a371f5fa74341f39dfda2cce23f3cadfb835a",
        "timestamp" : 1774878926000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update StatementEntities on XapiStatemenTAdapter to follow the same pattern as other adapter data classes.\u000a",
        "date" : "2026-03-30 17:55:26 +0400",
        "id" : "090a371f5fa74341f39dfda2cce23f3cadfb835a",
        "msg" : "Update StatementEntities on XapiStatemenTAdapter to follow the same pattern as other adapter data classes.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityObjectTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/StatementDbEntities.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementAndActivity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
        ],
        "commitId" : "cab7d656f7ba475eb909571f04948e7ed27b4b32",
        "timestamp" : 1774899397000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Adapter to convert from Xapi Statement entities into\u000a",
        "date" : "2026-03-30 23:36:37 +0400",
        "id" : "cab7d656f7ba475eb909571f04948e7ed27b4b32",
        "msg" : "Adapter to convert from Xapi Statement entities into",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityObjectTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementAndActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/StatementDbEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "DESIGN_GUIDELINES.md"
        ],
        "commitId" : "65b57bc675618aadff7f1cb7ce02a1b8f343b28c",
        "timestamp" : 1774955089000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Add confirmation feedback guideline for user actions\u000a\u000aAdded guideline for user action confirmation feedback.\u000a",
        "date" : "2026-03-31 15:04:49 +0400",
        "id" : "65b57bc675618aadff7f1cb7ce02a1b8f343b28c",
        "msg" : "Add confirmation feedback guideline for user actions",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "DESIGN_GUIDELINES.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/GetActiveUsernameUseCase.kt"
        ],
        "commitId" : "e8e991241066679204db500e38e4187b1ad7011d",
        "timestamp" : 1775023507000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Add GetActiveUsernameUseCase and refactor Playlist handling\u000a",
        "date" : "2026-04-01 11:35:07 +0530",
        "id" : "e8e991241066679204db500e38e4187b1ad7011d",
        "msg" : "Add GetActiveUsernameUseCase and refactor Playlist handling",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/GetActiveUsernameUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntryPropEnum.kt"
        ],
        "commitId" : "fad79fe5b4c098582d8cd46f97bf59fdfe2aa89d",
        "timestamp" : 1775072530000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improvements to storing xapi activity in the database. Introduce enums to replace integer flags on room entities.\u000a",
        "date" : "2026-04-01 23:42:10 +0400",
        "id" : "fad79fe5b4c098582d8cd46f97bf59fdfe2aa89d",
        "msg" : "Improvements to storing xapi activity in the database. Introduce enums to replace integer flags on room entities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntryPropEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionType.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionTypeEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
        ],
        "commitId" : "9124cfae27641662a050276d7263c96e7c5afacb",
        "timestamp" : 1775114363000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improvements for XapiActivity database storage: use enum for interaction type.\u000a",
        "date" : "2026-04-02 11:19:23 +0400",
        "id" : "9124cfae27641662a050276d7263c96e7c5afacb",
        "msg" : "Improvements for XapiActivity database storage: use enum for interaction type.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/UuidExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiSerializers.kt"
        ],
        "commitId" : "a9093197b02ba4482ff7724cee52ae075aac0f2f",
        "timestamp" : 1775122281000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Xapi Statement and Activity storage: work in progress.\u000a\u000aInitial implementation of StatementEntities toModel function that can handle an Activity, sub statement, statement ref, or actor.\u000a",
        "date" : "2026-04-02 13:31:21 +0400",
        "id" : "a9093197b02ba4482ff7724cee52ae075aac0f2f",
        "msg" : "Xapi Statement and Activity storage: work in progress.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/UuidExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiSerializers.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
        ],
        "commitId" : "abc7088eee293f837c41ee15896c1474c8c3ff61",
        "timestamp" : 1775126753000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Refactor PlaylistListViewModel\u000a",
        "date" : "2026-04-02 16:15:53 +0530",
        "id" : "abc7088eee293f837c41ee15896c1474c8c3ff61",
        "msg" : "Refactor PlaylistListViewModel",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-lib-test-resources/build.gradle.kts",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "respect-datalayer/build.gradle.kts",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "settings.gradle.kts",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "respect-datalayer-db/build.gradle.kts",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "respect-lib-test-resources/README.md",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
        ],
        "commitId" : "20fed7dbd6f2befd5c51281bef91947274d7983f",
        "timestamp" : 1775206648000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor sample statements into a single module.\u000a",
        "date" : "2026-04-03 12:57:28 +0400",
        "id" : "20fed7dbd6f2befd5c51281bef91947274d7983f",
        "msg" : "Refactor sample statements into a single module.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "DESIGN_GUIDELINES.md"
        ],
        "commitId" : "f45fcd119a5923dae9e1585706f20b46577e45e2",
        "timestamp" : 1775461032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update design guidelines for screen inclusion\u000a\u000aClarified guidelines for including existing screens in prototypes.\u000a",
        "date" : "2026-04-06 11:37:12 +0400",
        "id" : "f45fcd119a5923dae9e1585706f20b46577e45e2",
        "msg" : "Update design guidelines for screen inclusion",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "DESIGN_GUIDELINES.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/BuildFlags.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/IntExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt",
          "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
        ],
        "commitId" : "719c336575b54c0e1ce64b7c522ff2adbe5e8e93",
        "timestamp" : 1775485177000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update handling of sample statements.\u000aAdd a JsonTransformingSerializer that handles the difference between a Statement and a SubStatement.\u000aImprove handling of empty/null properties serializing to/from the database.\u000a",
        "date" : "2026-04-06 18:19:37 +0400",
        "id" : "719c336575b54c0e1ce64b7c522ff2adbe5e8e93",
        "msg" : "Update handling of sample statements.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/BuildFlags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/IntExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
        ],
        "commitId" : "2c586ab50c082b76f522114e26054c62fffb87e3",
        "timestamp" : 1775551714000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement assertions to check proper serialization of Xapi Activity.\u000a",
        "date" : "2026-04-07 12:48:34 +0400",
        "id" : "2c586ab50c082b76f522114e26054c62fffb87e3",
        "msg" : "Implement assertions to check proper serialization of Xapi Activity.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
        ],
        "commitId" : "3d6aa8c0591cc0346e544ce6a462192aa8a86b93",
        "timestamp" : 1775552163000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add Xapi assertions to validate expected/actual statement object.\u000a",
        "date" : "2026-04-07 12:56:03 +0400",
        "id" : "3d6aa8c0591cc0346e544ce6a462192aa8a86b93",
        "msg" : "Add Xapi assertions to validate expected/actual statement object.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt"
        ],
        "commitId" : "24f03b6f0a8014960ad847a7a30c6713872a17e2",
        "timestamp" : 1775672232000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Further improvements to converting statements to/from entities and assertions\u000a",
        "date" : "2026-04-08 22:17:12 +0400",
        "id" : "24f03b6f0a8014960ad847a7a30c6713872a17e2",
        "msg" : "Further improvements to converting statements to/from entities and assertions",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntityTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoinTypeEnum.kt"
        ],
        "commitId" : "20233ca2517df98b1a75cada5f9e57694471186c",
        "timestamp" : 1775727605000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "xAPI entity improvements\u000aa) Update Actor entity to use an enum for Group / Agent type\u000ab) Update StatementContextActivityJoin to use Enum for type\u000a\u000aRemove some obsolete properties from StatementContextActivityJoin\u000a",
        "date" : "2026-04-09 13:40:05 +0400",
        "id" : "20233ca2517df98b1a75cada5f9e57694471186c",
        "msg" : "xAPI entity improvements",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoinTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntityTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt"
        ],
        "commitId" : "68931248838fe00fbacefbdb571ad92ce0d89403",
        "timestamp" : 1775743406000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improvements to handling activity entities conversion.\u000a",
        "date" : "2026-04-09 18:03:26 +0400",
        "id" : "68931248838fe00fbacefbdb571ad92ce0d89403",
        "msg" : "Improvements to handling activity entities conversion.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivityDefinition.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
        ],
        "commitId" : "923abf9c29155517aa87f7e95942a75af4601400",
        "timestamp" : 1775827290000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improvements to handling statement storage to/from entities.\u000a\u000aSeparate out to/from entities for Activity, Verb, and Actor, and remove them from the StatementEntities class.\u000a\u000aThis makes it far more elegant to merge data correctly where one statement refers to the same actor, activity, or verb more than once.\u000a",
        "date" : "2026-04-10 17:21:30 +0400",
        "id" : "923abf9c29155517aa87f7e95942a75af4601400",
        "msg" : "Improvements to handling statement storage to/from entities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivityDefinition.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/Externallinkeditviewmodel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/Externallinkeditscreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "a8ec34eb992ca5f545778899c7b8c94e1deaeb31",
        "timestamp" : 1776244733000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "initial commit\u000a",
        "date" : "2026-04-15 14:48:53 +0530",
        "id" : "a8ec34eb992ca5f545778899c7b8c94e1deaeb31",
        "msg" : "initial commit",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/Externallinkeditviewmodel.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/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/Externallinkeditscreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActivityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
        ],
        "commitId" : "43987f51e37af59416d7fe5187061de750f13e52",
        "timestamp" : 1776412611000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improve handling serialization/deserialization of xapi activities and actors\u000a",
        "date" : "2026-04-17 11:56:51 +0400",
        "id" : "43987f51e37af59416d7fe5187061de750f13e52",
        "msg" : "Improve handling serialization/deserialization of xapi activities and actors",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActivityExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
        ],
        "commitId" : "eafa8bfb829d75f3b18d68abb716d9c00f537fca",
        "timestamp" : 1776418008000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Handle serialization/deserialization and tests for statement context activities.\u000a",
        "date" : "2026-04-17 13:26:48 +0400",
        "id" : "eafa8bfb829d75f3b18d68abb716d9c00f537fca",
        "msg" : "Handle serialization/deserialization and tests for statement context activities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.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/playlists/mapping/edit/Externallinkeditviewmodel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCase.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/cover.png",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/externallink/OpenExternalLinkUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/Externallinkeditscreen.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/OpenExternalLinkUseCaseAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/cover.png",
          "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" : "0a3ffb13d52eba840ce9e6adbd53e1d87f2ba741",
        "timestamp" : 1776423606000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-04-17 16:30:06 +0530",
        "id" : "0a3ffb13d52eba840ce9e6adbd53e1d87f2ba741",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/externallink/OpenExternalLinkUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/cover.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/OpenExternalLinkUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/Externallinkeditviewmodel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/Externallinkeditscreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/cover.png"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "6e3f531da23c5c70a5236dbfa75c142dad8dbbad",
        "timestamp" : 1776429801000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flow `002_user_add_apps_playlists_bookmarks_test.yaml` to include testing for adding external links to playlists and clean up unused assertions.\u000a",
        "date" : "2026-04-17 16:43:21 +0400",
        "id" : "6e3f531da23c5c70a5236dbfa75c142dad8dbbad",
        "msg" : "Update Maestro flow `002_user_add_apps_playlists_bookmarks_test.yaml` to include testing for adding external links to playlists and clean up unused assertions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/StatementDbEntities.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndRelated.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityJson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
        ],
        "commitId" : "ef3dee9797ea07f51f6317fe69aca70995ff1394",
        "timestamp" : 1776599161000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improvements to handling storing / updating Xapi Activities.\u000a",
        "date" : "2026-04-19 15:46:01 +0400",
        "id" : "ef3dee9797ea07f51f6317fe69aca70995ff1394",
        "msg" : "Improvements to handling storing / updating Xapi Activities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndRelated.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityJson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/StatementDbEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorDaoExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "f637c64525076dd0b3155a208063eb628b1e4f83",
        "timestamp" : 1776606100000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix handling of last modified time for XapiActivity db datasource.\u000aAdd XapiActorDataSourceDb  initial implementation\u000a",
        "date" : "2026-04-19 17:41:40 +0400",
        "id" : "f637c64525076dd0b3155a208063eb628b1e4f83",
        "msg" : "Fix handling of last modified time for XapiActivity db datasource.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorDaoExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentFilter.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/AssignmentDataSource.kt"
        ],
        "commitId" : "58afb866e5f7690bd0bbb7fac011d7722d0b6a2f",
        "timestamp" : 1776667542000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "initial commit\u000a",
        "date" : "2026-04-20 12:15:42 +0530",
        "id" : "58afb866e5f7690bd0bbb7fac011d7722d0b6a2f",
        "msg" : "initial commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentFilter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/AssignmentDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
        ],
        "commitId" : "f940d198cea0d4e4d2cc02a4e82292d55020f0d1",
        "timestamp" : 1776669197000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "initial commit\u000a",
        "date" : "2026-04-20 12:43:17 +0530",
        "id" : "f940d198cea0d4e4d2cc02a4e82292d55020f0d1",
        "msg" : "initial commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
        ],
        "commitId" : "6b5c22c0a6c1c0725992ec0f599a3677d03b1d51",
        "timestamp" : 1776669280000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "initial commit\u000a",
        "date" : "2026-04-20 12:44:40 +0530",
        "id" : "6b5c22c0a6c1c0725992ec0f599a3677d03b1d51",
        "msg" : "initial commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/ListExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt"
        ],
        "commitId" : "cba2620c0b3c87e41f4d62db3743930a2456b538",
        "timestamp" : 1776675650000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of converting statements from database entities back to the model.\u000a",
        "date" : "2026-04-20 13:00:50 +0400",
        "id" : "cba2620c0b3c87e41f4d62db3743930a2456b538",
        "msg" : "Initial implementation of converting statements from database entities back to the model.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/ListExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
        ],
        "commitId" : "875f1ccf73e58d07d2fcd2b1217698c1e026cde8",
        "timestamp" : 1776678874000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress implementation of deserializing statements from the database.\u000a",
        "date" : "2026-04-20 13:54:34 +0400",
        "id" : "875f1ccf73e58d07d2fcd2b1217698c1e026cde8",
        "msg" : "Work in progress implementation of deserializing statements from the database.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
        ],
        "commitId" : "370a20da48e132d8470e0585437104c398593af5",
        "timestamp" : 1776687715000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update XapiStatementDataSourceDbTest to use new database for each example statement.\u000a\u000aSome activities have the same id IRI. In this case as per the xAPI spec the canonical definition will not be updated.\u000a",
        "date" : "2026-04-20 16:21:55 +0400",
        "id" : "370a20da48e132d8470e0585437104c398593af5",
        "msg" : "Update XapiStatementDataSourceDbTest to use new database for each example statement.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_class_with_members.yaml",
          ".maestro/flows/subflows/create_account_for_class_member.yaml",
          ".maestro/flows/subflows/admin_add_app.yaml",
          ".maestro/flows/subflows/admin_add_new_student_to_class.yaml",
          ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
        ],
        "commitId" : "fd3011427f02341c1e493362ec416de686be5846",
        "timestamp" : 1776732160000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Refactor and modularize Maestro E2E test flows for admin and class management.\u000a",
        "date" : "2026-04-21 04:42:40 +0400",
        "id" : "fd3011427f02341c1e493362ec416de686be5846",
        "msg" : "Refactor and modularize Maestro E2E test flows for admin and class management.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/admin_add_class_with_members.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/create_account_for_class_member.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/admin_add_new_student_to_class.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
        ],
        "commitId" : "074a766439e91d68f94673691403310dafc7f59d",
        "timestamp" : 1776755045000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Handle context activity joins for substatement.\u000a",
        "date" : "2026-04-21 11:04:05 +0400",
        "id" : "074a766439e91d68f94673691403310dafc7f59d",
        "msg" : "Handle context activity joins for substatement.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiGroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntryPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntityTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntryPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntityTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityObjectTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateDeleteCommand.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoinTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityObjectTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiGroupMemberActorJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDeleteCommand.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoin.kt"
        ],
        "commitId" : "ee09dc9bb6c568bf3173ed1df93da392f508c28f",
        "timestamp" : 1776758744000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Standardize Xapi class names in datalayer-db\u000a",
        "date" : "2026-04-21 12:05:44 +0400",
        "id" : "ee09dc9bb6c568bf3173ed1df93da392f508c28f",
        "msg" : "Standardize Xapi class names in datalayer-db",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbLangMapEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntryPropEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityObjectTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDeleteCommandDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiGroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoinTypeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiGroupMemberActorJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateDeleteCommandDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntryPropEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntityTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityObjectTypeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntityTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityInteractionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityExtensionEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateDeleteCommand.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDeleteCommand.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "871718428513a5c51640ba6afc5fcd998e05b7c5",
        "timestamp" : 1776761526000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Implement ExtractWebPageMetadataUseCaseAndroid for extracting metadata from web pages\u000a",
        "date" : "2026-04-21 14:22:06 +0530",
        "id" : "871718428513a5c51640ba6afc5fcd998e05b7c5",
        "msg" : "Implement ExtractWebPageMetadataUseCaseAndroid for extracting metadata from web pages",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentStatusFilter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "cf1ccc5dea71eb1226cf25117715e9d5046cda22",
        "timestamp" : 1776762291000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "update assignment deatils screen with student progression section\u000a",
        "date" : "2026-04-21 14:34:51 +0530",
        "id" : "cf1ccc5dea71eb1226cf25117715e9d5046cda22",
        "msg" : "update assignment deatils screen with student progression section",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentStatusFilter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
        ],
        "commitId" : "537c910399340557942ca4d5ade8af4a9a53c089",
        "timestamp" : 1776762377000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement Xapi Statement search by agent and related agents.\u000a",
        "date" : "2026-04-21 13:06:17 +0400",
        "id" : "537c910399340557942ca4d5ade8af4a9a53c089",
        "msg" : "Implement Xapi Statement search by agent and related agents.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
        ],
        "commitId" : "56c008c96283615c916cd62cdd1e98501b10342c",
        "timestamp" : 1776763639000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add support for since/until search in XapiStatementDataSourceDb\u000a",
        "date" : "2026-04-21 13:27:19 +0400",
        "id" : "56c008c96283615c916cd62cdd1e98501b10342c",
        "msg" : "Add support for since/until search in XapiStatementDataSourceDb",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt"
        ],
        "commitId" : "622755b8a4abec3b58a617dcddb7689bdf0f5e4b",
        "timestamp" : 1776764467000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move statements read into a transaction.\u000aAdd support for verb search in statements.\u000a",
        "date" : "2026-04-21 13:41:07 +0400",
        "id" : "622755b8a4abec3b58a617dcddb7689bdf0f5e4b",
        "msg" : "Move statements read into a transaction.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
        ],
        "commitId" : "769cfa3070ed622d63675fa2c10e70604bd83bbb",
        "timestamp" : 1776765598000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix compilation of http and repo modules (still just using the local package).\u000a",
        "date" : "2026-04-21 13:59:58 +0400",
        "id" : "769cfa3070ed622d63675fa2c10e70604bd83bbb",
        "msg" : "Fix compilation of http and repo modules (still just using the local package).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
        ],
        "commitId" : "87261eef0e86be96c23ba5c0338ce56c140bc97d",
        "timestamp" : 1776831802000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "App crash fix\u000a",
        "date" : "2026-04-22 09:53:22 +0530",
        "id" : "87261eef0e86be96c23ba5c0338ce56c140bc97d",
        "msg" : "App crash fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
        ],
        "commitId" : "a07bd9337d8d0c6004e5cee4986a8d195bfe71c8",
        "timestamp" : 1776843019000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of xapi statements search by activity uid.\u000a",
        "date" : "2026-04-22 11:30:19 +0400",
        "id" : "a07bd9337d8d0c6004e5cee4986a8d195bfe71c8",
        "msg" : "Initial implementation of xapi statements search by activity uid.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/admin_add_class_with_members.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/school_user_login_flow.yaml"
        ],
        "commitId" : "4d2ce6ff938c097a0ee27dfd6e49a56d67b90bff",
        "timestamp" : 1776843349000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flows for assignment management and class member creation.\u000a\u000a- Move `003_admin_user_assigns_assignment_to_a_class_test.yaml` to `pending-flows`\u000a",
        "date" : "2026-04-22 11:35:49 +0400",
        "id" : "4d2ce6ff938c097a0ee27dfd6e49a56d67b90bff",
        "msg" : "Update Maestro flows for assignment management and class member creation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class_with_members.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/school_user_login_flow.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
        ],
        "commitId" : "0bfa6bf88174781dc081eb1b6c2a4fab53f7ae0a",
        "timestamp" : 1776843449000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Include substatement, where present, in related activities search as per spec.\u000a",
        "date" : "2026-04-22 11:37:29 +0400",
        "id" : "0bfa6bf88174781dc081eb1b6c2a4fab53f7ae0a",
        "msg" : "Include substatement, where present, in related activities search as per spec.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "0ea96448c81de6f8b2319f3cfc80a0b2db37301d",
        "timestamp" : 1776843770000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "test: update field labels in Maestro assignment flow\u000a",
        "date" : "2026-04-22 11:42:50 +0400",
        "id" : "0ea96448c81de6f8b2319f3cfc80a0b2db37301d",
        "msg" : "test: update field labels in Maestro assignment flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
        ],
        "commitId" : "a581ac7d223f14a4a2a4d4278ceed40059e06181",
        "timestamp" : 1776844361000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add support for order and limit in XapiStatementDataSourceDb\u000a",
        "date" : "2026-04-22 11:52:41 +0400",
        "id" : "a581ac7d223f14a4a2a4d4278ceed40059e06181",
        "msg" : "Add support for order and limit in XapiStatementDataSourceDb",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentSubmissionFile.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrolmentRequest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentProgressSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ErrorReport.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiSessionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LeavingReason.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupAssignmentSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CacheLockJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoinWithLanguage.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithDisplayDetails.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SiteTerms.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryPicture2.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StatementReportData.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PeerReviewerAllocationList.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithHolidayCalendarAndAndTerminology.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAuth.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupWithMemberCount.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/DateConstants.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/HolidayCalendarWithNumEntries.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJobError.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SystemPermission.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithPerson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryButtonModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryVersion.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UmAccount.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/SystemPermissionDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Language.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAuth2.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Schedule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CoursePicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ConnectivityStatus.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PeerReviewerAllocation.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Clazz.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UidAndLabel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryImportJob.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLog.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentWithAttemptSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntityJson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemParentChildJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrantAndName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiEntityObjectTypeFlags.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithDetails.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementContextActivityJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DeletedItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonNameAndUid.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Holiday.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithLeavingReason.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Site.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupMember.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryContentCategoryJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AverageCourseAssignmentMark.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLogAttendanceRecordWithPerson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LangUidAndName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryPicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJob.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseTerminology.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoinWithLangName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrant.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UserSession.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithPerson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithAttemptsSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryParentChildJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SiteTermsWithLanguage.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithClazz.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLogAttendanceRecord.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzInvite.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasskey.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Message.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/StateIdAndLastModified.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StudentResult.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ParentEnrolmentRequired.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/HolidayCalendar.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJobItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/XapiSessionEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Comments.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonParentJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryStatementScoreProgress.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrantWithName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithLanguage.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJob.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ReportQueryResult.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StatementEntityAndDisplayDetails.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemProgress.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/OfflineItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupMember.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateDeleteCommand.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignmentRollUp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/ActorUidEtagAndLastMod.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentCategory.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentMarkWithPersonMarker.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithClazzAndAttendance.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentSubmitterAndAllocations.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentSubmitterSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/PermissionFlags.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/GroupMemberActorJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentMark.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupMemberAndName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentCategorySchema.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LanguageVariant.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CoursePermission.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithBlockAndLanguage.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonUidAndPasswordHash.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithListDisplayDetails.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAndDisplayDetail.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentSubmission.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPost.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonWithAttemptsSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EntityConstants.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ExternalAppPermission.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseBlockPicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DistinctCategorySchema.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UserSessionAndPerson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemProgressAndStatus.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroup.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Moment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignmentCourseBlockAndSubmitterUid.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupSet.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseBlock.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonParentJoinAndMinorPerson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DownloadJobSizeInfo.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonWithSessionsDisplay.kt"
        ],
        "commitId" : "6efb69b4c59c14e40f53f5493c74c0dcb4d89d11",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "bring everything that is in lib-database from Ustad into Respect\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "6efb69b4c59c14e40f53f5493c74c0dcb4d89d11",
        "msg" : "bring everything that is in lib-database from Ustad into Respect",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryPicture.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAuth2.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/SystemPermissionDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPicture.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/PermissionFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Language.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StatementEntityAndDisplayDetails.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityExtensionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroup.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonUidAndPasswordHash.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiEntityObjectTypeFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPicture.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ParentEnrolmentRequired.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithPerson.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupMemberAndName.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonParentJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CoursePicture.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAndDisplayDetail.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemProgressAndStatus.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/ActorUidEtagAndLastMod.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActorEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiSessionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseBlockPicture.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupAssignmentSummary.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryButtonModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithDisplayDetails.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/HolidayCalendar.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityExtensionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryImportJob.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonParentJoinAndMinorPerson.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SiteTerms.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UserSessionAndPerson.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Comments.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DownloadJobSizeInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAuth.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/HolidayCalendarWithNumEntries.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentProgressSummary.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithLanguage.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemProgress.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoinWithLangName.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateDeleteCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Site.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemParentChildJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/StateIdAndLastModified.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLogAttendanceRecord.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SystemPermission.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/GroupMemberActorJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentSubmission.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/OfflineItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryVersion.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PeerReviewerAllocationList.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DistinctCategorySchema.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentMark.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupWithMemberCount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Schedule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentMarkWithPersonMarker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EntityConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithPerson.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PeerReviewerAllocation.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DeletedItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseTerminology.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignment.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupMember.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentSubmitterSummary.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LangUidAndName.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrantAndName.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SiteTermsWithLanguage.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LeavingReason.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolment.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentSubmitterAndAllocations.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ExternalAppPermission.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithBlockAndLanguage.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActorDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentCategorySchema.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UmAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignmentRollUp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithAttemptsSummary.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithClazz.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJob.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLog.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateDeleteCommandDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzInvite.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ConnectivityStatus.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Clazz.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonWithSessionsDisplay.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CacheLockJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasskey.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StudentResult.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentCategory.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Moment.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntityJson.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupMember.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJob.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseBlock.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryParentChildJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ReportQueryResult.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrantWithName.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLogAttendanceRecordWithPerson.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AverageCourseAssignmentMark.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentWithAttemptSummary.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UidAndLabel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UserSession.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Message.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryContentCategoryJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryStatementScoreProgress.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ErrorReport.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonWithAttemptsSummary.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Holiday.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityInteractionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignmentCourseBlockAndSubmitterUid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CoursePermission.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentSubmissionFile.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithLeavingReason.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithListDisplayDetails.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithDetails.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJobItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithHolidayCalendarAndAndTerminology.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJobError.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryPicture2.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrolmentRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupSet.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StatementReportData.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithClazzAndAttendance.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonNameAndUid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoinWithLanguage.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrant.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/DateConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LanguageVariant.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CoursePicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseTerminology.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrolmentRequest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DistinctCategorySchema.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithDetails.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DeletedItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithPerson.kt"
        ],
        "commitId" : "c2d8d1da7141dfee1598f7c6cbb014f12465ee0a",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "code refactor\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "c2d8d1da7141dfee1598f7c6cbb014f12465ee0a",
        "msg" : "code refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DeletedItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithPerson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DistinctCategorySchema.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrolmentRequest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseTerminology.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithDetails.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CoursePicture.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/SessionTimeAndProgressInfo.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/VerbEntityAndName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementAndActivity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StateIdAndLastModified.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndRelated.kt"
        ],
        "commitId" : "b9e1ae7bf6f4cc0c87c446078d245cc7d5d82dbc",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add xapi related composites\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "b9e1ae7bf6f4cc0c87c446078d245cc7d5d82dbc",
        "msg" : "add xapi related composites",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/SessionTimeAndProgressInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndRelated.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/VerbEntityAndName.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StateIdAndLastModified.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementAndActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentSubmissionFile.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrolmentRequest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentProgressSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ErrorReport.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LeavingReason.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupAssignmentSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CacheLockJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoinWithLanguage.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithDisplayDetails.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SiteTerms.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryPicture2.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StatementReportData.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PeerReviewerAllocationList.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithHolidayCalendarAndAndTerminology.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAuth.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupWithMemberCount.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/HolidayCalendarWithNumEntries.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJobError.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SystemPermission.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithPerson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryButtonModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryVersion.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UmAccount.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Language.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAuth2.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Schedule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ConnectivityStatus.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CoursePicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PeerReviewerAllocation.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Clazz.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UidAndLabel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryImportJob.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLog.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentWithAttemptSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemParentChildJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrantAndName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithDetails.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DeletedItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonNameAndUid.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Holiday.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithLeavingReason.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Site.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupMember.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryContentCategoryJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AverageCourseAssignmentMark.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLogAttendanceRecordWithPerson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LangUidAndName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryPicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJob.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseTerminology.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoinWithLangName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrant.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UserSession.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithPerson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithAttemptsSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryParentChildJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SiteTermsWithLanguage.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithClazz.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLogAttendanceRecord.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzInvite.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasskey.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Message.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StudentResult.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/HolidayCalendar.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ParentEnrolmentRequired.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJobItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Comments.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonParentJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryStatementScoreProgress.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrantWithName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithLanguage.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJob.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StatementEntityAndDisplayDetails.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemProgress.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/OfflineItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupMember.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignmentRollUp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentCategory.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentMarkWithPersonMarker.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithClazzAndAttendance.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentSubmitterAndAllocations.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentSubmitterSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentMark.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupMemberAndName.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentCategorySchema.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LanguageVariant.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CoursePermission.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithBlockAndLanguage.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonUidAndPasswordHash.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithListDisplayDetails.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAndDisplayDetail.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentSubmission.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonWithAttemptsSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPost.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ExternalAppPermission.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EntityConstants.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DistinctCategorySchema.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseBlockPicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UserSessionAndPerson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPicture.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemProgressAndStatus.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroup.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Moment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignmentCourseBlockAndSubmitterUid.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupSet.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseBlock.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DownloadJobSizeInfo.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonParentJoinAndMinorPerson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonWithSessionsDisplay.kt"
        ],
        "commitId" : "0641ac773a1a5fd4ab2534ce4ab0a35bb33162e5",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "remove unwanted files\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "0641ac773a1a5fd4ab2534ce4ab0a35bb33162e5",
        "msg" : "remove unwanted files",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithDetails.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SiteTerms.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CoursePermission.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithPerson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrantWithName.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryContentCategoryJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DeletedItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AverageCourseAssignmentMark.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonNameAndUid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PeerReviewerAllocationList.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLog.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryParentChildJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonWithAttemptsSummary.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryImportJob.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolment.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithClazz.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasskey.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryPicture2.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrant.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentSubmitterAndAllocations.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PeerReviewerAllocation.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SystemPermission.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupMember.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Holiday.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/OfflineItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ExternalAppPermission.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLogAttendanceRecordWithPerson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithBlockAndLanguage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentSubmission.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/HolidayCalendar.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseBlock.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithDisplayDetails.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAuth2.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJobError.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/HolidayCalendarWithNumEntries.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentSubmissionFile.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignmentCourseBlockAndSubmitterUid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentMarkWithPersonMarker.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Moment.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupWithMemberCount.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemParentChildJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentWithAttemptSummary.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ConnectivityStatus.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPostWithPerson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPicture.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DownloadJobSizeInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrolmentRequest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPicture.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentCategory.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupMemberAndName.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StatementEntityAndDisplayDetails.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LeavingReason.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzLogAttendanceRecord.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroup.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonParentJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonUidAndPasswordHash.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StudentResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DistinctCategorySchema.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentSubmitterSummary.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ParentEnrolmentRequired.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Schedule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJob.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAndDisplayDetail.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UidAndLabel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ScopedGrantAndName.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseAssignmentMark.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryVersion.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentProgressSummary.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithListDisplayDetails.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignment.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseGroupSet.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryPicture.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseBlockPicture.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupMember.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ErrorReport.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryStatementScoreProgress.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/StatementReportData.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemProgress.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EntityConstants.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonWithSessionsDisplay.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithLeavingReason.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SiteTermsWithLanguage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonAuth.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoinWithLangName.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CacheLockJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Comments.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Clazz.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentCategorySchema.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithLanguage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryWithAttemptsSummary.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJob.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryButtonModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonParentJoinAndMinorPerson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/TransferJobItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UserSessionAndPerson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Language.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LanguageVariant.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UserSession.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Site.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CoursePicture.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LangUidAndName.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzInvite.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/CourseTerminology.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzEnrolmentWithClazzAndAttendance.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentEntryRelatedEntryJoinWithLanguage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzAssignmentRollUp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClazzWithHolidayCalendarAndAndTerminology.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/UmAccount.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ContentJobItemProgressAndStatus.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonGroupAssignmentSummary.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/DiscussionPost.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/Message.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiException.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionType.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt",
          "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActor.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/Attachment.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/State.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
        ],
        "commitId" : "e24bb8e32107c25d64be998804cd635ac5d01622",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Initial Xapi Statement serialization model and test.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "e24bb8e32107c25d64be998804cd635ac5d01622",
        "msg" : "Initial Xapi Statement serialization model and test.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/State.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/Attachment.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/DurationAsISO8601Serializer.kt"
        ],
        "commitId" : "09b899b4dc2ca12f7ecbb1c750308ee944968836",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Update XapiStatement property types to use Instant and Duration where appr\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "09b899b4dc2ca12f7ecbb1c750308ee944968836",
        "msg" : "Update XapiStatement property types to use Instant and Duration where appr",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/DurationAsISO8601Serializer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiEntityObjectTypeFlags.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiSessionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/XapiSessionEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/UuidExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateDeleteCommand.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndRelated.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityJson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/GroupMemberActorJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiSessionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntityJson.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/ListExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiEntityObjectTypeFlags.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/VerbEntityAndName.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementContextActivityJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementAndActivity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateDeleteCommand.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
        ],
        "commitId" : "453ab1b9d64d825708b359be94215fd020749fd8",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Initial implementation of converting Xapi models into local db entities.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "453ab1b9d64d825708b359be94215fd020749fd8",
        "msg" : "Initial implementation of converting Xapi models into local db entities.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiSessionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/UuidExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/GroupMemberActorJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityExtensionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiSessionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActorEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateDeleteCommand.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntityJson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityInteractionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateDeleteCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/XapiEntityObjectTypeFlags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActorDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/ListExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityExtensionEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateDeleteCommandDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiEntityObjectTypeFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndRelated.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityJson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/VerbEntityAndName.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/VerbLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementAndActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/xapi/StateEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt"
        ],
        "commitId" : "df50e60c415bd2a3664627cc677115fd1de400e9",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Minor tidyup of typing.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "df50e60c415bd2a3664627cc677115fd1de400e9",
        "msg" : "Minor tidyup of typing.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/XapiSessionEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt",
          "respect-datalayer-db/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/Attachment.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAttachment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiState.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/State.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDaoCommon.kt"
        ],
        "commitId" : "88fea28bbaa94f42314041c4f16d7c2f024ae0b9",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Add StoreActivitiesUseCase and requirements.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "88fea28bbaa94f42314041c4f16d7c2f024ae0b9",
        "msg" : "Add StoreActivitiesUseCase and requirements.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateDeleteCommandDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityExtensionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActorDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityInteractionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDaoCommon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/State.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/Attachment.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAttachment.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StateDeleteCommandDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/StatementDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/xapi/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/ActorUidEtagAndLastMod.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorDaoExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
        ],
        "commitId" : "69a5ab0125a2c765f0de4fdd162887716c996a08",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Initial commit of a version of XapiStatementDataSourceDb.kt that compiles.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "69a5ab0125a2c765f0de4fdd162887716c996a08",
        "msg" : "Initial commit of a version of XapiStatementDataSourceDb.kt that compiles.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorDaoExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/ActorUidEtagAndLastMod.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
        ],
        "commitId" : "279e800096fe123bf26664a9a28a80396431a74b",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Update StatementEntities on XapiStatemenTAdapter to follow the same pattern as other adapter data classes.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "279e800096fe123bf26664a9a28a80396431a74b",
        "msg" : "Update StatementEntities on XapiStatemenTAdapter to follow the same pattern as other adapter data classes.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityObjectTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/StatementDbEntities.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementAndActivity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
        ],
        "commitId" : "6ac1c42ed748c19625ada8e94204216dd8962cf4",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Adapter to convert from Xapi Statement entities into\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "6ac1c42ed748c19625ada8e94204216dd8962cf4",
        "msg" : "Adapter to convert from Xapi Statement entities into",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/StatementDbEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityObjectTypeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementAndActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntryPropEnum.kt"
        ],
        "commitId" : "a6b8217e0771cb7c737df7c5b1f2aa6144ea21a1",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Improvements to storing xapi activity in the database. Introduce enums to replace integer flags on room entities.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "a6b8217e0771cb7c737df7c5b1f2aa6144ea21a1",
        "msg" : "Improvements to storing xapi activity in the database. Introduce enums to replace integer flags on room entities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntryPropEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionTypeEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionType.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
        ],
        "commitId" : "275622f75a2226a6dc10ac4364fd5e668ab722ca",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Improvements for XapiActivity database storage: use enum for interaction type.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "275622f75a2226a6dc10ac4364fd5e668ab722ca",
        "msg" : "Improvements for XapiActivity database storage: use enum for interaction type.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/UuidExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiSerializers.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
        ],
        "commitId" : "d2f90efe33ab27951d2e7aba9be64c18fdb868a9",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Xapi Statement and Activity storage: work in progress.\u000a\u000aInitial implementation of StatementEntities toModel function that can handle an Activity, sub statement, statement ref, or actor.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "d2f90efe33ab27951d2e7aba9be64c18fdb868a9",
        "msg" : "Xapi Statement and Activity storage: work in progress.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/UuidExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiSerializers.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-lib-test-resources/build.gradle.kts",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "respect-datalayer/build.gradle.kts",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "settings.gradle.kts",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "respect-datalayer-db/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "respect-lib-test-resources/README.md",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
        ],
        "commitId" : "4516e95ffb547eabe485020ee4c87965c52d2731",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Refactor sample statements into a single module.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "4516e95ffb547eabe485020ee4c87965c52d2731",
        "msg" : "Refactor sample statements into a single module.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/BuildFlags.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/IntExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt",
          "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
        ],
        "commitId" : "66f99b59a5bddc999e652a30e037babbb50c3e6c",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Update handling of sample statements.\u000aAdd a JsonTransformingSerializer that handles the difference between a Statement and a SubStatement.\u000aImprove handling of empty/null properties serializing to/from the database.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "66f99b59a5bddc999e652a30e037babbb50c3e6c",
        "msg" : "Update handling of sample statements.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/BuildFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/IntExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
        ],
        "commitId" : "fdff019b094bbb59e049b5e7de2a32c83d7bac4b",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Implement assertions to check proper serialization of Xapi Activity.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "fdff019b094bbb59e049b5e7de2a32c83d7bac4b",
        "msg" : "Implement assertions to check proper serialization of Xapi Activity.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
        ],
        "commitId" : "9af48802f13b93ddb1d2c1c0bc475ab23cb4e42e",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Add Xapi assertions to validate expected/actual statement object.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "9af48802f13b93ddb1d2c1c0bc475ab23cb4e42e",
        "msg" : "Add Xapi assertions to validate expected/actual statement object.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
        ],
        "commitId" : "a90ad138e99c8b51954c2211950ec6903b4e2170",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Further improvements to converting statements to/from entities and assertions\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "a90ad138e99c8b51954c2211950ec6903b4e2170",
        "msg" : "Further improvements to converting statements to/from entities and assertions",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntityTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoinTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
        ],
        "commitId" : "94e9fb88df51ae248e7b30ea4c761cec04d50cdc",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "xAPI entity improvements\u000aa) Update Actor entity to use an enum for Group / Agent type\u000ab) Update StatementContextActivityJoin to use Enum for type\u000a\u000aRemove some obsolete properties from StatementContextActivityJoin\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "94e9fb88df51ae248e7b30ea4c761cec04d50cdc",
        "msg" : "xAPI entity improvements",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoinTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntityTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt"
        ],
        "commitId" : "107f83a051cfe9bc7f51bce73f2a34e0e7288516",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Improvements to handling activity entities conversion.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "107f83a051cfe9bc7f51bce73f2a34e0e7288516",
        "msg" : "Improvements to handling activity entities conversion.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivityDefinition.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
        ],
        "commitId" : "ca7fcc19254a105e32932aecd9e6fc58bc1c3e94",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Improvements to handling statement storage to/from entities.\u000a\u000aSeparate out to/from entities for Activity, Verb, and Actor, and remove them from the StatementEntities class.\u000a\u000aThis makes it far more elegant to merge data correctly where one statement refers to the same actor, activity, or verb more than once.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "ca7fcc19254a105e32932aecd9e6fc58bc1c3e94",
        "msg" : "Improvements to handling statement storage to/from entities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiContextActivitiesAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivityDefinition.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActivityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
        ],
        "commitId" : "9a5df1e5e7eb15a9adcc7c5bf43cdfb0864f3b04",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Improve handling serialization/deserialization of xapi activities and actors\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "9a5df1e5e7eb15a9adcc7c5bf43cdfb0864f3b04",
        "msg" : "Improve handling serialization/deserialization of xapi activities and actors",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActivityExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
        ],
        "commitId" : "fddaa1923b8de229017c33a597b5db3af684bd9e",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Handle serialization/deserialization and tests for statement context activities.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "fddaa1923b8de229017c33a597b5db3af684bd9e",
        "msg" : "Handle serialization/deserialization and tests for statement context activities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/StatementDbEntities.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndRelated.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityJson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
        ],
        "commitId" : "2912180a984ef9d87e621a93def7b1f8ef8c26e7",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Improvements to handling storing / updating Xapi Activities.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "2912180a984ef9d87e621a93def7b1f8ef8c26e7",
        "msg" : "Improvements to handling storing / updating Xapi Activities.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/StatementDbEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndRelated.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityJson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorDaoExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "26fa2bb263ac5e40255d5a3da51243985a156cd0",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Fix handling of last modified time for XapiActivity db datasource.\u000aAdd XapiActorDataSourceDb  initial implementation\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "26fa2bb263ac5e40255d5a3da51243985a156cd0",
        "msg" : "Fix handling of last modified time for XapiActivity db datasource.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorDaoExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/ListExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt"
        ],
        "commitId" : "2dc83817e78da275c4276283e4ea13d5625fea38",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Initial implementation of converting statements from database entities back to the model.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "2dc83817e78da275c4276283e4ea13d5625fea38",
        "msg" : "Initial implementation of converting statements from database entities back to the model.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/ListExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
        ],
        "commitId" : "a6977fe513bbeb8e57e43d8aed61cf6dd20f3e56",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Work in progress implementation of deserializing statements from the database.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "a6977fe513bbeb8e57e43d8aed61cf6dd20f3e56",
        "msg" : "Work in progress implementation of deserializing statements from the database.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
        ],
        "commitId" : "1e1fdf4684c00cf6cc5744e538faf90468817786",
        "timestamp" : 1776931032000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Update XapiStatementDataSourceDbTest to use new database for each example statement.\u000a\u000aSome activities have the same id IRI. In this case as per the xAPI spec the canonical definition will not be updated.\u000a",
        "date" : "2026-04-23 13:27:12 +0530",
        "id" : "1e1fdf4684c00cf6cc5744e538faf90468817786",
        "msg" : "Update XapiStatementDataSourceDbTest to use new database for each example statement.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
        ],
        "commitId" : "12c348d75ad6ece0b78d4c1177ae6ac147ce88b2",
        "timestamp" : 1776931033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Handle context activity joins for substatement.\u000a",
        "date" : "2026-04-23 13:27:13 +0530",
        "id" : "12c348d75ad6ece0b78d4c1177ae6ac147ce88b2",
        "msg" : "Handle context activity joins for substatement.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiGroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntryPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntityTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntryPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntityTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityObjectTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateDeleteCommand.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoinTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityObjectTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiGroupMemberActorJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDeleteCommand.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDeleteCommandDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoin.kt"
        ],
        "commitId" : "452031825510d1c855440157b9357091d8678d7e",
        "timestamp" : 1776931033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Standardize Xapi class names in datalayer-db\u000a",
        "date" : "2026-04-23 13:27:13 +0530",
        "id" : "452031825510d1c855440157b9357091d8678d7e",
        "msg" : "Standardize Xapi class names in datalayer-db",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntryPropEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiGroupMemberActorJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityExtensionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/GroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityExtensionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementEntityJsonDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityInteractionDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDeleteCommandDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDaoCommon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityExtensionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntityTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/VerbDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StatementDaoCommon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/StateDeleteCommandDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityLangMapEntryPropEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActorEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiGroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActorDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/ActivityInteractionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StateDeleteCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbLangMapEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementContextActivityJoinTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/StatementEntityObjectTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntityTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityObjectTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/GroupMemberActorJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/ActivityInteractionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDeleteCommand.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/VerbLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
        ],
        "commitId" : "e1686f7c36bbc39d43fceb0a16391f16eba7384e",
        "timestamp" : 1776931033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Implement Xapi Statement search by agent and related agents.\u000a",
        "date" : "2026-04-23 13:27:13 +0530",
        "id" : "e1686f7c36bbc39d43fceb0a16391f16eba7384e",
        "msg" : "Implement Xapi Statement search by agent and related agents.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
        ],
        "commitId" : "a7cff0e931727e16de953772af77431dcfd8828a",
        "timestamp" : 1776931033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Add support for since/until search in XapiStatementDataSourceDb\u000a",
        "date" : "2026-04-23 13:27:13 +0530",
        "id" : "a7cff0e931727e16de953772af77431dcfd8828a",
        "msg" : "Add support for since/until search in XapiStatementDataSourceDb",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt"
        ],
        "commitId" : "40fbbd10e7db5eac88f62c3d1fd695b8f66ceaf2",
        "timestamp" : 1776931033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Move statements read into a transaction.\u000aAdd support for verb search in statements.\u000a",
        "date" : "2026-04-23 13:27:13 +0530",
        "id" : "40fbbd10e7db5eac88f62c3d1fd695b8f66ceaf2",
        "msg" : "Move statements read into a transaction.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
        ],
        "commitId" : "3175dbc7e7f3423a9ddb188a6633829d53100fbe",
        "timestamp" : 1776931033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Fix compilation of http and repo modules (still just using the local package).\u000a",
        "date" : "2026-04-23 13:27:13 +0530",
        "id" : "3175dbc7e7f3423a9ddb188a6633829d53100fbe",
        "msg" : "Fix compilation of http and repo modules (still just using the local package).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
        ],
        "commitId" : "a88a838cafa0e87e7f33319ae47b6cbffea804aa",
        "timestamp" : 1776931033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Initial implementation of xapi statements search by activity uid.\u000a",
        "date" : "2026-04-23 13:27:13 +0530",
        "id" : "a88a838cafa0e87e7f33319ae47b6cbffea804aa",
        "msg" : "Initial implementation of xapi statements search by activity uid.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
        ],
        "commitId" : "77cc91a8bb8b018bb04c1f540a0abc4666fc631b",
        "timestamp" : 1776931033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Include substatement, where present, in related activities search as per spec.\u000a",
        "date" : "2026-04-23 13:27:13 +0530",
        "id" : "77cc91a8bb8b018bb04c1f540a0abc4666fc631b",
        "msg" : "Include substatement, where present, in related activities search as per spec.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
        ],
        "commitId" : "8cae57b5eb1de3c0e4a09c0e5a939c2a0e32289e",
        "timestamp" : 1776931033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Add support for order and limit in XapiStatementDataSourceDb\u000a",
        "date" : "2026-04-23 13:27:13 +0530",
        "id" : "8cae57b5eb1de3c0e4a09c0e5a939c2a0e32289e",
        "msg" : "Add support for order and limit in XapiStatementDataSourceDb",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.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/assignment/list/AssignmentListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "b1f8ac375f6522970093a1dc110a7072d37f35d9",
        "timestamp" : 1776931033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add student flow ui\u000a",
        "date" : "2026-04-23 13:27:13 +0530",
        "id" : "b1f8ac375f6522970093a1dc110a7072d37f35d9",
        "msg" : "add student flow ui",
        "paths" : [
          {
            "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/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.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/assignment/detail/AssignmentDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "README_XAPI.md",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
        ],
        "commitId" : "b3a27fc0ba48649e6669c0fbcfbf69bcd3419dbb",
        "timestamp" : 1776936205000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add example statement for assignment completion\u000a",
        "date" : "2026-04-23 13:23:25 +0400",
        "id" : "b3a27fc0ba48649e6669c0fbcfbf69bcd3419dbb",
        "msg" : "Add example statement for assignment completion",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "README_XAPI.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/Externallinkeditscreen.kt"
        ],
        "commitId" : "dd9f97f0ffb0314be6380a84a682ab017b635621",
        "timestamp" : 1776940450000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Remove static description\u000a",
        "date" : "2026-04-23 16:04:10 +0530",
        "id" : "dd9f97f0ffb0314be6380a84a682ab017b635621",
        "msg" : "Remove static description",
        "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/playlists/mapping/edit/Externallinkeditscreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README_XAPI.md"
        ],
        "commitId" : "f8c6162ae45911de824fd0bcba104cc48f3159ef",
        "timestamp" : 1776944264000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update README_XAPI.md\u000a",
        "date" : "2026-04-23 15:37:44 +0400",
        "id" : "f8c6162ae45911de824fd0bcba104cc48f3159ef",
        "msg" : "Update README_XAPI.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_XAPI.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README_XAPI.md"
        ],
        "commitId" : "27da11553a5421f318ef4a53a4d1048a91eb4938",
        "timestamp" : 1776944356000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix contextactivities typo on README_XAPI.md\u000a",
        "date" : "2026-04-23 15:39:16 +0400",
        "id" : "27da11553a5421f318ef4a53a4d1048a91eb4938",
        "msg" : "Fix contextactivities typo on README_XAPI.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_XAPI.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README_XAPI.md"
        ],
        "commitId" : "19e11b86ff46af4010001a3eff5b27bee6c59351",
        "timestamp" : 1776945541000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix contextactivities typo on README_XAPI.md\u000a",
        "date" : "2026-04-23 15:59:01 +0400",
        "id" : "19e11b86ff46af4010001a3eff5b27bee6c59351",
        "msg" : "Fix contextactivities typo on README_XAPI.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_XAPI.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "09df43e8889d532745b48ff9d7dec2511a38c273",
        "timestamp" : 1776955821000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flow `002_user_add_apps_playlists_bookmarks_test.yaml` to include additional visibility assertions for lessons and sections within the Grade 1 playlist.\u000a",
        "date" : "2026-04-23 18:50:21 +0400",
        "id" : "09df43e8889d532745b48ff9d7dec2511a38c273",
        "msg" : "Update Maestro flow `002_user_add_apps_playlists_bookmarks_test.yaml` to include additional visibility assertions for lessons and sections within the Grade 1 playlist.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
        ],
        "commitId" : "072880fa5a3d46fc7db08dc2477a4c1a0edef32a",
        "timestamp" : 1776965542000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "description fix\u000a",
        "date" : "2026-04-23 23:02:22 +0530",
        "id" : "072880fa5a3d46fc7db08dc2477a4c1a0edef32a",
        "msg" : "description fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
        ],
        "commitId" : "d8c8adee0f36837299f3bce6a28abbedefacc837",
        "timestamp" : 1777187899000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update XapiStatementDataSourceDb: improve handling of sort. Remove obsolete fields from XapiStatementEntity. Update Xapi statement query to avoid fetching exact json for canonical and exact queries.\u000a",
        "date" : "2026-04-26 11:18:19 +0400",
        "id" : "d8c8adee0f36837299f3bce6a28abbedefacc837",
        "msg" : "Update XapiStatementDataSourceDb: improve handling of sort. Remove obsolete fields from XapiStatementEntity. Update Xapi statement query to avoid fetching exact json for canonical and exact queries.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt"
        ],
        "commitId" : "437736ca178e563cb7579c56e467edb6e14728f5",
        "timestamp" : 1777189554000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update XapiStatementDataSource to test statements retrieved using both id and exact format.\u000a",
        "date" : "2026-04-26 11:45:54 +0400",
        "id" : "437736ca178e563cb7579c56e467edb6e14728f5",
        "msg" : "Update XapiStatementDataSource to test statements retrieved using both id and exact format.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntity.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiGroupMemberActorJoinDao.kt"
        ],
        "commitId" : "952421dbd1ea142d4abf0c2dfc9134f8aecda72c",
        "timestamp" : 1777194199000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add support for id only format xapi statement results.\u000a",
        "date" : "2026-04-26 13:03:19 +0400",
        "id" : "952421dbd1ea142d4abf0c2dfc9134f8aecda72c",
        "msg" : "Add support for id only format xapi statement results.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiGroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiException.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAttachment.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContextActivities.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAgent.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivityDefinition.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt",
          "respect-lib-xapi-model/.gitignore",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActor.kt",
          "respect-lib-xapi-model/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAttachment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiResult.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt",
          "respect-lib-xapi-model/README.md",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContext.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActivityExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt",
          "respect-datalayer/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiException.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiState.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiObjectType.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt",
          "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt",
          "settings.gradle.kts",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiInteractionTypeEnum.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSourceLocal.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiState.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAccount.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt"
        ],
        "commitId" : "91b8a25775441f75a72b27e60d8c9e4b4b279248",
        "timestamp" : 1777205261000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move xAPI model into its own module.\u000a",
        "date" : "2026-04-26 16:07:41 +0400",
        "id" : "91b8a25775441f75a72b27e60d8c9e4b4b279248",
        "msg" : "Move xAPI model into its own module.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAttachment.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActivityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiObjectType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiInteractionTypeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAttachment.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivityDefinition.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAgent.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/XapiResponseHeaders.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/XapiRequestHeaders.kt"
        ],
        "commitId" : "455d2bf311c86cb16b2e04a6078e9242de401ec8",
        "timestamp" : 1777207800000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update implementation after refactoring statementdatasource to match the xAPI spec names.\u000a",
        "date" : "2026-04-26 16:50:00 +0400",
        "id" : "455d2bf311c86cb16b2e04a6078e9242de401ec8",
        "msg" : "Update implementation after refactoring statementdatasource to match the xAPI spec names.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/XapiResponseHeaders.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/XapiRequestHeaders.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-datalayer-http/build.gradle.kts",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementResourceRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt"
        ],
        "commitId" : "e6a02d3e843209bd448b370b5a4aa21e6e267463",
        "timestamp" : 1777210091000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Minor compilation fixes.\u000a",
        "date" : "2026-04-26 17:28:11 +0400",
        "id" : "e6a02d3e843209bd448b370b5a4aa21e6e267463",
        "msg" : "Minor compilation fixes.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementResourceRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README.md"
        ],
        "commitId" : "d69440b5f38c231f20596ad54b7bd1f4cabbbe84",
        "timestamp" : 1777274442000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update README.md\u000a\u000aUpdate README.md to clarify logging in as admin after adding school\u000a",
        "date" : "2026-04-27 11:20:42 +0400",
        "id" : "d69440b5f38c231f20596ad54b7bd1f4cabbbe84",
        "msg" : "Update README.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAttachment.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiInteractionTypeEnum.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAttachment.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContextActivities.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAgent.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiObjectType.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContext.kt",
          "respect-lib-xapi-model/.gitignore",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResponseHeaders.kt",
          "respect-lib-xapi-core/build.gradle.kts",
          "respect-lib-xapi-model/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsParamsExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiResult.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAccount.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolUrlHttpDataSourceExt.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiResult.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContextActivities.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt",
          "respect-lib-xapi-model/README.md",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt",
          "respect-lib-xapi-core/.gitignore",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiState.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt",
          "respect-server/build.gradle.kts",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContext.kt",
          "respect-datalayer/build.gradle.kts",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiException.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiState.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAgent.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiRequestHeaders.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiObjectType.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesBuilderExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/XapiResponseHeaders.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementsResourceLocal.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementResourceRoute.kt",
          "settings.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiInteractionTypeEnum.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/XapiRequestHeaders.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt",
          "respect-lib-xapi-core/README.md",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAccount.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiException.kt",
          "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt"
        ],
        "commitId" : "87d318afc6331984aae079c9c002027977a75c7f",
        "timestamp" : 1777279758000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor XapiStatementsResource to match spec as closely as possible\u000a",
        "date" : "2026-04-27 12:49:18 +0400",
        "id" : "87d318afc6331984aae079c9c002027977a75c7f",
        "msg" : "Refactor XapiStatementsResource to match spec as closely as possible",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiObjectType.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiObjectType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResponseHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementsResourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiInteractionTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAttachment.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolUrlHttpDataSourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/XapiRequestHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsParamsExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesBuilderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/XapiResponseHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAttachment.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementResourceRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiRequestHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiInteractionTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-model/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
        ],
        "commitId" : "b9b576d86598fcf470e28e0fa33d7c02f8ca511e",
        "timestamp" : 1777342911000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix metadata extraction\u000a",
        "date" : "2026-04-28 07:51:51 +0530",
        "id" : "b9b576d86598fcf470e28e0fa33d7c02f8ca511e",
        "msg" : "fix metadata extraction",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
        ],
        "commitId" : "8e373d583d388fd92933666de91d3c24756e14b4",
        "timestamp" : 1777383124000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix metadata extraction remove manual string amnipulation\u000a",
        "date" : "2026-04-28 19:02:04 +0530",
        "id" : "8e373d583d388fd92933666de91d3c24756e14b4",
        "msg" : "fix metadata extraction remove manual string amnipulation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
        ],
        "commitId" : "f162f0f676db8a098b2db18355faeaa3b89663e6",
        "timestamp" : 1777383842000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "documented the callbacks\u000a",
        "date" : "2026-04-28 19:14:02 +0530",
        "id" : "f162f0f676db8a098b2db18355faeaa3b89663e6",
        "msg" : "documented the callbacks",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
        ],
        "commitId" : "ab12e17d6fb941494cc297acebb0741e936cd42e",
        "timestamp" : 1777447717000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix\u000a",
        "date" : "2026-04-29 12:58:37 +0530",
        "id" : "ab12e17d6fb941494cc297acebb0741e936cd42e",
        "msg" : "fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
        ],
        "commitId" : "c39a6f4ea039705c4b63d44a56587ba71894f618",
        "timestamp" : 1777449932000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial draft of assignment xAPI recipe.\u000a",
        "date" : "2026-04-29 12:05:32 +0400",
        "id" : "c39a6f4ea039705c4b63d44a56587ba71894f618",
        "msg" : "Add initial draft of assignment xAPI recipe.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
        ],
        "commitId" : "89d26f87796216004352e6d682515a8f82cdddb8",
        "timestamp" : 1777451398000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update initial draft of assignment recipe.\u000a",
        "date" : "2026-04-29 12:29:58 +0400",
        "id" : "89d26f87796216004352e6d682515a8f82cdddb8",
        "msg" : "Update initial draft of assignment recipe.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
        ],
        "commitId" : "07173d8df0bc8f53c40e84eebec9ec8fc87c55f2",
        "timestamp" : 1777451529000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update initial draft of assignment recipe.\u000a",
        "date" : "2026-04-29 12:32:09 +0400",
        "id" : "07173d8df0bc8f53c40e84eebec9ec8fc87c55f2",
        "msg" : "Update initial draft of assignment recipe.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
        ],
        "commitId" : "bf4602c2063c02cc00dd7b5bc0ee78e8780399d0",
        "timestamp" : 1777451610000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update initial draft of assignment recipe.\u000a",
        "date" : "2026-04-29 12:33:30 +0400",
        "id" : "bf4602c2063c02cc00dd7b5bc0ee78e8780399d0",
        "msg" : "Update initial draft of assignment recipe.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentProgressEntityRow.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentResult.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "43b6cb8fbcbc058d044d5d3d66c2a704dfd4d02e",
        "timestamp" : 1777463582000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "update assignment deatil screen with dummy statement data\u000a",
        "date" : "2026-04-29 17:23:02 +0530",
        "id" : "43b6cb8fbcbc058d044d5d3d66c2a704dfd4d02e",
        "msg" : "update assignment deatil screen with dummy statement data",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentProgressEntityRow.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentProgressEntityRow.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentResult.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
        ],
        "commitId" : "40cbb03dca07c6b21f579efddf89dece07b4e7b1",
        "timestamp" : 1777477392000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "update assignment deatil screen with dummy statement data\u000a",
        "date" : "2026-04-29 21:13:12 +0530",
        "id" : "40cbb03dca07c6b21f579efddf89dece07b4e7b1",
        "msg" : "update assignment deatil screen with dummy statement data",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentProgressEntityRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/ExternalLinkEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/Externallinkeditviewmodel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/Externallinkeditscreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/ExternalLinkEditScreen.kt"
        ],
        "commitId" : "7015fb47922bc795afb65dd58ff13e5185e74b4b",
        "timestamp" : 1777518105000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "rename\u000a",
        "date" : "2026-04-30 08:31:45 +0530",
        "id" : "7015fb47922bc795afb65dd58ff13e5185e74b4b",
        "msg" : "rename",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/ExternalLinkEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/ExternalLinkEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/Externallinkeditviewmodel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/Externallinkeditscreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "INSTALL.md"
        ],
        "commitId" : "18fe79f83c8f8ba2dfb2d78ab7782930d7c2114a",
        "timestamp" : 1777536155000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Initial installatoin instructions for RESPECT server binary installation\u000a\u000aInitial installatoin instructions for RESPECT server binary installation\u000a",
        "date" : "2026-04-30 12:02:35 +0400",
        "id" : "18fe79f83c8f8ba2dfb2d78ab7782930d7c2114a",
        "msg" : "Initial installatoin instructions for RESPECT server binary installation",
        "paths" : [
          {
            "editType" : "add",
            "file" : "INSTALL.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/dist/systemd/respect-server.service",
          "INSTALL.md"
        ],
        "commitId" : "6b466c061a8f40a502185c9f650ef992155a88cc",
        "timestamp" : 1777537240000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add respect-server.service and update INSTALL.md\u000a",
        "date" : "2026-04-30 12:20:40 +0400",
        "id" : "6b466c061a8f40a502185c9f650ef992155a88cc",
        "msg" : "Add respect-server.service and update INSTALL.md",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-server/src/dist/systemd/respect-server.service"
          },
          {
            "editType" : "edit",
            "file" : "INSTALL.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "INSTALL.md"
        ],
        "commitId" : "8aa8a7446b0b0d821cf7fcb85aa5d4966f7db9b0",
        "timestamp" : 1777539382000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Make example IP address consistent on INSTALL.md\u000a",
        "date" : "2026-04-30 12:56:22 +0400",
        "id" : "8aa8a7446b0b0d821cf7fcb85aa5d4966f7db9b0",
        "msg" : "Make example IP address consistent on INSTALL.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "INSTALL.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentStatusFilter.kt"
        ],
        "commitId" : "3f460e93f3b2a4c08de5b62c82b0100def53266f",
        "timestamp" : 1777540955000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-04-30 14:52:35 +0530",
        "id" : "3f460e93f3b2a4c08de5b62c82b0100def53266f",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentStatusFilter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiDummyDataGenerator.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "d650248b0e30b135cd92a5257d0208d0716c7bc3",
        "timestamp" : 1777542771000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-04-30 15:22:51 +0530",
        "id" : "d650248b0e30b135cd92a5257d0208d0716c7bc3",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiDummyDataGenerator.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_PERMISSION_RECIPE.md"
        ],
        "commitId" : "b3662b26a804a553ca91f510fc75a52432ce2453",
        "timestamp" : 1777637132000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add work in progress permission recipe.\u000a",
        "date" : "2026-05-01 16:05:32 +0400",
        "id" : "b3662b26a804a553ca91f510fc75a52432ce2453",
        "msg" : "Add work in progress permission recipe.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/README_PERMISSION_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementsResourceLocal.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-repository/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
        ],
        "commitId" : "fcd2369fc6301c9c1890efab9db2e203e3be898b",
        "timestamp" : 1777648179000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress statement resource integration test.\u000a",
        "date" : "2026-05-01 19:09:39 +0400",
        "id" : "fcd2369fc6301c9c1890efab9db2e203e3be898b",
        "msg" : "Work in progress statement resource integration test.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementsResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
        ],
        "commitId" : "4f06422b2be810f880858e7d100eb97b84216644",
        "timestamp" : 1777743732000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update statement resource test to use flow instead of delay.\u000a",
        "date" : "2026-05-02 21:42:12 +0400",
        "id" : "4f06422b2be810f880858e7d100eb97b84216644",
        "msg" : "Update statement resource test to use flow instead of delay.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiTimes.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
        ],
        "commitId" : "f6174d62f529534bcf9be894c573a09a1c020be5",
        "timestamp" : 1777745342000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update Statement resource integration test to include get.\u000a",
        "date" : "2026-05-02 22:09:02 +0400",
        "id" : "f6174d62f529534bcf9be894c573a09a1c020be5",
        "msg" : "Update Statement resource integration test to include get.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiTimes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiAgentsResource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt",
          "respect-lib-xapi-core/README_CLASSGROUPS_RECIPE.md",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "5cf8624fd179493e159559d7899d70b278760347",
        "timestamp" : 1777797858000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update recipe for class groups.\u000a",
        "date" : "2026-05-03 12:44:18 +0400",
        "id" : "5cf8624fd179493e159559d7899d70b278760347",
        "msg" : "Update recipe for class groups.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/README_CLASSGROUPS_RECIPE.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiAgentsResource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/build.gradle.kts",
          "respect-lib-dataloadstate/.gitignore",
          "respect-lib-dataloadstate/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt",
          "respect-lib-xapi-core/build.gradle.kts",
          "settings.gradle.kts"
        ],
        "commitId" : "556d069686b097aa98da74870c9600b414f36c3b",
        "timestamp" : 1777877278000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update XapiActorDataSourceDb to fix compilation issue. Create new independent dataloadstate module.\u000a",
        "date" : "2026-05-04 10:47:58 +0400",
        "id" : "556d069686b097aa98da74870c9600b414f36c3b",
        "msg" : "Update XapiActorDataSourceDb to fix compilation issue. Create new independent dataloadstate module.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-dataloadstate/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-dataloadstate/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolConfigSettingDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/ExtendedDataSourceValidationHelper.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/AssignmentRoute.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasskeyDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/AssignmentDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerHeaders.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/PersonQrBadgeRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/passkeylist/PasskeyListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasskeyDataSource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolAppRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadParams.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerParams.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerHeaders.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ParametersExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasswordDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/IndicatorDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/shared/paging/OffsetLimitHttpPagingSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSource.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt",
          "respect-lib-dataloadstate/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadState.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/ExtendedDataSourceValidationHelperImpl.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/ClassRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/EnrollmentRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/DummySchoolConfigSettingsDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/IndicatorDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ReportDataSourceRepository.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ReportDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/detail/IndicatorDetailViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasswordDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectUserDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolAppDataSourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ReportDataSourceDb.kt"
        ],
        "commitId" : "3bcff8895551559ac562ca9a0b16a4e725a70de1",
        "timestamp" : 1777879477000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update XapiActorDataSourceDb to fix compilation issue. Create new independent dataloadstate module.\u000a",
        "date" : "2026-05-04 11:24:37 +0400",
        "id" : "3bcff8895551559ac562ca9a0b16a4e725a70de1",
        "msg" : "Update XapiActorDataSourceDb to fix compilation issue. Create new independent dataloadstate module.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/IndicatorDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolAppRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerHeaders.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/AssignmentDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasswordDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ParametersExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadParams.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/ClassRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.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/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ReportDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ReportDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasskeyDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerHeaders.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasskeyDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerParams.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/ExtendedDataSourceValidationHelperImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/shared/paging/OffsetLimitHttpPagingSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-dataloadstate/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/AssignmentRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.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/person/passkeylist/PasskeyListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolConfigSettingDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/DummySchoolConfigSettingsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/IndicatorDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasswordDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/detail/IndicatorDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/EnrollmentRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ReportDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/PersonQrBadgeRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/ExtendedDataSourceValidationHelper.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
        ],
        "commitId" : "4cdd8bb7fd08a8151c57499618fdd03b583f0203",
        "timestamp" : 1777879866000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove obsolete GetStatementsRequest\u000a",
        "date" : "2026-05-04 11:31:06 +0400",
        "id" : "4cdd8bb7fd08a8151c57499618fdd03b583f0203",
        "msg" : "Remove obsolete GetStatementsRequest",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
        ],
        "commitId" : "b6deb7dbba4f920d29abd18aa2726f023fb819a2",
        "timestamp" : 1777882550000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add support for flow based return on XapiStatementResource\u000a",
        "date" : "2026-05-04 12:15:50 +0400",
        "id" : "b6deb7dbba4f920d29abd18aa2726f023fb819a2",
        "msg" : "Add support for flow based return on XapiStatementResource",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "7611405f5ab17215d4d4f39112c9dd9497b58c4c",
        "timestamp" : 1777887049000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "resolve conflict\u000a",
        "date" : "2026-05-04 15:00:49 +0530",
        "id" : "7611405f5ab17215d4d4f39112c9dd9497b58c4c",
        "msg" : "resolve conflict",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml"
        ],
        "commitId" : "9c3cb8fc2d01870b368bca9c44de71dc651d9ed2",
        "timestamp" : 1777915930000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add query intent filter\u000a",
        "date" : "2026-05-04 21:32:10 +0400",
        "id" : "9c3cb8fc2d01870b368bca9c44de71dc651d9ed2",
        "msg" : "Add query intent filter",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "gradle/libs.versions.toml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt",
          "respect-lib-xapi-nanohttpd/.gitignore",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt",
          "respect-lib-xapi-nanohttpd/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt",
          "settings.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt"
        ],
        "commitId" : "2826c4ba92af36c30d981499671efe3768192b5b",
        "timestamp" : 1777923705000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress adding embedded Nanohttpd based xapi server.\u000a",
        "date" : "2026-05-04 23:41:45 +0400",
        "id" : "2826c4ba92af36c30d981499671efe3768192b5b",
        "msg" : "Work in progress adding embedded Nanohttpd based xapi server.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-nanohttpd/.gitignore"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.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/view/enrollment/edit/EnrollmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
        ],
        "commitId" : "55fc5a2a5a7ef6977cac887395bca0303f5030a8",
        "timestamp" : 1777960490000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "update getAssignmentResult on repository\u000a",
        "date" : "2026-05-05 11:24:50 +0530",
        "id" : "55fc5a2a5a7ef6977cac887395bca0303f5030a8",
        "msg" : "update getAssignmentResult on repository",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
        ],
        "commitId" : "dfa5028551ea04084b57b3a7891243a77d8b42f4",
        "timestamp" : 1777966869000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-05 13:11:09 +0530",
        "id" : "dfa5028551ea04084b57b3a7891243a77d8b42f4",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt",
          "respect-lib-shared/build.gradle.kts"
        ],
        "commitId" : "901a5b08da74d631ae8e8db83adf9ae8d0383e4a",
        "timestamp" : 1777973593000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.\u000a",
        "date" : "2026-05-05 13:33:13 +0400",
        "id" : "901a5b08da74d631ae8e8db83adf9ae8d0383e4a",
        "msg" : "Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js"
        ],
        "commitId" : "56c69cf8141536edd9ca3a490e7a4d847406e073",
        "timestamp" : 1777982700000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.\u000a",
        "date" : "2026-05-05 16:05:00 +0400",
        "id" : "56c69cf8141536edd9ca3a490e7a4d847406e073",
        "msg" : "Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/README.md",
          ".maestro/flow-summary/001_002_add_user_direct_test.md",
          "respect-test-end-to-end/test-description/001_003_login_using_school_link_test_description.md",
          "respect-test-end-to-end/test-description/002_browse_lessons_test_description.md",
          ".maestro/flow-summary/001_005_add_school_self_registration_test.md",
          ".maestro/flow-summary/002_browse_lessons_test.md",
          ".maestro/README.md",
          "respect-test-end-to-end/test-description/001_001_invite_using_invite_code_test_description.md",
          "respect-test-end-to-end/test-description/001_002_add_user_direct_test_description.md",
          ".maestro/flow-summary/001_001_invite_users_using_qr_code_or_link_test.md",
          "respect-test-end-to-end/test-description/001_005_add_school_self_registration_test_description.md",
          ".maestro/flow-summary/001_003_login_using_school_link_test.md",
          "respect-test-end-to-end/test-description/003_teacher_user_assigns_assignment_to_a_class_test_description.md",
          "respect-test-end-to-end/test-description/006_user_signup_using_passkey_test_description.md",
          ".maestro/flow-summary/003_admin_user_assigns_assignment_to_a_class_test.md"
        ],
        "commitId" : "507c9fb296572ecad9badcd988357fc80e9ab3c1",
        "timestamp" : 1778061233000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add Maestro flow summary documentation for core features.\u000a",
        "date" : "2026-05-06 13:53:53 +0400",
        "id" : "507c9fb296572ecad9badcd988357fc80e9ab3c1",
        "msg" : "Add Maestro flow summary documentation for core features.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flow-summary/001_002_add_user_direct_test.md"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flow-summary/001_003_login_using_school_link_test.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/test-description/001_005_add_school_self_registration_test_description.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/test-description/001_001_invite_using_invite_code_test_description.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/test-description/002_browse_lessons_test_description.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/test-description/001_002_add_user_direct_test_description.md"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flow-summary/003_admin_user_assigns_assignment_to_a_class_test.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/test-description/003_teacher_user_assigns_assignment_to_a_class_test_description.md"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flow-summary/001_001_invite_users_using_qr_code_or_link_test.md"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flow-summary/002_browse_lessons_test.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/test-description/001_003_login_using_school_link_test_description.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/test-description/006_user_signup_using_passkey_test_description.md"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flow-summary/001_005_add_school_self_registration_test.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md"
        ],
        "commitId" : "426ab425c9387e68a05bb151d74e49906521e977",
        "timestamp" : 1778061421000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `.maestro/README.md` formatting.\u000a",
        "date" : "2026-05-06 13:57:01 +0400",
        "id" : "426ab425c9387e68a05bb151d74e49906521e977",
        "msg" : "Update `.maestro/README.md` formatting.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md",
          ".maestro/flow-summary/001_002_add_user_direct_test.md",
          ".maestro/flow-summary/001_001_invite_users_using_qr_code_or_link_test.md",
          ".maestro/flow-summary/001_003_login_using_school_link_test.md",
          ".maestro/flow-summary/001_005_add_school_self_registration_test.md",
          ".maestro/flow-summary/002_browse_lessons_test.md",
          ".maestro/flow-summary/003_admin_user_assigns_assignment_to_a_class_test.md"
        ],
        "commitId" : "df4bd8e47a102ff17962776fc91467fe9276b59f",
        "timestamp" : 1778063302000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Refactor Maestro test documentation by consolidating flow summaries.\u000a",
        "date" : "2026-05-06 14:28:22 +0400",
        "id" : "df4bd8e47a102ff17962776fc91467fe9276b59f",
        "msg" : "Refactor Maestro test documentation by consolidating flow summaries.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flow-summary/001_003_login_using_school_link_test.md"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flow-summary/003_admin_user_assigns_assignment_to_a_class_test.md"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flow-summary/001_002_add_user_direct_test.md"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flow-summary/001_005_add_school_self_registration_test.md"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flow-summary/002_browse_lessons_test.md"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flow-summary/001_001_invite_users_using_qr_code_or_link_test.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md"
        ],
        "commitId" : "c1bfccdbe55284ca41957899c8bb93a7f3fdddad",
        "timestamp" : 1778063496000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro README.md to use numbered lists for test flow descriptions.\u000a",
        "date" : "2026-05-06 14:31:36 +0400",
        "id" : "c1bfccdbe55284ca41957899c8bb93a7f3fdddad",
        "msg" : "Update Maestro README.md to use numbered lists for test flow descriptions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md"
        ],
        "commitId" : "efb7a28407916d1ed6c4a7ae740a0426c4cce9a1",
        "timestamp" : 1778067487000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro README with detailed steps for user management and school registration test flows.\u000a",
        "date" : "2026-05-06 15:38:07 +0400",
        "id" : "efb7a28407916d1ed6c4a7ae740a0426c4cce9a1",
        "msg" : "Update Maestro README with detailed steps for user management and school registration test flows.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCaseImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt"
        ],
        "commitId" : "67d616e77479b2ecf04a181441330e602a1cb6b7",
        "timestamp" : 1778091684000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change PERSON_ADMIN_WRITE flag to an explicit permission. Using a value that was not represented by a single 2^x value resulted in errors in the permission check queries not working as expected.\u000a\u000aPermission check queries were using a binary and, then checking the result is greater than zero. This is fine when checking for a 2^x value, but not others.\u000a",
        "date" : "2026-05-06 22:21:24 +0400",
        "id" : "67d616e77479b2ecf04a181441330e602a1cb6b7",
        "msg" : "Change PERSON_ADMIN_WRITE flag to an explicit permission. Using a value that was not represented by a single 2^x value resulted in errors in the permission check queries not working as expected.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCaseImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClassPendingPersonListItem.kt"
        ],
        "commitId" : "93e8ed5b9f0b2414facb4a76d63f604d64d9a31b",
        "timestamp" : 1778094911000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix for issue #231.\u000a\u000aWhen a teacher or any other is being approved, this requires permission to add the given user role. Teachers by default have permission to add students and parents, but not other teachers. They should therefor not see the option to approve a teacher registration (only admin can do that).\u000a",
        "date" : "2026-05-06 23:15:11 +0400",
        "id" : "93e8ed5b9f0b2414facb4a76d63f604d64d9a31b",
        "msg" : "Fix for issue #231.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClassPendingPersonListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
        ],
        "commitId" : "a500ce454fb2ba95f7643cb028b8cfd7520e0dab",
        "timestamp" : 1778136509000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix mistake on xapi statement query: using incorrect verb field\u000a",
        "date" : "2026-05-07 10:48:29 +0400",
        "id" : "a500ce454fb2ba95f7643cb028b8cfd7520e0dab",
        "msg" : "Fix mistake on xapi statement query: using incorrect verb field",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "df8580a5381a93f08e6dbc95896003ad16b9888b",
        "timestamp" : 1778136729000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix mistake on xapi resource: wrong parameter for until.\u000a",
        "date" : "2026-05-07 10:52:09 +0400",
        "id" : "df8580a5381a93f08e6dbc95896003ad16b9888b",
        "msg" : "Fix mistake on xapi resource: wrong parameter for until.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt"
        ],
        "commitId" : "de6e9a83bbf380cc39f10da49e4bdca96d65a1fc",
        "timestamp" : 1778144240000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Issue #231\u000a\u000aFix logic error that prevented handling admin approval for teacher joining class. Student joining class was working as expected.\u000a",
        "date" : "2026-05-07 12:57:20 +0400",
        "id" : "de6e9a83bbf380cc39f10da49e4bdca96d65a1fc",
        "msg" : "Issue #231",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentMapper.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "52ce3efaad0bc9412197c2eca73e6a7820efe1c0",
        "timestamp" : 1778227172000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add Assignment xAPI Recipe in edi, list, deatil screen\u000a",
        "date" : "2026-05-08 13:29:32 +0530",
        "id" : "52ce3efaad0bc9412197c2eca73e6a7820efe1c0",
        "msg" : "add Assignment xAPI Recipe in edi, list, deatil screen",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentMapper.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows-disabled/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "69f813221401eb23ef0374d7ef62e1d649005926",
        "timestamp" : 1778252973000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Disable flow 003 until new xAPI based assignment branch is merged.\u000a",
        "date" : "2026-05-08 19:09:33 +0400",
        "id" : "69f813221401eb23ef0374d7ef62e1d649005926",
        "msg" : "Disable flow 003 until new xAPI based assignment branch is merged.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-disabled/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_PERMISSION_RECIPE.md"
        ],
        "commitId" : "4c50dfefc4af552e7a8914ff22a87baa5a6e0125",
        "timestamp" : 1778436234000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refine permission recipe to be folder based : simpler for queries, simpler to run on mobile/SQL, and suitable for folder based backends (e.g. Google Drive, NextCloud, etc).\u000a",
        "date" : "2026-05-10 22:03:54 +0400",
        "id" : "4c50dfefc4af552e7a8914ff22a87baa5a6e0125",
        "msg" : "Refine permission recipe to be folder based : simpler for queries, simpler to run on mobile/SQL, and suitable for folder based backends (e.g. Google Drive, NextCloud, etc).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_PERMISSION_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_PERMISSION_RECIPE.md"
        ],
        "commitId" : "fd821aaf134d6baa9a915c36fccfd80c49cfcbf6",
        "timestamp" : 1778491957000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add note on canonical updates to permission recipe.\u000a",
        "date" : "2026-05-11 13:32:37 +0400",
        "id" : "fd821aaf134d6baa9a915c36fccfd80c49cfcbf6",
        "msg" : "Add note on canonical updates to permission recipe.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_PERMISSION_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/username/checkusernameunique/CheckUsernameUniqueUseCaseServer.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/username/UsernameSuggestionUseCaseServer.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/createaccount/CreateAccountScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/username/checkusernameunique/CheckUsernameUniqueRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCaseClient.kt"
        ],
        "commitId" : "f57c392693352718885d4fc16cde4b3c71480fb5",
        "timestamp" : 1778499793000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Check username unique during invitation acceptance process (issue #232).\u000a",
        "date" : "2026-05-11 15:43:13 +0400",
        "id" : "f57c392693352718885d4fc16cde4b3c71480fb5",
        "msg" : "Check username unique during invitation acceptance process (issue #232).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/username/checkusernameunique/CheckUsernameUniqueUseCaseServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/createaccount/CreateAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/username/UsernameSuggestionUseCaseServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/username/checkusernameunique/CheckUsernameUniqueRoute.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
        ],
        "commitId" : "f80a98b0700c71f29761383f0d1825474d323c49",
        "timestamp" : 1778506659000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Apply username unique check to when admin sets a username manually.\u000a",
        "date" : "2026-05-11 17:37:39 +0400",
        "id" : "f80a98b0700c71f29761383f0d1825474d323c49",
        "msg" : "Apply username unique check to when admin sets a username manually.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
        ],
        "commitId" : "8f8b35910f242ef2abdf0ecc542df733be8f66dc",
        "timestamp" : 1778506944000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Correct visibility of floating action button on PersonListViewModel.kt and update to use common GetWritableRolesUseCase\u000a",
        "date" : "2026-05-11 17:42:24 +0400",
        "id" : "8f8b35910f242ef2abdf0ecc542df733be8f66dc",
        "msg" : "Correct visibility of floating action button on PersonListViewModel.kt and update to use common GetWritableRolesUseCase",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "365ec1fab02c70ecace2c5b3843272cab7224de9",
        "timestamp" : 1778564953000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-12 11:19:13 +0530",
        "id" : "365ec1fab02c70ecace2c5b3843272cab7224de9",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonAdapters.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/composites/PersonListDetails.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt"
        ],
        "commitId" : "6252aff4599c9374493601a1ea8c1b0a520e2d37",
        "timestamp" : 1778568050000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Show role on PersonListScreen.\u000aWhen selecting people to add to class, filter by role (as per #237).\u000a",
        "date" : "2026-05-12 10:40:50 +0400",
        "id" : "6252aff4599c9374493601a1ea8c1b0a520e2d37",
        "msg" : "Show role on PersonListScreen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonAdapters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/composites/PersonListDetails.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.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-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "ab5a99a59234259c334be4a2fb2f86b32ba5f558",
        "timestamp" : 1778571262000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Show error snackbar when no valid link is found.\u000aFix handling of opening lessons from horizontal pager on app detail screen (Issue #229).\u000a",
        "date" : "2026-05-12 11:34:22 +0400",
        "id" : "ab5a99a59234259c334be4a2fb2f86b32ba5f558",
        "msg" : "Show error snackbar when no valid link is found.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.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-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateTimeField.kt"
        ],
        "commitId" : "a3ad308646f86af215e35299a44e2d6fb8a29738",
        "timestamp" : 1778576588000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version and change assignment label.\u000a",
        "date" : "2026-05-12 13:03:08 +0400",
        "id" : "a3ad308646f86af215e35299a44e2d6fb8a29738",
        "msg" : "Bump version and change assignment label.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateTimeField.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/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "b1f93cb7e0056227f44fbca69dc7a53f52ed2caf",
        "timestamp" : 1778590018000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Merge dev-xapi changes.\u000a",
        "date" : "2026-05-12 16:46:58 +0400",
        "id" : "b1f93cb7e0056227f44fbca69dc7a53f52ed2caf",
        "msg" : "Merge dev-xapi changes.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/create_account_for_class_member.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/school_user_login_flow.yaml"
        ],
        "commitId" : "969e552f4869629f538e5a6cacb8171e23010298",
        "timestamp" : 1778659539000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flows for assignment management and class member creation.\u000a",
        "date" : "2026-05-13 12:05:39 +0400",
        "id" : "969e552f4869629f538e5a6cacb8171e23010298",
        "msg" : "Update Maestro flows for assignment management and class member creation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/create_account_for_class_member.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/school_user_login_flow.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/AssignmentDataSourceLocal.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/AssignmentDataSource.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/AssignmentRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Assignment.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AssignmentAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "a6012b5710898e613ce6c879e3032ae3b2972bb8",
        "timestamp" : 1778660317000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "remove Assignmententity and related classes\u000a",
        "date" : "2026-05-13 13:48:37 +0530",
        "id" : "a6012b5710898e613ce6c879e3032ae3b2972bb8",
        "msg" : "remove Assignmententity and related classes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AssignmentAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/AssignmentRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/AssignmentDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Assignment.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/AssignmentDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "3df63fd057bfae4e5764e0451083fe49df50ea4e",
        "timestamp" : 1778661791000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Move `003_admin_user_assigns_assignment_to_a_class_test.yaml` to `pending-flows` and add an xAPI verification script.\u000a",
        "date" : "2026-05-13 12:43:11 +0400",
        "id" : "3df63fd057bfae4e5764e0451083fe49df50ea4e",
        "msg" : "Move `003_admin_user_assigns_assignment_to_a_class_test.yaml` to `pending-flows` and add an xAPI verification script.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt",
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "4513cf5f87165b746305c8498a57997e28a61f51",
        "timestamp" : 1778692885000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update terms/conditions to use .well-known path on school directory server.\u000aBump version.\u000a",
        "date" : "2026-05-13 21:21:25 +0400",
        "id" : "4513cf5f87165b746305c8498a57997e28a61f51",
        "msg" : "Update terms/conditions to use .well-known path on school directory server.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CODE_OF_CONDUCT.md"
        ],
        "commitId" : "230b80b2452d708b0978043e033e0a5826668285",
        "timestamp" : 1778743774000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Add guideline on AI-generated content submission\u000a\u000aAdd explicit guidelines against submission of AI slop\u000a",
        "date" : "2026-05-14 11:29:34 +0400",
        "id" : "230b80b2452d708b0978043e033e0a5826668285",
        "msg" : "Add guideline on AI-generated content submission",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CODE_OF_CONDUCT.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CODE_OF_CONDUCT.md"
        ],
        "commitId" : "e5a71f872211b1adc6692b881a207ff34a1d3de0",
        "timestamp" : 1778743821000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Clarify guidelines on submitting AI-generated content\u000a",
        "date" : "2026-05-14 11:30:21 +0400",
        "id" : "e5a71f872211b1adc6692b881a207ff34a1d3de0",
        "msg" : "Clarify guidelines on submitting AI-generated content",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CODE_OF_CONDUCT.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows-disabled/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "0a8724331537d9aaae4221f892a1b7853027aa57",
        "timestamp" : 1778744898000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro assignment flow.\u000a",
        "date" : "2026-05-14 11:48:18 +0400",
        "id" : "0a8724331537d9aaae4221f892a1b7853027aa57",
        "msg" : "Update Maestro assignment flow.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows-disabled/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "bf68c64ed5e3582d25ff213d68a9031873239975",
        "timestamp" : 1778746314000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-14 13:41:54 +0530",
        "id" : "bf68c64ed5e3582d25ff213d68a9031873239975",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt"
        ],
        "commitId" : "1b761b2d7f5431b5d5a5eaa8050c5a271e92a7fa",
        "timestamp" : 1778750991000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial xAPI embedded server implementation.\u000a\u000aAdd support for cross origin requests for embedded statements endpoint.\u000a Fix nanohttpd bodyAsBytes function\u000a Fix basic auth encoding/decoding\u000a",
        "date" : "2026-05-14 13:29:51 +0400",
        "id" : "1b761b2d7f5431b5d5a5eaa8050c5a271e92a7fa",
        "msg" : "Initial xAPI embedded server implementation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt"
        ],
        "commitId" : "1e990ff70a0085f5b22a53f3cf93da7cacc978ff",
        "timestamp" : 1778762633000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix ktor path for xapi statements resource.\u000a",
        "date" : "2026-05-14 16:43:53 +0400",
        "id" : "1e990ff70a0085f5b22a53f3cf93da7cacc978ff",
        "msg" : "Fix ktor path for xapi statements resource.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js"
        ],
        "commitId" : "846633c662e52445f3613caeed6ebfa5457d972d",
        "timestamp" : 1778768829000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial statement maker.\u000a",
        "date" : "2026-05-14 18:27:09 +0400",
        "id" : "846633c662e52445f3613caeed6ebfa5457d972d",
        "msg" : "Initial statement maker.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentFilter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/time/LocalDateExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentListScreenFilter.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "3afdd31994678bb1da6c23fbd84da0a49266650f",
        "timestamp" : 1778827194000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-15 12:09:54 +0530",
        "id" : "3afdd31994678bb1da6c23fbd84da0a49266650f",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentListScreenFilter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/time/LocalDateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentFilter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentMapper.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActor.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAttachment.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiException.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionTypeEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiState.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivityDefinition.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt"
        ],
        "commitId" : "64c87e114d36f3a1bd7c14c7be043200ab4c06ae",
        "timestamp" : 1778833101000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-15 13:48:21 +0530",
        "id" : "64c87e114d36f3a1bd7c14c7be043200ab4c06ae",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentMapper.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiInteractionTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActivityDefinition.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAttachment.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiObjectType.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/model/XapiException.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt"
        ],
        "commitId" : "2ed057dc5e2d1ed4c857181ceee908811663fd69",
        "timestamp" : 1778833699000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-15 13:58:19 +0530",
        "id" : "2ed057dc5e2d1ed4c857181ceee908811663fd69",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "2b7b83738976e155a70b17f7a718a934f6e9ea05",
        "timestamp" : 1778837333000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-15 14:58:53 +0530",
        "id" : "2b7b83738976e155a70b17f7a718a934f6e9ea05",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html"
        ],
        "commitId" : "1bc6aeeb9246345ab46c4839c4a5728d7e8d0e51",
        "timestamp" : 1778952646000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update statement maker to use a statement json from text area and actor from params.\u000aUpdate LaunchAppUseCase to accept an assignment activity id.\u000a",
        "date" : "2026-05-16 21:30:46 +0400",
        "id" : "1bc6aeeb9246345ab46c4839c4a5728d7e8d0e51",
        "msg" : "Update statement maker to use a statement json from text area and actor from params.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.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/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/script.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/audio.ogg",
          "respect-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/video.mp4",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png",
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/script.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/icon.png",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/cover.png",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/index.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/audio.ogg",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/video.mp4",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png"
        ],
        "commitId" : "30e70b9f21b72016986ca29770c01c87cd314d6a",
        "timestamp" : 1778955365000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update example app structure and naming.\u000a",
        "date" : "2026-05-16 22:16:05 +0400",
        "id" : "30e70b9f21b72016986ca29770c01c87cd314d6a",
        "msg" : "Update example app structure and naming.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/video.mp4"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/video.mp4"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/icon.png"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/script.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/script.js"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/audio.ogg"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/audio.ogg"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/cover.png"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html",
          "respect-datalayer-repository/log/respect-server.2026-05-04.0.log",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico",
          "respect-datalayer-repository/log/respect-server.2026-05-12.0.log",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt"
        ],
        "commitId" : "6187e85e6df49136f148542a2076e86061721555",
        "timestamp" : 1778956821000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add jstetris example.\u000a",
        "date" : "2026-05-16 22:40:21 +0400",
        "id" : "6187e85e6df49136f148542a2076e86061721555",
        "msg" : "Add jstetris example.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/log/respect-server.2026-05-04.0.log"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/log/respect-server.2026-05-12.0.log"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
        ],
        "commitId" : "62ccad8b6c976ed3de4ef7ac2ef6e8e401801ced",
        "timestamp" : 1779005615000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update LaunchAppUseCaseAndroid to handle launching native app if app with a verified app link is available.\u000a\u000aOtherwise fall back to using our own WebView Activity. Handle SDK30+ and pre-SDK30.\u000a",
        "date" : "2026-05-17 12:13:35 +0400",
        "id" : "62ccad8b6c976ed3de4ef7ac2ef6e8e401801ced",
        "msg" : "Update LaunchAppUseCaseAndroid to handle launching native app if app with a verified app link is available.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "c9c53997c97601c6ae6fcefb5c3be6229e17d946",
        "timestamp" : 1779014144000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress: add header xapi header fields\u000a",
        "date" : "2026-05-17 14:35:44 +0400",
        "id" : "c9c53997c97601c6ae6fcefb5c3be6229e17d946",
        "msg" : "Work in progress: add header xapi header fields",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "008215d71e69209d9c4fb0b24bc80ece11bbf289",
        "timestamp" : 1779040758000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version for xAPI preview\u000a",
        "date" : "2026-05-17 21:59:18 +0400",
        "id" : "008215d71e69209d9c4fb0b24bc80ece11bbf289",
        "msg" : "Bump version for xAPI preview",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiDummyDataGenerator.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "623ad6e0c3e42b540045210ef30a063d4f2593c7",
        "timestamp" : 1779087514000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "change assignment detail and edit screens to use XapiStatement instead of Assignment model\u000a",
        "date" : "2026-05-18 12:28:34 +0530",
        "id" : "623ad6e0c3e42b540045210ef30a063d4f2593c7",
        "msg" : "change assignment detail and edit screens to use XapiStatement instead of Assignment model",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiDummyDataGenerator.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
        ],
        "commitId" : "752caaf8214d94e8e6f5ec089405c5095c785dc7",
        "timestamp" : 1779101412000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Rename and document LaunchRequest properties.\u000a",
        "date" : "2026-05-18 14:50:12 +0400",
        "id" : "752caaf8214d94e8e6f5ec089405c5095c785dc7",
        "msg" : "Rename and document LaunchRequest properties.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.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/kotlin/world/respect/shared/navigation/AppRoutes.kt"
        ],
        "commitId" : "cf4a9f42b8e7f871329c51279c628fd59fd02757",
        "timestamp" : 1779104756000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Pass assignment activity id through learning unit detail to launch app use case.\u000a",
        "date" : "2026-05-18 15:45:56 +0400",
        "id" : "cf4a9f42b8e7f871329c51279c628fd59fd02757",
        "msg" : "Pass assignment activity id through learning unit detail to launch app use case.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.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/assignment/list/AssignmentListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "29863af27f444d06894eb613cd13372b707b9632",
        "timestamp" : 1779104933000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "resolve conflict\u000a",
        "date" : "2026-05-18 17:18:53 +0530",
        "id" : "29863af27f444d06894eb613cd13372b707b9632",
        "msg" : "resolve conflict",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-util/build.gradle.kts",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
        ],
        "commitId" : "50b45575b509674831d86091945b25b8e1275920",
        "timestamp" : 1779107470000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.\u000a",
        "date" : "2026-05-18 16:31:10 +0400",
        "id" : "50b45575b509674831d86091945b25b8e1275920",
        "msg" : "Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt"
        ],
        "commitId" : "175af5b50914120881058f512916023093144712",
        "timestamp" : 1779126551000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement initial support for statement voiding.\u000a",
        "date" : "2026-05-18 21:49:11 +0400",
        "id" : "175af5b50914120881058f512916023093144712",
        "msg" : "Implement initial support for statement voiding.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.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/domain/xapi/XapiAssignmentExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "b7d5f801e1473eff3d8117a25511c31abf9aa63c",
        "timestamp" : 1779172400000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Implement comments in AssignmentEdit\u000a",
        "date" : "2026-05-19 12:03:20 +0530",
        "id" : "b7d5f801e1473eff3d8117a25511c31abf9aa63c",
        "msg" : "Implement comments in AssignmentEdit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "3aa20d8ffde26f9bb3632fcf8c10ef12964e746c",
        "timestamp" : 1779174411000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-19 12:36:51 +0530",
        "id" : "3aa20d8ffde26f9bb3632fcf8c10ef12964e746c",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentMapper.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAssignmentConstants.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentSummaryEntityRow.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "4256f6c0e6f911e40f006b1d67b8b6cbc3ccd1d4",
        "timestamp" : 1779183317000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "improve list screen\u000a",
        "date" : "2026-05-19 15:05:17 +0530",
        "id" : "4256f6c0e6f911e40f006b1d67b8b6cbc3ccd1d4",
        "msg" : "improve list screen",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAssignmentConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentMapper.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentSummaryEntityRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
        ],
        "commitId" : "2461ae15db9cf79401696501c0e7289ca7861a80",
        "timestamp" : 1779184607000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-19 15:26:47 +0530",
        "id" : "2461ae15db9cf79401696501c0e7289ca7861a80",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiDummyDataGenerator.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "e6cf0fb45896ed5e4b576941685221e575ce053e",
        "timestamp" : 1779185021000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-19 15:33:41 +0530",
        "id" : "e6cf0fb45896ed5e4b576941685221e575ce053e",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiDummyDataGenerator.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CODING_GUIDELINES.md"
        ],
        "commitId" : "07731c383a17fb4a0b24db0e760868b6e3acd65d",
        "timestamp" : 1779185716000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Add guideline on understanding code before committing\u000a\u000aAdded guideline about understanding and explaining code before committing.\u000a",
        "date" : "2026-05-19 14:15:16 +0400",
        "id" : "07731c383a17fb4a0b24db0e760868b6e3acd65d",
        "msg" : "Add guideline on understanding code before committing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CODING_GUIDELINES.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CODING_GUIDELINES.md"
        ],
        "commitId" : "18b1fed572b7f8d297d29d9835b62ce9433d97f7",
        "timestamp" : 1779186074000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Clarify variable usage in coding guidelines\u000a\u000aAdded guideline to avoid using two variables for the same purpose.\u000a",
        "date" : "2026-05-19 14:21:14 +0400",
        "id" : "18b1fed572b7f8d297d29d9835b62ce9433d97f7",
        "msg" : "Clarify variable usage in coding guidelines",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CODING_GUIDELINES.md"
          }
        ]
      },
      {
        "_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/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
        ],
        "commitId" : "297b0cec37cbb6280d94c0ed3a0c570d7b57f3dc",
        "timestamp" : 1779189096000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-19 16:41:36 +0530",
        "id" : "297b0cec37cbb6280d94c0ed3a0c570d7b57f3dc",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.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/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "AGENTS.md"
        ],
        "commitId" : "5faf3ac280de655c20c419f87c90a788297e0488",
        "timestamp" : 1779190932000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update AGENTS.md to refer to CODING_GUIDELINES.md\u000a",
        "date" : "2026-05-19 15:42:12 +0400",
        "id" : "5faf3ac280de655c20c419f87c90a788297e0488",
        "msg" : "Update AGENTS.md to refer to CODING_GUIDELINES.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "AGENTS.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
        ],
        "commitId" : "64d0fe3181606d69c4e9c656c2d715d7dcb75bb9",
        "timestamp" : 1779191058000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-19 17:14:18 +0530",
        "id" : "64d0fe3181606d69c4e9c656c2d715d7dcb75bb9",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/admin_add_app.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "dcaf4ae4698798bc10915e41cd5dfdb26bdb88b6",
        "timestamp" : 1779193711000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro E2E test flows for assignment management and app browsing.\u000a",
        "date" : "2026-05-19 16:28:31 +0400",
        "id" : "dcaf4ae4698798bc10915e41cd5dfdb26bdb88b6",
        "msg" : "Update Maestro E2E test flows for assignment management and app browsing.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
        ],
        "commitId" : "4bce99f8b5a263f5406b28dde348f1ab84f2770e",
        "timestamp" : 1779194668000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-19 18:14:28 +0530",
        "id" : "4bce99f8b5a263f5406b28dde348f1ab84f2770e",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
        ],
        "commitId" : "ea8c54c5acecc86d7eb61dbdcc4b584e4c2b4b21",
        "timestamp" : 1779209190000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-19 22:16:30 +0530",
        "id" : "ea8c54c5acecc86d7eb61dbdcc4b584e4c2b4b21",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/AssignmentResultExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
        ],
        "commitId" : "ab0b104794b6ed600926a6401b05c2145eaf589b",
        "timestamp" : 1779256559000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "clean up AssignmentDetail,Edit screens and viewmodels\u000a",
        "date" : "2026-05-20 11:25:59 +0530",
        "id" : "ab0b104794b6ed600926a6401b05c2145eaf589b",
        "msg" : "clean up AssignmentDetail,Edit screens and viewmodels",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/AssignmentResultExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml"
        ],
        "commitId" : "d35ef225c00a65c9e306ed535860bf32d6ee3f62",
        "timestamp" : 1779257674000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Remove role selection from admin add teacher subflow.\u000a",
        "date" : "2026-05-20 10:14:34 +0400",
        "id" : "d35ef225c00a65c9e306ed535860bf32d6ee3f62",
        "msg" : "Remove role selection from admin add teacher subflow.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "9355d72978457e5038e954d5e7b4821cf169874d",
        "timestamp" : 1779258746000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix\u000a",
        "date" : "2026-05-20 12:02:26 +0530",
        "id" : "9355d72978457e5038e954d5e7b4821cf169874d",
        "msg" : "fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "b1e8e451172906b80b1f87db76c73b350e7b0238",
        "timestamp" : 1779259819000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix\u000a",
        "date" : "2026-05-20 12:20:19 +0530",
        "id" : "b1e8e451172906b80b1f87db76c73b350e7b0238",
        "msg" : "fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAssignmentConstants.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentSummaryEntityRow.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "38a8e9c183bc703790887dd24b24959f923d2a4f",
        "timestamp" : 1779262132000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "remove getAssignmentSummaries function\u000a",
        "date" : "2026-05-20 12:58:52 +0530",
        "id" : "38a8e9c183bc703790887dd24b24959f923d2a4f",
        "msg" : "remove getAssignmentSummaries function",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAssignmentConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentSummaryEntityRow.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentProgress.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiActorAndAssignmentProgress.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAssignmentResultRow.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiConstants.kt"
        ],
        "commitId" : "de2604a5d24886f12e1eb367420d2fadfc323bea",
        "timestamp" : 1779264668000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement initial version of getAssignmentProgress\u000a",
        "date" : "2026-05-20 12:11:08 +0400",
        "id" : "de2604a5d24886f12e1eb367420d2fadfc323bea",
        "msg" : "Implement initial version of getAssignmentProgress",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiActorAndAssignmentProgress.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAssignmentResultRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentProgress.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
        ],
        "commitId" : "b3ba8ae947519c38018fa2bd54fe200a41988274",
        "timestamp" : 1779265505000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-20 13:55:05 +0530",
        "id" : "b3ba8ae947519c38018fa2bd54fe200a41988274",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
        ],
        "commitId" : "5f10957c07e8780e0f37aa70d3caf1d0d0b707ea",
        "timestamp" : 1779268277000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add xapiAgent property to RespectSessionAndPerson\u000a",
        "date" : "2026-05-20 13:11:17 +0400",
        "id" : "5f10957c07e8780e0f37aa70d3caf1d0d0b707ea",
        "msg" : "Add xapiAgent property to RespectSessionAndPerson",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "f92dde841ae5e5e33596975a9dbd7dd865ae1ac8",
        "timestamp" : 1779268432000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "resolve conflicts\u000a",
        "date" : "2026-05-20 14:43:52 +0530",
        "id" : "f92dde841ae5e5e33596975a9dbd7dd865ae1ac8",
        "msg" : "resolve conflicts",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/build.gradle.kts",
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "7827d2b6a33d40da5aa71e650b7829df332a58d0",
        "timestamp" : 1779269222000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add Uuid opt-in to respect-app-compose and respect-lib-shared.\u000a",
        "date" : "2026-05-20 13:27:02 +0400",
        "id" : "7827d2b6a33d40da5aa71e650b7829df332a58d0",
        "msg" : "Add Uuid opt-in to respect-app-compose and respect-lib-shared.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ClazzExt.kt"
        ],
        "commitId" : "7a93561a33094be6b42cea2d81d6731ef31335a4",
        "timestamp" : 1779270302000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add studentsXapiGroup function\u000a",
        "date" : "2026-05-20 13:45:02 +0400",
        "id" : "7a93561a33094be6b42cea2d81d6731ef31335a4",
        "msg" : "Add studentsXapiGroup function",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ClazzExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_class_with_members.yaml",
          ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml",
          ".maestro/flows/subflows/admin_add_new_student_to_class.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "1a17fd5a6a683ac4c5b407663b9723ae30310b44",
        "timestamp" : 1779273769000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flows for assignment and class management to use dynamic class names.\u000a",
        "date" : "2026-05-20 14:42:49 +0400",
        "id" : "1a17fd5a6a683ac4c5b407663b9723ae30310b44",
        "msg" : "Update Maestro flows for assignment and class management to use dynamic class names.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class_with_members.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_new_student_to_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/admin_add_class_with_members.yaml"
        ],
        "commitId" : "4b36db7f8770355257894aa742542f8159510751",
        "timestamp" : 1779276856000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flows to reduce the number of students in the assignment test class.\u000a",
        "date" : "2026-05-20 15:34:16 +0400",
        "id" : "4b36db7f8770355257894aa742542f8159510751",
        "msg" : "Update Maestro flows to reduce the number of students in the assignment test class.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class_with_members.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
        ],
        "commitId" : "654d2ab04aa1a087dc6f33a0dff7f97dc2ab2527",
        "timestamp" : 1779277178000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Add xapiAgent property to RespectSessionAndPerson\u000a",
        "date" : "2026-05-20 17:09:38 +0530",
        "id" : "654d2ab04aa1a087dc6f33a0dff7f97dc2ab2527",
        "msg" : "Add xapiAgent property to RespectSessionAndPerson",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/build.gradle.kts",
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "02599de5e3e936c79767dd23b205fb086f3a0d02",
        "timestamp" : 1779277178000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Add Uuid opt-in to respect-app-compose and respect-lib-shared.\u000a",
        "date" : "2026-05-20 17:09:38 +0530",
        "id" : "02599de5e3e936c79767dd23b205fb086f3a0d02",
        "msg" : "Add Uuid opt-in to respect-app-compose and respect-lib-shared.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ClazzExt.kt"
        ],
        "commitId" : "e4e4f664c0ce6fcef528680817169d27173dc10e",
        "timestamp" : 1779277178000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Add studentsXapiGroup function\u000a",
        "date" : "2026-05-20 17:09:38 +0530",
        "id" : "e4e4f664c0ce6fcef528680817169d27173dc10e",
        "msg" : "Add studentsXapiGroup function",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ClazzExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "86a8af5e1037ff94b4a305fd776318aa5e4f68bc",
        "timestamp" : 1779277178000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-20 17:09:38 +0530",
        "id" : "86a8af5e1037ff94b4a305fd776318aa5e4f68bc",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
        ],
        "commitId" : "d8ebfba071ef18f13c3dfebe5d051b20c017fe33",
        "timestamp" : 1779280084000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "fix ui\u000a",
        "date" : "2026-05-20 17:58:04 +0530",
        "id" : "d8ebfba071ef18f13c3dfebe5d051b20c017fe33",
        "msg" : "fix ui",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
        ],
        "commitId" : "81f315480906410a35e706d6b9102c1e64076aaa",
        "timestamp" : 1779280934000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix XapiStatementEntityDao\u000a\u000aThe Xapi search query used Join XapiVerbEntity instead of left join. The XapiVerbEntity is only created when a verb has display properties.\u000a\u000aThis broke the query such that statements that used verbs that had no display properties would not be returned.\u000a",
        "date" : "2026-05-20 16:42:14 +0400",
        "id" : "81f315480906410a35e706d6b9102c1e64076aaa",
        "msg" : "Fix XapiStatementEntityDao",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
        ],
        "commitId" : "2e51e61093b64abdb3ce834e8f8166cc86dc2eca",
        "timestamp" : 1779280965000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix XapiStatementEntityDao\u000a\u000aThe Xapi search query used Join XapiVerbEntity instead of left join. The XapiVerbEntity is only created when a verb has display properties.\u000a\u000aThis broke the query such that statements that used verbs that had no display properties would not be returned.\u000a",
        "date" : "2026-05-20 16:42:45 +0400",
        "id" : "2e51e61093b64abdb3ce834e8f8166cc86dc2eca",
        "msg" : "Fix XapiStatementEntityDao",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt"
        ],
        "commitId" : "39869b40a763fc14c8e02094fe373e2b93accd8c",
        "timestamp" : 1779283007000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix XapiActorExt.distinctMerged function\u000a\u000aDistinctMerged function was not handling identified groups correctly: the returned group member was not null even if it was null in the input. This caused the ActorDataSource to incorrectly remove all group members.\u000a",
        "date" : "2026-05-20 17:16:47 +0400",
        "id" : "39869b40a763fc14c8e02094fe373e2b93accd8c",
        "msg" : "Fix XapiActorExt.distinctMerged function",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/pending-flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/pending-flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/pending-flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/pending-flows/002_browse_lessons_test.yaml",
          ".maestro/pending-flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "4318a7f11ca89d0d8b2bb7a559306e549484ed37",
        "timestamp" : 1779285877000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro test flows for assignments and move onboarding tests to pending.\u000a",
        "date" : "2026-05-20 18:04:37 +0400",
        "id" : "4318a7f11ca89d0d8b2bb7a559306e549484ed37",
        "msg" : "Update Maestro test flows for assignments and move onboarding tests to pending.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
        ],
        "commitId" : "04eeca8a1ead36288a2a1371e6a859324e142699",
        "timestamp" : 1779289874000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix mistake on XapiStatementEntityDao get assignment progress function: incorrect use of group.\u000a",
        "date" : "2026-05-20 19:11:14 +0400",
        "id" : "04eeca8a1ead36288a2a1371e6a859324e142699",
        "msg" : "Fix mistake on XapiStatementEntityDao get assignment progress function: incorrect use of group.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
        ],
        "commitId" : "b0a5249bb832437f50727267f631375474f1f233",
        "timestamp" : 1779295672000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Make assignment progress query test more rigorous.\u000a",
        "date" : "2026-05-20 20:47:52 +0400",
        "id" : "b0a5249bb832437f50727267f631375474f1f233",
        "msg" : "Make assignment progress query test more rigorous.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/enrollments/UpdateClazzStudentXapiGroupUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ClazzExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
        ],
        "commitId" : "7f5e45c59ec11eb38383a9d4c8e1b9ec84c576d6",
        "timestamp" : 1779301808000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement creation of an XapiGroup for students in a given class to enable assignments to work as expected.\u000a",
        "date" : "2026-05-20 22:30:08 +0400",
        "id" : "7f5e45c59ec11eb38383a9d4c8e1b9ec84c576d6",
        "msg" : "Implement creation of an XapiGroup for students in a given class to enable assignments to work as expected.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/enrollments/UpdateClazzStudentXapiGroupUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ClazzExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/enrollments/UpdateClazzStudentXapiGroupUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt"
        ],
        "commitId" : "434664b0333275004a2de82374a3d3d7da8a2b27",
        "timestamp" : 1779342265000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-21 11:14:25 +0530",
        "id" : "434664b0333275004a2de82374a3d3d7da8a2b27",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/enrollments/UpdateClazzStudentXapiGroupUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentLearningUnitRef.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md",
          "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-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AssignmentAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/LearningUnitSelection.kt"
        ],
        "commitId" : "5dfc66f1f8e4d4a53f4fab55d95ac9b67aab7768",
        "timestamp" : 1779347187000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove the app url argument from Learning Unit Detail screen. This should not be required.\u000a",
        "date" : "2026-05-21 11:06:27 +0400",
        "id" : "5dfc66f1f8e4d4a53f4fab55d95ac9b67aab7768",
        "msg" : "Remove the app url argument from Learning Unit Detail screen. This should not be required.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt"
          },
          {
            "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/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AssignmentAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/LearningUnitSelection.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentLearningUnitRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_EXTENSION_PUBLICATION.md"
        ],
        "commitId" : "138cb4671512350242d56a31048a7ff773c3bff0",
        "timestamp" : 1779349692000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add publication extension readme.\u000a",
        "date" : "2026-05-21 11:48:12 +0400",
        "id" : "138cb4671512350242d56a31048a7ff773c3bff0",
        "msg" : "Add publication extension readme.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/README_EXTENSION_PUBLICATION.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AssignmentAdapter.kt"
        ],
        "commitId" : "89c05a10ee3a1f4974a422d2a589b4bdb25fafaa",
        "timestamp" : 1779351530000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "fix assignment detail viewmodel\u000a",
        "date" : "2026-05-21 13:48:50 +0530",
        "id" : "89c05a10ee3a1f4974a422d2a589b4bdb25fafaa",
        "msg" : "fix assignment detail viewmodel",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AssignmentAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "f7bb93cba14c06c5dc5d1f30250ddc4012c9dcdd",
        "timestamp" : 1779352078000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-21 13:57:58 +0530",
        "id" : "f7bb93cba14c06c5dc5d1f30250ddc4012c9dcdd",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentStatusFilter.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
        ],
        "commitId" : "e5d2e3cc3457e37f87592552c008fb34494514b7",
        "timestamp" : 1779355084000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "remove  hardcoded English string literals\u000a",
        "date" : "2026-05-21 14:48:04 +0530",
        "id" : "e5d2e3cc3457e37f87592552c008fb34494514b7",
        "msg" : "remove  hardcoded English string literals",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentStatusFilter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "80dcc5b2099d97b8df484abc898fc3b602f9e7a5",
        "timestamp" : 1779355533000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-21 14:55:33 +0530",
        "id" : "80dcc5b2099d97b8df484abc898fc3b602f9e7a5",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_EXTENSION_PUBLICATION.md",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMapExt.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "2be5b5d4888c7fcb11c26e55025123cbd0251a70",
        "timestamp" : 1779357604000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add GetXapiActivityForPublicationUseCase and related readme.\u000a",
        "date" : "2026-05-21 14:00:04 +0400",
        "id" : "2be5b5d4888c7fcb11c26e55025123cbd0251a70",
        "msg" : "Add GetXapiActivityForPublicationUseCase and related readme.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMapExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/README_EXTENSION_PUBLICATION.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
        ],
        "commitId" : "af3beb9f6048b7c6c72f3d45ce998dd5574fab03",
        "timestamp" : 1779357814000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update assignment recipe example.\u000a",
        "date" : "2026-05-21 14:03:34 +0400",
        "id" : "af3beb9f6048b7c6c72f3d45ce998dd5574fab03",
        "msg" : "Update assignment recipe example.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "62e7c11d1b379d282a0204a7b3ba9c98c43f87f1",
        "timestamp" : 1779364853000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro assignment flow to uncomment and refine UI assertions.\u000a",
        "date" : "2026-05-21 16:00:53 +0400",
        "id" : "62e7c11d1b379d282a0204a7b3ba9c98c43f87f1",
        "msg" : "Update Maestro assignment flow to uncomment and refine UI assertions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-xapi-core/README.md",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "54437d7b066cca0b823e6d625f514f9087ccc0c0",
        "timestamp" : 1779367089000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update LaunchAppUseCase to set activity id argument as per GetXapiActivityForPublicationUseCase to ensure this is set consistently.\u000a\u000aUpdate XapiStatementsResourceRepository and README notes: always use exact format when fetching statements over the network from the repository.\u000a",
        "date" : "2026-05-21 16:38:09 +0400",
        "id" : "54437d7b066cca0b823e6d625f514f9087ccc0c0",
        "msg" : "Update LaunchAppUseCase to set activity id argument as per GetXapiActivityForPublicationUseCase to ensure this is set consistently.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/AssignmentAndProgress.kt"
        ],
        "commitId" : "6877db5592f1b065036490592ca28b9d66938446",
        "timestamp" : 1779367869000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change the return type of getAssignmentProgress so that the datasource can take care of loading the assignment statement.\u000a",
        "date" : "2026-05-21 16:51:09 +0400",
        "id" : "6877db5592f1b065036490592ca28b9d66938446",
        "msg" : "Change the return type of getAssignmentProgress so that the datasource can take care of loading the assignment statement.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/AssignmentAndProgress.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
        ],
        "commitId" : "23bcdba379c357ab8bd7b749eb89efa6badb4a6b",
        "timestamp" : 1779374043000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Chagne GetStatementParams.agent parameter type to XapiActor because the spec allows for this to be an identified group.\u000a",
        "date" : "2026-05-21 18:34:03 +0400",
        "id" : "23bcdba379c357ab8bd7b749eb89efa6badb4a6b",
        "msg" : "Chagne GetStatementParams.agent parameter type to XapiActor because the spec allows for this to be an identified group.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
        ],
        "commitId" : "8935009581c8277b6496aa79fb7ecd5c7e137350",
        "timestamp" : 1779378639000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Refactor assignment detail screen and edit screen\u000a",
        "date" : "2026-05-21 21:20:39 +0530",
        "id" : "8935009581c8277b6496aa79fb7ecd5c7e137350",
        "msg" : "Refactor assignment detail screen and edit screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.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/assignment/edit/AssignmentEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "bf3f5cb6f48ae8130ce5e697f89af74e5478d837",
        "timestamp" : 1779385122000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2026-05-21 23:08:42 +0530",
        "id" : "bf3f5cb6f48ae8130ce5e697f89af74e5478d837",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.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/assignment/detail/AssignmentDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
        ],
        "commitId" : "76f486c57bf8d9f2b7c94489aa23fe28b0312655",
        "timestamp" : 1779425435000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2026-05-22 10:20:35 +0530",
        "id" : "76f486c57bf8d9f2b7c94489aa23fe28b0312655",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "2cabdbcacc184bf2f4e3e83d7e48be82048561aa",
        "timestamp" : 1779428765000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2026-05-22 11:16:05 +0530",
        "id" : "2cabdbcacc184bf2f4e3e83d7e48be82048561aa",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "9221b67a0ca38a6f16d1d9ccbb54f333042f1ee7",
        "timestamp" : 1779431351000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor AssignmentDetailViewModel.\u000a",
        "date" : "2026-05-22 10:29:11 +0400",
        "id" : "9221b67a0ca38a6f16d1d9ccbb54f333042f1ee7",
        "msg" : "Refactor AssignmentDetailViewModel.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
        ],
        "commitId" : "c1848dc0dbd96148edd807f9eaf569a9cfd73872",
        "timestamp" : 1779432596000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fixes for AssignmentEditViewModel.kt\u000aa) fix faulty logic on loading most recent statement\u000ab) set random id for new statement\u000a",
        "date" : "2026-05-22 10:49:56 +0400",
        "id" : "c1848dc0dbd96148edd807f9eaf569a9cfd73872",
        "msg" : "Fixes for AssignmentEditViewModel.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt"
        ],
        "commitId" : "cd998c38325f2b282447a4287c9bdc4b21a76ca0",
        "timestamp" : 1779440779000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix serialization of XapiGroup: As per Xapi spec XapiGroup objectType must be group, must not be null. Must add custom serializer to ensure default property is still serialized.\u000a",
        "date" : "2026-05-22 13:06:19 +0400",
        "id" : "cd998c38325f2b282447a4287c9bdc4b21a76ca0",
        "msg" : "Fix serialization of XapiGroup: As per Xapi spec XapiGroup objectType must be group, must not be null. Must add custom serializer to ensure default property is still serialized.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.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/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt"
        ],
        "commitId" : "108ff03fc1ba00d90840dd61b7f0af39f8faba88",
        "timestamp" : 1779441407000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2026-05-22 14:46:47 +0530",
        "id" : "108ff03fc1ba00d90840dd61b7f0af39f8faba88",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
        ],
        "commitId" : "f4fd5c11da192995d9b3eb04cf24a93e5230a415",
        "timestamp" : 1779442085000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2026-05-22 14:58:05 +0530",
        "id" : "f4fd5c11da192995d9b3eb04cf24a93e5230a415",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
        ],
        "commitId" : "5e64863acd46d2a1b25cbebb45ce389222cc483e",
        "timestamp" : 1779442679000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix for XapiActorSerializer: had incorrect use of jsonPrimitive.content\u000a\u000aShould use contentOrNull\u000a",
        "date" : "2026-05-22 13:37:59 +0400",
        "id" : "5e64863acd46d2a1b25cbebb45ce389222cc483e",
        "msg" : "Fix for XapiActorSerializer: had incorrect use of jsonPrimitive.content",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
        ],
        "commitId" : "3b5d793672e5e1a1ce501eb1316519eed54c6b48",
        "timestamp" : 1779442786000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2026-05-22 15:09:46 +0530",
        "id" : "3b5d793672e5e1a1ce501eb1316519eed54c6b48",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsParamsExt.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt"
        ],
        "commitId" : "7f831b0feddc3b8b416814432a83c71c0fe2178a",
        "timestamp" : 1779452120000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Rework handling of xAPI parameters in http statements datasource\u000a",
        "date" : "2026-05-22 16:15:20 +0400",
        "id" : "7f831b0feddc3b8b416814432a83c71c0fe2178a",
        "msg" : "Rework handling of xAPI parameters in http statements datasource",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsParamsExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
        ],
        "commitId" : "840f84da0100022bfc14f482aaa2be050c346b9c",
        "timestamp" : 1779452403000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add missing verb parameter to XapiStatementsResourceHttp\u000a",
        "date" : "2026-05-22 16:20:03 +0400",
        "id" : "840f84da0100022bfc14f482aaa2be050c346b9c",
        "msg" : "Add missing verb parameter to XapiStatementsResourceHttp",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
        ],
        "commitId" : "82b3662caa7f607e4fb6f5771544dbe628ea8a8a",
        "timestamp" : 1779452652000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add missing since/until to fromParams in XapiStatementsResource\u000a",
        "date" : "2026-05-22 16:24:12 +0400",
        "id" : "82b3662caa7f607e4fb6f5771544dbe628ea8a8a",
        "msg" : "Add missing since/until to fromParams in XapiStatementsResource",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/externallink/ExternalLinkEditScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedEntity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/ExternalLinkEditViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/OpenExternalLinkUseCaseAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/externallink/ExternalLinkEditViewModel.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/ExternalLinkEditScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
        ],
        "commitId" : "8bcd3dcfe340b0015198508de3f87ccd903972bb",
        "timestamp" : 1779460935000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Clean up\u000a",
        "date" : "2026-05-22 20:12:15 +0530",
        "id" : "8bcd3dcfe340b0015198508de3f87ccd903972bb",
        "msg" : "Clean up",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/externallink/ExternalLinkEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/OpenExternalLinkUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/ExternalLinkEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/ExternalLinkEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/externallink/ExternalLinkEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
        ],
        "commitId" : "47a8dcbb6773358898f4ea11af4ab33c32f8cb78",
        "timestamp" : 1779461272000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Clean up\u000a",
        "date" : "2026-05-22 20:17:52 +0530",
        "id" : "47a8dcbb6773358898f4ea11af4ab33c32f8cb78",
        "msg" : "Clean up",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
        ],
        "commitId" : "25396cb239abba2df83a8a97d7cd1d4741731a71",
        "timestamp" : 1779467685000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change Person.asAgent to use only guid to avoid the actor id changing when username is first set.\u000aUpdate RespectSessionAndPerson to use Person.asXapiAgent\u000a",
        "date" : "2026-05-22 20:34:45 +0400",
        "id" : "25396cb239abba2df83a8a97d7cd1d4741731a71",
        "msg" : "Change Person.asAgent to use only guid to avoid the actor id changing when username is first set.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/pending-flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/pending-flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/pending-flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/pending-flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/pending-flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "be8ae34e1ba674171ddbc23e495c3e42d664a27f",
        "timestamp" : 1779507391000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro E2E test flows and move several tests from pending to active.\u000a",
        "date" : "2026-05-23 07:36:31 +0400",
        "id" : "be8ae34e1ba674171ddbc23e495c3e42d664a27f",
        "msg" : "Update Maestro E2E test flows and move several tests from pending to active.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/pending-flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/pending-flows/001_003_login_using_school_link_test.yaml",
          ".maestro/pending-flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/pending-flows/002_browse_lessons_test.yaml",
          ".maestro/pending-flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "0a45c804d95d51f4a45ab63049a742e5b0f1582d",
        "timestamp" : 1779513816000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "moved tests to pendifolder to focus on 003\u000a",
        "date" : "2026-05-23 09:23:36 +0400",
        "id" : "0a45c804d95d51f4a45ab63049a742e5b0f1582d",
        "msg" : "moved tests to pendifolder to focus on 003",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/pending-flows/001_003_login_using_school_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt",
          "respect-server/well-known/terms.html",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailHeaderCell.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentNameCell.kt"
        ],
        "commitId" : "e63472824064d448523e45a056bbc320787f0aa6",
        "timestamp" : 1779532250000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Cleanup of AssignmentDetailScreen Jetpack compose UI\u000a",
        "date" : "2026-05-23 14:30:50 +0400",
        "id" : "e63472824064d448523e45a056bbc320787f0aa6",
        "msg" : "Cleanup of AssignmentDetailScreen Jetpack compose UI",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentNameCell.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/well-known/terms.html"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailHeaderCell.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentProgress.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAssignmentResultRow.kt"
        ],
        "commitId" : "21a7ecd10f29c8c7e38b589e7079ff8b6407a865",
        "timestamp" : 1779533738000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Correct name on XapiAssignmentProgress and ResultRow from rawScore to scoreScaled.\u000a",
        "date" : "2026-05-23 14:55:38 +0400",
        "id" : "21a7ecd10f29c8c7e38b589e7079ff8b6407a865",
        "msg" : "Correct name on XapiAssignmentProgress and ResultRow from rawScore to scoreScaled.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAssignmentResultRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentProgress.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiContextExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentProgress.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
        ],
        "commitId" : "baab71ea8ac8c785c886e7bdc6cb7e9e0b6bd107",
        "timestamp" : 1779539985000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Cleanup of AssignmentDetailScreen work in progress.\u000a",
        "date" : "2026-05-23 16:39:45 +0400",
        "id" : "baab71ea8ac8c785c886e7bdc6cb7e9e0b6bd107",
        "msg" : "Cleanup of AssignmentDetailScreen work in progress.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiContextExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentProgress.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.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/assignment/detail/AssignmentDetailTaskHeader.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMap.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentNameCell.kt"
        ],
        "commitId" : "e421ec069755c66a87ea6927da234d7c74adf3e5",
        "timestamp" : 1779545756000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Cleanup of AssignmentDetailScreen work in progress.\u000a",
        "date" : "2026-05-23 18:15:56 +0400",
        "id" : "e421ec069755c66a87ea6927da234d7c74adf3e5",
        "msg" : "Cleanup of AssignmentDetailScreen work in progress.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentNameCell.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.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/assignment/detail/AssignmentDetailTaskHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMap.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentProgress.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentTaskProgress.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiActorAndAssignmentProgress.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMapExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt"
        ],
        "commitId" : "f4b44e4f713fc508e145f38fc84eb52d3e711812",
        "timestamp" : 1779554046000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Cleanup AssignmentDetailScreen when viewed as student.\u000a",
        "date" : "2026-05-23 20:34:06 +0400",
        "id" : "f4b44e4f713fc508e145f38fc84eb52d3e711812",
        "msg" : "Cleanup AssignmentDetailScreen when viewed as student.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentProgress.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentTaskProgress.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiActorAndAssignmentProgress.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMapExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMap.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentLearningUnitRef.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Assignment.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/langMapString.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt"
        ],
        "commitId" : "1673297bb71599976da03c33374af415ae425fc5",
        "timestamp" : 1779611178000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "AssignmentEdit UI tidyup in progress.\u000a",
        "date" : "2026-05-24 12:26:18 +0400",
        "id" : "1673297bb71599976da03c33374af415ae425fc5",
        "msg" : "AssignmentEdit UI tidyup in progress.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Assignment.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/langMapString.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentLearningUnitRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMap.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt"
        ],
        "commitId" : "c31cb7706fb96b925df52eeea3b6b0bf7cae05b8",
        "timestamp" : 1779630642000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "AssignmentEdit tidyup: use ListItme not our own mix of columns/rows.\u000a",
        "date" : "2026-05-24 17:50:42 +0400",
        "id" : "c31cb7706fb96b925df52eeea3b6b0bf7cae05b8",
        "msg" : "AssignmentEdit tidyup: use ListItme not our own mix of columns/rows.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "3ab4aa40863a01e4c8dbb74a23f4986dec7c4f5d",
        "timestamp" : 1779634442000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix mistake in XapiStatementsResourceDb that would set the wrong activity id on an empty result.\u000a",
        "date" : "2026-05-24 18:54:02 +0400",
        "id" : "3ab4aa40863a01e4c8dbb74a23f4986dec7c4f5d",
        "msg" : "Fix mistake in XapiStatementsResourceDb that would set the wrong activity id on an empty result.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "f65d6c83bd8907026f22148b415ae07b885fcc56",
        "timestamp" : 1779635116000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Merge fix to set xapi activity id correctly for empty assignment result.\u000a",
        "date" : "2026-05-24 19:05:16 +0400",
        "id" : "f65d6c83bd8907026f22148b415ae07b885fcc56",
        "msg" : "Merge fix to set xapi activity id correctly for empty assignment result.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "60fb477a35d8e3a3677aa0bd43d21434d841ec7a",
        "timestamp" : 1779635163000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Temporary test relaxation.\u000a",
        "date" : "2026-05-24 19:06:03 +0400",
        "id" : "60fb477a35d8e3a3677aa0bd43d21434d841ec7a",
        "msg" : "Temporary test relaxation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "74e819ac94fda405fe6cd605c23024ce34158da3",
        "timestamp" : 1779678544000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-05-25 08:39:04 +0530",
        "id" : "74e819ac94fda405fe6cd605c23024ce34158da3",
        "msg" : "refactor",
        "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-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-lib-xapi-core/build.gradle.kts"
        ],
        "commitId" : "f9ee19b5a2e22edd57850400017e70242ac0ad1f",
        "timestamp" : 1779679761000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update XapiStatementResourceDb to check if statement object is missing a required objectType value and throw exception if needed.\u000a\u000aUpdate XapiStatement serializer to use XapiStatementTransformingSerializer by default.\u000a\u000aUpdate XapiStatementRef to set objectType by default and ensure it is serialized.\u000a",
        "date" : "2026-05-25 07:29:21 +0400",
        "id" : "f9ee19b5a2e22edd57850400017e70242ac0ad1f",
        "msg" : "Update XapiStatementResourceDb to check if statement object is missing a required objectType value and throw exception if needed.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "fefd84413a90acd4da0844ce39ee4559d4bfa2a6",
        "timestamp" : 1779685294000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update getAssignmentProgress to handle order of activities and avoid potential to lose web pub manifest url if activity were to be updated.\u000a",
        "date" : "2026-05-25 09:01:34 +0400",
        "id" : "fefd84413a90acd4da0844ce39ee4559d4bfa2a6",
        "msg" : "Update getAssignmentProgress to handle order of activities and avoid potential to lose web pub manifest url if activity were to be updated.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "53c67d32ba22b9d476c53ddd77e15bfd6c76d1a5",
        "timestamp" : 1779687654000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Temporary test relaxations on filter chips and list screen.\u000a",
        "date" : "2026-05-25 09:40:54 +0400",
        "id" : "53c67d32ba22b9d476c53ddd77e15bfd6c76d1a5",
        "msg" : "Temporary test relaxations on filter chips and list screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/unit.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/icon.png",
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/index.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json"
        ],
        "commitId" : "2be6a86bf4572c04068c1bb2148a4b93dee9700d",
        "timestamp" : 1779694403000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add improved assignment demo result learning unit.\u000a",
        "date" : "2026-05-25 11:33:23 +0400",
        "id" : "2be6a86bf4572c04068c1bb2148a4b93dee9700d",
        "msg" : "Add improved assignment demo result learning unit.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/icon.png"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/index.html"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/unit.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/admin_add_class_with_members.yaml",
          ".maestro/flows/subflows/create_account_for_class_member.yaml"
        ],
        "commitId" : "4f091a702ee03f310ee29616984750867285a551",
        "timestamp" : 1779698784000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro E2E test flows for assignment management and class member creation.\u000a",
        "date" : "2026-05-25 12:46:24 +0400",
        "id" : "4f091a702ee03f310ee29616984750867285a551",
        "msg" : "Update Maestro E2E test flows for assignment management and class member creation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class_with_members.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/create_account_for_class_member.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "9bfff4188451c9a77c2c54ed67faf036bc81ec27",
        "timestamp" : 1779699047000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Remove redundant assertions and taps from the admin assignment flow.\u000a",
        "date" : "2026-05-25 12:50:47 +0400",
        "id" : "9bfff4188451c9a77c2c54ed67faf036bc81ec27",
        "msg" : "Remove redundant assertions and taps from the admin assignment flow.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js"
        ],
        "commitId" : "356092c9b2a23e02199be90b21b1a30601f9dff7",
        "timestamp" : 1779700652000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add fields to assignable unit completion.\u000a",
        "date" : "2026-05-25 13:17:32 +0400",
        "id" : "356092c9b2a23e02199be90b21b1a30601f9dff7",
        "msg" : "Add fields to assignable unit completion.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
        ],
        "commitId" : "c01cb418a27995f94628d86616e926983ee90c78",
        "timestamp" : 1779701250000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix AssignmentEditViewModel bug: timestamp was not being updated when saving, which led to undefined results when editing/updating.\u000a",
        "date" : "2026-05-25 13:27:30 +0400",
        "id" : "c01cb418a27995f94628d86616e926983ee90c78",
        "msg" : "Fix AssignmentEditViewModel bug: timestamp was not being updated when saving, which led to undefined results when editing/updating.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "9189c7b548339d3a1c1702d77d5af5cfbf670a31",
        "timestamp" : 1779702080000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Clean up `003_admin_user_assigns_assignment_to_a_class_test.yaml` Maestro flow.\u000a",
        "date" : "2026-05-25 13:41:20 +0400",
        "id" : "9189c7b548339d3a1c1702d77d5af5cfbf670a31",
        "msg" : "Clean up `003_admin_user_assigns_assignment_to_a_class_test.yaml` Maestro flow.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/admin_add_class_with_members.yaml"
        ],
        "commitId" : "995e33ef198e7bcef60a304b3a77c2b545ebc92a",
        "timestamp" : 1779702414000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro test flow for assignment management.\u000a",
        "date" : "2026-05-25 13:46:54 +0400",
        "id" : "995e33ef198e7bcef60a304b3a77c2b545ebc92a",
        "msg" : "Update Maestro test flow for assignment management.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class_with_members.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "bd884aa90fe07bd12ee8587e7129798025a05fa8",
        "timestamp" : 1779702738000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix total counts in filter chips on Assignment Detail in student mode.\u000a",
        "date" : "2026-05-25 13:52:18 +0400",
        "id" : "bd884aa90fe07bd12ee8587e7129798025a05fa8",
        "msg" : "Fix total counts in filter chips on Assignment Detail in student mode.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/externallink/ExternalLinkEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/share/PlaylistShareScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
        ],
        "commitId" : "9909a4904ad7702fa2837fd88b20eb14ebc8f9a4",
        "timestamp" : 1779702904000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Refactor screen\u000a",
        "date" : "2026-05-25 15:25:04 +0530",
        "id" : "9909a4904ad7702fa2837fd88b20eb14ebc8f9a4",
        "msg" : "Refactor screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/externallink/ExternalLinkEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/share/PlaylistShareScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
        ],
        "commitId" : "fb89527c916f5a01671cbc98447f2724c92565fa",
        "timestamp" : 1779709107000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix filtering of assignment result rows for a particular student.\u000a",
        "date" : "2026-05-25 15:38:27 +0400",
        "id" : "fb89527c916f5a01671cbc98447f2724c92565fa",
        "msg" : "Fix filtering of assignment result rows for a particular student.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "8dd5e594c4e034a1d1f89a54b756a4c5261788b3",
        "timestamp" : 1779711283000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro assignment flow test data and assertions.\u000a",
        "date" : "2026-05-25 16:14:43 +0400",
        "id" : "8dd5e594c4e034a1d1f89a54b756a4c5261788b3",
        "msg" : "Update Maestro assignment flow test data and assertions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "a5bf144a8757cb15e94c5fcb71435ec3c69e3a2c",
        "timestamp" : 1779712547000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flow for admin assignment to improve navigation and verification.\u000a",
        "date" : "2026-05-25 16:35:47 +0400",
        "id" : "a5bf144a8757cb15e94c5fcb71435ec3c69e3a2c",
        "msg" : "Update Maestro flow for admin assignment to improve navigation and verification.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html"
        ],
        "commitId" : "e7e3029891c752d0e60a2734bdd615b8715086b7",
        "timestamp" : 1779714941000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update statement maker demos to show text after statement submitted successfully.\u000a",
        "date" : "2026-05-25 17:15:41 +0400",
        "id" : "e7e3029891c752d0e60a2734bdd615b8715086b7",
        "msg" : "Update statement maker demos to show text after statement submitted successfully.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "1fac63bcbe3fbab55e86ecd049c0735fd62f90bf",
        "timestamp" : 1779715117000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add assertions for statement delivery confirmation in Maestro assignment flow.\u000a",
        "date" : "2026-05-25 17:18:37 +0400",
        "id" : "1fac63bcbe3fbab55e86ecd049c0735fd62f90bf",
        "msg" : "Add assertions for statement delivery confirmation in Maestro assignment flow.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js"
        ],
        "commitId" : "1428bb511b85d5ea2d8ffa16e43d664c662e18cd",
        "timestamp" : 1779717759000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update WebViewActivity to allow http/https mixed content for localhost.\u000aUpdate xapi scripts to add extra log.\u000a",
        "date" : "2026-05-25 18:02:39 +0400",
        "id" : "1428bb511b85d5ea2d8ffa16e43d664c662e18cd",
        "msg" : "Update WebViewActivity to allow http/https mixed content for localhost.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "f3cd6c68518ea5a7dbd2f61787a09f3eeb5d448a",
        "timestamp" : 1779720208000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix NanoHttpd handling of CORS headers.\u000a\u000aWhen https origin page made a call to non-https origin, the referer header was removed.\u000a",
        "date" : "2026-05-25 18:43:28 +0400",
        "id" : "f3cd6c68518ea5a7dbd2f61787a09f3eeb5d448a",
        "msg" : "Fix NanoHttpd handling of CORS headers.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/pending-flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/pending-flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/pending-flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/pending-flows/002_browse_lessons_test.yaml",
          ".maestro/pending-flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "b9ea50d3e20266337617914abac0864e65889712",
        "timestamp" : 1779721263000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Move Maestro E2E test flows from pending to active status.\u000a",
        "date" : "2026-05-25 19:01:03 +0400",
        "id" : "b9ea50d3e20266337617914abac0864e65889712",
        "msg" : "Move Maestro E2E test flows from pending to active status.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/pending-flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSummaryResultRow.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntryPropEnum.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt"
        ],
        "commitId" : "9b6cdde1c411a629b955612be06d742405b18cbd",
        "timestamp" : 1779737854000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress fixes for AssignmentList screen.\u000a\u000aImplement initial queries to get info direct from DB.\u000aAdd index on XapiStatementContextActivityJoin\u000aUpdate statement result query to include only statements which are linked to the given assignment using context join.\u000a",
        "date" : "2026-05-25 23:37:34 +0400",
        "id" : "9b6cdde1c411a629b955612be06d742405b18cbd",
        "msg" : "Work in progress fixes for AssignmentList screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntryPropEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSummaryResultRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAssignmentResultRow.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "23cdaaabd4457f82553c77f044238627080152e6",
        "timestamp" : 1779775581000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Look for both resultContext.completion and completed verb to check for assignment completion.\u000a\u000aUpdate assignment list repository function to use channelFlow.\u000a",
        "date" : "2026-05-26 10:06:21 +0400",
        "id" : "23cdaaabd4457f82553c77f044238627080152e6",
        "msg" : "Look for both resultContext.completion and completed verb to check for assignment completion.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAssignmentResultRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSummaryResultRow.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityLangMapEntryDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "7ac9ba006bbd1102ddaf5c2c46a3deff9a3e5175",
        "timestamp" : 1779789738000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fixes/improvements for assignment listing/summaries:\u000a\u000a1) Fix XapiActivityLangMapEntry canonical definition updates: this was not handling update scenarios where different entries were updated in different batches. Switch it to using a key hash.\u000a\u000a2) Update channel flow on repository getAssignmentListAsFlow to fetch the assignee XapiGroup saved statement as required.\u000a",
        "date" : "2026-05-26 14:02:18 +0400",
        "id" : "7ac9ba006bbd1102ddaf5c2c46a3deff9a3e5175",
        "msg" : "Fixes/improvements for assignment listing/summaries:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSummaryResultRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "e80ab0a2de41de32c54f8c68bc6ece28212fb923",
        "timestamp" : 1779803140000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fixes/improvements for assignments listing:\u000a\u000a1) Fix inconsistent assign verb id: was using both the adlnet and activitystreams verb resulting in a failing unit test.\u000a2) Implement query for assignment list to count number of students who completed all tasks in assignment (eg teacher view).\u000a3) Update xapi statement resource unit testing to check list query.\u000a",
        "date" : "2026-05-26 17:45:40 +0400",
        "id" : "e80ab0a2de41de32c54f8c68bc6ece28212fb923",
        "msg" : "Fixes/improvements for assignments listing:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
        ],
        "commitId" : "fee233988fd787e9c795e311ffc5b92850c3ea28",
        "timestamp" : 1779815825000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix query checking number of students who completed assignment for list summary screen. Update XapiStatementsResourceRepository to load all completed and assign verb statements are loaded.\u000a",
        "date" : "2026-05-26 21:17:05 +0400",
        "id" : "fee233988fd787e9c795e311ffc5b92850c3ea28",
        "msg" : "Fix query checking number of students who completed assignment for list summary screen. Update XapiStatementsResourceRepository to load all completed and assign verb statements are loaded.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt"
        ],
        "commitId" : "81f0203f813740162b53652c6bafada243e7727d",
        "timestamp" : 1779816466000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Tighten up assignment list query to check for use of the assignment recipe.\u000a",
        "date" : "2026-05-26 21:27:46 +0400",
        "id" : "81f0203f813740162b53652c6bafada243e7727d",
        "msg" : "Tighten up assignment list query to check for use of the assignment recipe.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSummaryResultRow.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt"
        ],
        "commitId" : "7a876b4bdfae2da4b42f58d3579f014e65ebacb2",
        "timestamp" : 1779820157000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add average score to student assignment list results.\u000a",
        "date" : "2026-05-26 22:29:17 +0400",
        "id" : "7a876b4bdfae2da4b42f58d3579f014e65ebacb2",
        "msg" : "Add average score to student assignment list results.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSummaryResultRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows-pending/001_005_add_school_self_registration_test.yaml"
        ],
        "commitId" : "7c0488b4aa583bec1837b6b7bdd43e0d3fc38897",
        "timestamp" : 1779862909000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move add school maestro test to pending flows: this is being disabled anyhow\u000a",
        "date" : "2026-05-27 10:21:49 +0400",
        "id" : "7c0488b4aa583bec1837b6b7bdd43e0d3fc38897",
        "msg" : "Move add school maestro test to pending flows: this is being disabled anyhow",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_005_add_school_self_registration_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectEmptyListComponent.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
        ],
        "commitId" : "fde89bedc72b3d20acd920d547aaabbb8a04f223",
        "timestamp" : 1779867775000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Put in empty state message for assignment and class list screens.\u000a",
        "date" : "2026-05-27 11:42:55 +0400",
        "id" : "fde89bedc72b3d20acd920d547aaabbb8a04f223",
        "msg" : "Put in empty state message for assignment and class list screens.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.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/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectEmptyListComponent.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiConflictException.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiException.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
        ],
        "commitId" : "7ba5492d871721282c05f75991b7cbc889f90628",
        "timestamp" : 1779869735000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Block statement submission with the same id.\u000a",
        "date" : "2026-05-27 12:15:35 +0400",
        "id" : "7ba5492d871721282c05f75991b7cbc889f90628",
        "msg" : "Block statement submission with the same id.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiConflictException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiRequire.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
        ],
        "commitId" : "dfa5ee0e28b1bc20e03bbae1e95d0efbe1d8766d",
        "timestamp" : 1779870660000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add additional xapi statement validations.\u000a",
        "date" : "2026-05-27 12:31:00 +0400",
        "id" : "dfa5ee0e28b1bc20e03bbae1e95d0efbe1d8766d",
        "msg" : "Add additional xapi statement validations.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiRequire.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "4f6adda2dd8f01cfe29de527d20d28a99e52ac03",
        "timestamp" : 1779875346000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove visibility assertions for removed filter chips on assignment list screen.\u000a",
        "date" : "2026-05-27 13:49:06 +0400",
        "id" : "4f6adda2dd8f01cfe29de527d20d28a99e52ac03",
        "msg" : "Remove visibility assertions for removed filter chips on assignment list screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt"
        ],
        "commitId" : "28a45645f6f31e5c237788590d5026763a0e5648",
        "timestamp" : 1779877477000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add database migration for Xapi tables.\u000a",
        "date" : "2026-05-27 14:24:37 +0400",
        "id" : "28a45645f6f31e5c237788590d5026763a0e5648",
        "msg" : "Add database migration for Xapi tables.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
        ],
        "commitId" : "3f7a01614605e335c435e72d037b0bec12e00088",
        "timestamp" : 1779878677000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial xapi statement write permission check.\u000a",
        "date" : "2026-05-27 14:44:37 +0400",
        "id" : "3f7a01614605e335c435e72d037b0bec12e00088",
        "msg" : "Add initial xapi statement write permission check.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
        ],
        "commitId" : "678990c5e7ea1e400efbabd5acac96f569e3b1fb",
        "timestamp" : 1779886413000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add Xapi read permission checks.\u000a",
        "date" : "2026-05-27 16:53:33 +0400",
        "id" : "678990c5e7ea1e400efbabd5acac96f569e3b1fb",
        "msg" : "Add Xapi read permission checks.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/14.json",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiSessionEntity.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "3828f18889db89a88748334ed64d31ccd33c343c",
        "timestamp" : 1779891771000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement auth user enforcement for Nanohttpd.\u000a",
        "date" : "2026-05-27 18:22:51 +0400",
        "id" : "3828f18889db89a88748334ed64d31ccd33c343c",
        "msg" : "Implement auth user enforcement for Nanohttpd.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/14.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiSessionEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt"
        ],
        "commitId" : "8f1101ea6486d52ee87808ad5431297057581938",
        "timestamp" : 1779893950000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Hide assignments when logged in as parent.\u000a",
        "date" : "2026-05-27 18:59:10 +0400",
        "id" : "8f1101ea6486d52ee87808ad5431297057581938",
        "msg" : "Hide assignments when logged in as parent.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/15.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityExtensionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
        ],
        "commitId" : "151bf971aa060028ebb1d8ad15b8a48368d23f57",
        "timestamp" : 1779895048000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update handling of Xapi Activity extension updates: use a merge/update approach for canonical definition.\u000a",
        "date" : "2026-05-27 19:17:28 +0400",
        "id" : "151bf971aa060028ebb1d8ad15b8a48368d23f57",
        "msg" : "Update handling of Xapi Activity extension updates: use a merge/update approach for canonical definition.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/15.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityExtensionEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
        ],
        "commitId" : "389d983e0c03f7aefda585860aea1dd87d63d75b",
        "timestamp" : 1779897371000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Handle parsing deadline on assignment list screen.\u000a",
        "date" : "2026-05-27 19:56:11 +0400",
        "id" : "389d983e0c03f7aefda585860aea1dd87d63d75b",
        "msg" : "Handle parsing deadline on assignment list screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt"
        ],
        "commitId" : "ea25cf858db71cb4b9feaba2a6eb4ec82b355ecb",
        "timestamp" : 1779899544000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Handle display of task icon(s) on assignment.\u000a",
        "date" : "2026-05-27 20:32:24 +0400",
        "id" : "ea25cf858db71cb4b9feaba2a6eb4ec82b355ecb",
        "msg" : "Handle display of task icon(s) on assignment.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "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",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt"
        ],
        "commitId" : "df8ee4593e0b0a63fad61dcbcf7517dde113ce0c",
        "timestamp" : 1779901491000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix learning unit detail screen to show assign button as expected.\u000a",
        "date" : "2026-05-27 21:04:51 +0400",
        "id" : "df8ee4593e0b0a63fad61dcbcf7517dde113ce0c",
        "msg" : "Fix learning unit detail screen to show assign button as expected.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.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/view/learningunit/detail/LearningUnitDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
        ],
        "commitId" : "12fb877fe5e1df6012dc516938da6013decd7687",
        "timestamp" : 1779901773000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fetch all CMI5 verbs that might have completion data for assignment list screen summary.\u000a",
        "date" : "2026-05-27 21:09:33 +0400",
        "id" : "12fb877fe5e1df6012dc516938da6013decd7687",
        "msg" : "Fetch all CMI5 verbs that might have completion data for assignment list screen summary.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/6.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/8.json",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/5.json",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/SchoolDirectoryEntry.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectSchoolDirectory.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesMigration.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryEntityDao.kt",
          "respect-lib-shared/src/androidMain/resources/directories/default.properties",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntityDao.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesFromPropertiesUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryEntryAdapter.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddSchoolDirectoryCallback.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntity.kt"
        ],
        "commitId" : "8225490149bf44db6b3d3e74c2f51b8ee17deda3",
        "timestamp" : 1779909189000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add country dropdown to get started screen.\u000a",
        "date" : "2026-05-27 23:13:09 +0400",
        "id" : "8225490149bf44db6b3d3e74c2f51b8ee17deda3",
        "msg" : "Add country dropdown to get started screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryEntryAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/8.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/SchoolDirectoryEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/resources/directories/default.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddSchoolDirectoryCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesFromPropertiesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectSchoolDirectory.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/5.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/6.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesMigration.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "d5fd437afab1fb22fc79fc65e1c3ae2a99f90936",
        "timestamp" : 1779909639000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version.\u000a",
        "date" : "2026-05-27 23:20:39 +0400",
        "id" : "d5fd437afab1fb22fc79fc65e1c3ae2a99f90936",
        "msg" : "Bump version.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-client/proguard-rules.pro",
          "respect-lib-xapi-ipc-server/consumer-rules.pro",
          "respect-lib-xapi-ipc-server/src/main/AndroidManifest.xml",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/GetStatementParamsExt.kt",
          "respect-lib-xapi-ipc-shared/src/main/AndroidManifest.xml",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "respect-lib-xapi-ipc-client/build.gradle.kts",
          "gradle/libs.versions.toml",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/InstrumentationTestRunner.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt",
          "respect-lib-xapi-ipc-shared/.gitignore",
          "respect-lib-xapi-ipc-client/.gitignore",
          "respect-lib-xapi-ipc-shared/consumer-rules.pro",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-xapi-ipc-server/build.gradle.kts",
          "respect-lib-xapi-core/build.gradle.kts",
          "settings.gradle.kts",
          "respect-lib-xapi-ipc-shared/proguard-rules.pro",
          "respect-lib-xapi-ipc-shared/build.gradle.kts",
          "respect-lib-xapi-ipc-server/proguard-rules.pro",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-xapi-ipc-client/src/main/AndroidManifest.xml",
          "respect-lib-xapi-ipc-server/.gitignore",
          "respect-lib-xapi-ipc-client/consumer-rules.pro",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResourceProvider.kt"
        ],
        "commitId" : "e4f881ce2918c9a7ea38486638c0494cfb10facd",
        "timestamp" : 1780317765000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial design to run xAPI over Android Messenger IPC.\u000a",
        "date" : "2026-06-01 16:42:45 +0400",
        "id" : "e4f881ce2918c9a7ea38486638c0494cfb10facd",
        "msg" : "Initial design to run xAPI over Android Messenger IPC.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/consumer-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/GetStatementParamsExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/consumer-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/consumer-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResourceProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/InstrumentationTestRunner.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/src/main/AndroidManifest.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryDataSourceLocal.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSource.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerAppMain.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt",
          "respect-server/src/main/resources/application.conf"
        ],
        "commitId" : "093196e45299f8214fc8ecc2c05939d0e39b3a76",
        "timestamp" : 1780382702000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update server side to support virtual host based directories.\u000a",
        "date" : "2026-06-02 10:45:02 +0400",
        "id" : "093196e45299f8214fc8ecc2c05939d0e39b3a76",
        "msg" : "Update server side to support virtual host based directories.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerAppMain.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/application.conf"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt",
          "respect-server/src/main/kotlin/world/respect/server/AppConfigExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt",
          "respect-server/src/main/resources/application.conf"
        ],
        "commitId" : "66d3ca8590bba0da34a10c29919d5a042d0bdd81",
        "timestamp" : 1780389045000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of support for registering schools using a web form and server config set PIN.\u000a",
        "date" : "2026-06-02 12:30:45 +0400",
        "id" : "66d3ca8590bba0da34a10c29919d5a042d0bdd81",
        "msg" : "Initial implementation of support for registering schools using a web form and server config set PIN.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/AppConfigExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/application.conf"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "ce96fad7bd59d2437f6b90c83268706a8ee6a384",
        "timestamp" : 1780396495000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version\u000a",
        "date" : "2026-06-02 14:34:55 +0400",
        "id" : "ce96fad7bd59d2437f6b90c83268706a8ee6a384",
        "msg" : "Bump version",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md"
        ],
        "commitId" : "10d6b02479fe46ae569e56fd0515d59acf5a67e5",
        "timestamp" : 1780473858000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update Maestro README with instructions on how to run a test controlled by a CI server on a local physical device.\u000a",
        "date" : "2026-06-03 12:04:18 +0400",
        "id" : "10d6b02479fe46ae569e56fd0515d59acf5a67e5",
        "msg" : "Update Maestro README with instructions on how to run a test controlled by a CI server on a local physical device.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md"
        ],
        "commitId" : "4bd1105d9f95440e89e1dc47477581f162d4b715",
        "timestamp" : 1780474302000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add tips on running Maestro tests on a physical local device from CI server.\u000a",
        "date" : "2026-06-03 12:11:42 +0400",
        "id" : "4bd1105d9f95440e89e1dc47477581f162d4b715",
        "msg" : "Add tips on running Maestro tests on a physical local device from CI server.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md"
        ],
        "commitId" : "5ece121244123e440321bd58939829f7e217790b",
        "timestamp" : 1780477568000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix example ssh command\u000a",
        "date" : "2026-06-03 13:06:08 +0400",
        "id" : "5ece121244123e440321bd58939829f7e217790b",
        "msg" : "Fix example ssh command",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_APPLISTING_RECIPE.md",
          "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
        ],
        "commitId" : "1455009f3aed495c38bf809c6e1ef1b8d6927afe",
        "timestamp" : 1780478007000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add xapi recipe for launchable app listing.\u000a",
        "date" : "2026-06-03 13:13:27 +0400",
        "id" : "1455009f3aed495c38bf809c6e1ef1b8d6927afe",
        "msg" : "Add xapi recipe for launchable app listing.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/README_APPLISTING_RECIPE.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_APPLISTING_RECIPE.md"
        ],
        "commitId" : "796a2bb18a6e2fe91c13bdb8975f8eee3fbdb460",
        "timestamp" : 1780478375000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add xapi recipe for launchable app listing.\u000a",
        "date" : "2026-06-03 13:19:35 +0400",
        "id" : "796a2bb18a6e2fe91c13bdb8975f8eee3fbdb460",
        "msg" : "Add xapi recipe for launchable app listing.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_APPLISTING_RECIPE.md"
          }
        ]
      },
      {
        "_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/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/15.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt"
        ],
        "commitId" : "f11d2017d71ebedbf6a1c62dffb1a18a6c478b68",
        "timestamp" : 1780480420000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Resolve conflicts\u000a",
        "date" : "2026-06-03 15:23:40 +0530",
        "id" : "f11d2017d71ebedbf6a1c62dffb1a18a6c478b68",
        "msg" : "Resolve conflicts",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/15.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "4be8fd60360e695c9792f78ac117fe26247f5e83",
        "timestamp" : 1780485429000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove echo of dir admin.\u000a",
        "date" : "2026-06-03 15:17:09 +0400",
        "id" : "4be8fd60360e695c9792f78ac117fe26247f5e83",
        "msg" : "Remove echo of dir admin.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "CODING_GUIDELINES.md"
        ],
        "commitId" : "e0a2c314d31e83dad64c25ac4e38185d31455cee",
        "timestamp" : 1780487152000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update CODING_GUIDELINES.md\u000a\u000aAdd to very important section: requirement to ensure all commits comply with the coding guidelines and requirement to commit each working day.\u000a",
        "date" : "2026-06-03 15:45:52 +0400",
        "id" : "e0a2c314d31e83dad64c25ac4e38185d31455cee",
        "msg" : "Update CODING_GUIDELINES.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "CODING_GUIDELINES.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_CLASS_RECIPE.md",
          "respect-lib-xapi-core/README_APPLISTING_RECIPE.md"
        ],
        "commitId" : "5aa1d38fd6580a5a07d66d26e15efc6c949338d0",
        "timestamp" : 1780490318000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add recipe for classes management on xAPI.\u000a",
        "date" : "2026-06-03 16:38:38 +0400",
        "id" : "5aa1d38fd6580a5a07d66d26e15efc6c949338d0",
        "msg" : "Add recipe for classes management on xAPI.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_APPLISTING_RECIPE.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/README_CLASS_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md"
        ],
        "commitId" : "d620b07b1b2a7d0c10fd46bd3080a92098b5c25a",
        "timestamp" : 1780557973000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update README.md\u000a\u000aDelete section on using adb over an SSH tunnel: was found to be not practical due to performance issues.\u000a",
        "date" : "2026-06-04 11:26:13 +0400",
        "id" : "d620b07b1b2a7d0c10fd46bd3080a92098b5c25a",
        "msg" : "Update README.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md"
        ],
        "commitId" : "d41f5c89b07f513c393b589959ab167e1f89ec58",
        "timestamp" : 1780558011000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update README.md\u000a\u000aFix ordering of maestro readme.\u000a",
        "date" : "2026-06-04 11:26:51 +0400",
        "id" : "d41f5c89b07f513c393b589959ab167e1f89ec58",
        "msg" : "Update README.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AppListingSummary.kt"
        ],
        "commitId" : "9f5154efbec4041b6ea5fa7626fbd4927ce257d1",
        "timestamp" : 1780574429000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Add AppListingSummary model for xAPI app listing recipe\u000a",
        "date" : "2026-06-04 17:30:29 +0530",
        "id" : "9f5154efbec4041b6ea5fa7626fbd4927ce257d1",
        "msg" : "Add AppListingSummary model for xAPI app listing recipe",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AppListingSummary.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AppListingSummary.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
        ],
        "commitId" : "8c989ff0ab934017b08fa4b7597b7ab0d2d4965c",
        "timestamp" : 1780652865000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Implement xAPI app listing recipe and replace AppListingSummary with XapiStatement extension properties.\u000a",
        "date" : "2026-06-05 15:17:45 +0530",
        "id" : "8c989ff0ab934017b08fa4b7597b7ab0d2d4965c",
        "msg" : "Implement xAPI app listing recipe and replace AppListingSummary with XapiStatement extension properties.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AppListingSummary.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "respect-datalayer-repository/log/respect-server.2026-05-04.0.log",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/AssignmentResultExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementObjectExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActorExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt"
        ],
        "commitId" : "4a012c9f2b6a57776b401ab7c6f133372c2dfbf4",
        "timestamp" : 1780665131000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add xAPI extension functions required for common use cases.\u000a\u000aRemove some unnecessary functions that were introduced with the assignment merge.\u000a",
        "date" : "2026-06-05 17:12:11 +0400",
        "id" : "4a012c9f2b6a57776b401ab7c6f133372c2dfbf4",
        "msg" : "Add xAPI extension functions required for common use cases.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementObjectExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/AssignmentResultExt.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/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/log/respect-server.2026-05-04.0.log"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActorExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/main.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/LangMapExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/LangMapExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/App.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiText.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LocalAppLocale.kt"
        ],
        "commitId" : "6d34bd4995ceae080606ea1aceedf1776b507845",
        "timestamp" : 1780824941000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improvements for Xapi based data handling : work in progress.\u000a\u000aAdd UiText support for LangMaps. Put OpenEel constants into one logical place.\u000a",
        "date" : "2026-06-07 13:35:41 +0400",
        "id" : "6d34bd4995ceae080606ea1aceedf1776b507845",
        "msg" : "Improvements for Xapi based data handling : work in progress.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/LangMapExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiText.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LocalAppLocale.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/LangMapExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/main.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt"
        ],
        "commitId" : "08c4e0547093dec30b8044be15fb991a4c0113e1",
        "timestamp" : 1780897132000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Remove `getAppListAsFlow` and associated XAPI application listing extensions.\u000a",
        "date" : "2026-06-08 11:08:52 +0530",
        "id" : "08c4e0547093dec30b8044be15fb991a4c0113e1",
        "msg" : "Remove `getAppListAsFlow` and associated XAPI application listing extensions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md",
          ".maestro/flows/subflows/admin_add_app.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/scripts/school_init.js"
        ],
        "commitId" : "e61e79f9c612ce33185054572d051ce7a535064d",
        "timestamp" : 1780904962000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add environment variables that can be used to set the url of the test app manifest for maestro testing.\u000a",
        "date" : "2026-06-08 11:49:22 +0400",
        "id" : "e61e79f9c612ce33185054572d051ce7a535064d",
        "msg" : "Add environment variables that can be used to set the url of the test app manifest for maestro testing.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/scripts/school_init.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "9f4649e59071d435537f5286804cc34b168cd2a9",
        "timestamp" : 1780905193000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update ci-run-maestro to pass TEST_APP_URL argument through.\u000a",
        "date" : "2026-06-08 11:53:13 +0400",
        "id" : "9f4649e59071d435537f5286804cc34b168cd2a9",
        "msg" : "Update ci-run-maestro to pass TEST_APP_URL argument through.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "841735b6a24802b3f31c2cbd7e0f557bfab65776",
        "timestamp" : 1780910010000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Refactor app listing and management to use xAPI statements instead of SchoolApp data sources.\u000a",
        "date" : "2026-06-08 14:43:30 +0530",
        "id" : "841735b6a24802b3f31c2cbd7e0f557bfab65776",
        "msg" : "Refactor app listing and management to use xAPI statements instead of SchoolApp data sources.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.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-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/index.html"
        ],
        "commitId" : "05956799f0039e384a597b85aa08aeead0457ec9",
        "timestamp" : 1780923340000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improve error message logging in xapi_assignable_unit.js .\u000a",
        "date" : "2026-06-08 16:55:40 +0400",
        "id" : "05956799f0039e384a597b85aa08aeead0457ec9",
        "msg" : "Improve error message logging in xapi_assignable_unit.js .",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/index.html"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapEditField.kt"
        ],
        "commitId" : "2ceac40ca0250dba23285062068335e4eb361f88",
        "timestamp" : 1780946445000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of lang map edit field.\u000a",
        "date" : "2026-06-08 23:20:45 +0400",
        "id" : "2ceac40ca0250dba23285062068335e4eb361f88",
        "msg" : "Initial implementation of lang map edit field.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapEditField.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "a236788e3e2da8167c77b1c40cef2ff880ef4e78",
        "timestamp" : 1780983347000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Remove unused errorMessage from AppLauncherViewModel and add logging to AppListViewModel's app click handler.\u000a",
        "date" : "2026-06-09 11:05:47 +0530",
        "id" : "a236788e3e2da8167c77b1c40cef2ff880ef4e78",
        "msg" : "Remove unused errorMessage from AppLauncherViewModel and add logging to AppListViewModel's app click handler.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapEditField.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/LangMapExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapTextField.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/langMapString.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityExt.kt"
        ],
        "commitId" : "14511ab072f6ff511891a5dce7cf0f3328df1321",
        "timestamp" : 1780991418000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of lang map edit field.\u000a",
        "date" : "2026-06-09 11:50:18 +0400",
        "id" : "14511ab072f6ff511891a5dce7cf0f3328df1321",
        "msg" : "Initial implementation of lang map edit field.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapTextField.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/langMapString.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/LangMapExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapEditField.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
        ],
        "commitId" : "42d1b44dd3461a813e42ce0274c2357c2c3c8e54",
        "timestamp" : 1780993139000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix AssignmentEditScreen\u000a\u000aChanging description would change title.\u000a",
        "date" : "2026-06-09 12:18:59 +0400",
        "id" : "42d1b44dd3461a813e42ce0274c2357c2c3c8e54",
        "msg" : "Fix AssignmentEditScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "32e23ea3f3c2f57ee59b641b15d4144a0f1f3bf5",
        "timestamp" : 1781002709000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Refactor `XapiAppListingConstants` to use constants from `XapiVerb` and `OpenEelXapiConstants` directly.\u000a",
        "date" : "2026-06-09 16:28:29 +0530",
        "id" : "32e23ea3f3c2f57ee59b641b15d4144a0f1f3bf5",
        "msg" : "Refactor `XapiAppListingConstants` to use constants from `XapiVerb` and `OpenEelXapiConstants` directly.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/DisplayString.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.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/launcher/AppLauncherScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt"
        ],
        "commitId" : "55b6ec900e8ea5d71463605307b0dc52ae736648",
        "timestamp" : 1781012777000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove use of old langmap getTitle function.\u000a\u000aFix composable langmapstring function.\u000a",
        "date" : "2026-06-09 17:46:17 +0400",
        "id" : "55b6ec900e8ea5d71463605307b0dc52ae736648",
        "msg" : "Remove use of old langmap getTitle function.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/DisplayString.kt"
          },
          {
            "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/view/learningunit/list/LearningUnitListScreen.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/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.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/apps/launcher/AppLauncherScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "88daa32d1fc8173832eb00493ef6844e7bb1b0be",
        "timestamp" : 1781064527000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Update app title and description to use language maps in xAPI statements and AppListScreen.\u000a",
        "date" : "2026-06-10 09:38:47 +0530",
        "id" : "88daa32d1fc8173832eb00493ef6844e7bb1b0be",
        "msg" : "Update app title and description to use language maps in xAPI statements and AppListScreen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
        ],
        "commitId" : "b6eb42af2542c6e57ac3af95013ed11a4f36d7b6",
        "timestamp" : 1781066181000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add navigation from score cell to statment list screen\u000a",
        "date" : "2026-06-10 10:06:21 +0530",
        "id" : "b6eb42af2542c6e57ac3af95013ed11a4f36d7b6",
        "msg" : "add navigation from score cell to statment list screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.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/statement/list/StatementListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt"
        ],
        "commitId" : "f7b19da726b44b82bd171534a89380e5ebecb49b",
        "timestamp" : 1781085288000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "load statment from xapiStatementsResource\u000a",
        "date" : "2026-06-10 15:24:48 +0530",
        "id" : "f7b19da726b44b82bd171534a89380e5ebecb49b",
        "msg" : "load statment from xapiStatementsResource",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt"
        ],
        "commitId" : "200e41fc3d4a6fe2d9661437790dc7f1b4617f8a",
        "timestamp" : 1781085861000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-06-10 15:34:21 +0530",
        "id" : "200e41fc3d4a6fe2d9661437790dc7f1b4617f8a",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/migrate/MigrateSchoolAppsToXapi.kt"
        ],
        "commitId" : "3337ee0c1aa1ee41734850f16643509a96c93b35",
        "timestamp" : 1781167838000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Migrate legacy school apps to xAPI stream during account scope creation.\u000a",
        "date" : "2026-06-11 14:20:38 +0530",
        "id" : "3337ee0c1aa1ee41734850f16643509a96c93b35",
        "msg" : "Migrate legacy school apps to xAPI stream during account scope creation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/migrate/MigrateSchoolAppsToXapi.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/domain/school/migrate/MigrateSchoolAppsToXapi.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt"
        ],
        "commitId" : "6906478ee150761a008094cb8c30cce0c98a1438",
        "timestamp" : 1781174471000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Remove `migrateSchoolAppsToXapi` utility and clean up `ServerAccountScopeManager` logic.\u000a",
        "date" : "2026-06-11 16:11:11 +0530",
        "id" : "6906478ee150761a008094cb8c30cce0c98a1438",
        "msg" : "Remove `migrateSchoolAppsToXapi` utility and clean up `ServerAccountScopeManager` logic.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/migrate/MigrateSchoolAppsToXapi.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/migrate/MigrateSchoolAppsToXapi.kt"
        ],
        "commitId" : "6e4fc4f1660ca4816a8040339bd2dd6ad7c5b651",
        "timestamp" : 1781174922000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Revert \"Remove `migrateSchoolAppsToXapi` utility and clean up `ServerAccountScopeManager` logic.\"\u000a\u000aThis reverts commit 6906478ee150761a008094cb8c30cce0c98a1438.\u000a",
        "date" : "2026-06-11 16:18:42 +0530",
        "id" : "6e4fc4f1660ca4816a8040339bd2dd6ad7c5b651",
        "msg" : "Revert \"Remove `migrateSchoolAppsToXapi` utility and clean up `ServerAccountScopeManager` logic.\"",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/migrate/MigrateSchoolAppsToXapi.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/migrate/MigrateSchoolAppsToXapi.kt"
        ],
        "commitId" : "554b0f85891a8c41be585805443b71b95f692731",
        "timestamp" : 1781174962000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Revert \"Migrate legacy school apps to xAPI stream during account scope creation.\"\u000a\u000aThis reverts commit 3337ee0c1aa1ee41734850f16643509a96c93b35.\u000a",
        "date" : "2026-06-11 16:19:22 +0530",
        "id" : "554b0f85891a8c41be585805443b71b95f692731",
        "msg" : "Revert \"Migrate legacy school apps to xAPI stream during account scope creation.\"",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/migrate/MigrateSchoolAppsToXapi.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt"
        ],
        "commitId" : "753deaba2dc23e4ea38c1dac6196c7374812cefc",
        "timestamp" : 1781176920000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "update filter parameter and add definition fallback\u000a",
        "date" : "2026-06-11 16:52:00 +0530",
        "id" : "753deaba2dc23e4ea38c1dac6196c7374812cefc",
        "msg" : "update filter parameter and add definition fallback",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt",
          "respect-lib-xapi-ipc-server/build.gradle.kts",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResourceProvider.kt"
        ],
        "commitId" : "ad42060e6ea8ba9e66058b874d21c93943147791",
        "timestamp" : 1781256610000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress: update IpcTestApplication to provide create a school database.\u000a",
        "date" : "2026-06-12 13:30:10 +0400",
        "id" : "ad42060e6ea8ba9e66058b874d21c93943147791",
        "msg" : "Work in progress: update IpcTestApplication to provide create a school database.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResourceProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.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/statement/list/StatementListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/StatementDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/RawStatementScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/DayOfWeekExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/StatementDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/DurationExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/RememberDayOrDate.kt"
        ],
        "commitId" : "2256cfeb5575310f0ac325a073b0bd1859409c1d",
        "timestamp" : 1781257874000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add statement detail and raw statement screen\u000a",
        "date" : "2026-06-12 15:21:14 +0530",
        "id" : "2256cfeb5575310f0ac325a073b0bd1859409c1d",
        "msg" : "add statement detail and raw statement screen",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/RawStatementScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/DayOfWeekExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/RememberDayOrDate.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/StatementDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/DurationExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/StatementDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.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/statement/list/StatementListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiAgentsResourceLocal.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivitiesResourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/enrollments/UpdateClazzStudentXapiGroupUseCase.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttp.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentsResourceDb.kt",
          "respect-datalayer-repository/log/respect-server.2026-05-12.0.log",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivitiesResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSourceLocal.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivitiesResourceLocal.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt"
        ],
        "commitId" : "979673a326f2aa341d2104d4b3d4790280eaaf41",
        "timestamp" : 1781264841000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor: Put all xapi related resources under the XapiResource interface.\u000a",
        "date" : "2026-06-12 15:47:21 +0400",
        "id" : "979673a326f2aa341d2104d4b3d4790280eaaf41",
        "msg" : "Refactor: Put all xapi related resources under the XapiResource interface.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentsResourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/log/respect-server.2026-05-12.0.log"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivitiesResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActorDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivitiesResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivitiesResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/enrollments/UpdateClazzStudentXapiGroupUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActorDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiAgentsResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSender.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-xapi-ipc-shared/README.md",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderBinderImpl.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
        ],
        "commitId" : "e9bd6e106636089f25547569939a0bcde00e7637",
        "timestamp" : 1781272504000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial structure for reply/response IPC messenger.\u000a",
        "date" : "2026-06-12 17:55:04 +0400",
        "id" : "e9bd6e106636089f25547569939a0bcde00e7637",
        "msg" : "Initial structure for reply/response IPC messenger.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSender.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderBinderImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageReply.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSender.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderBinderImpl.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
        ],
        "commitId" : "d81c7d99004714ca25db4b34989704f43aa5c061",
        "timestamp" : 1781274459000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial working send/receive between IPC client and service.\u000a",
        "date" : "2026-06-12 18:27:39 +0400",
        "id" : "d81c7d99004714ca25db4b34989704f43aa5c061",
        "msg" : "Initial working send/receive between IPC client and service.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageReply.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSender.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderBinderImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement-multiple-responses.json",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageData.kt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/appendix-a-long-statement.json",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageReply.kt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement-invalid-response.json",
          "respect-lib-test-resources/src/androidMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/sequencing-response-statement.json",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderBinderImpl.kt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/matching-response-statement.json",
          "respect-lib-test-resources/src/commonMain/kotlin/world/respect/lib/test/res/XapiStatementNameConstants.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/true-false-response-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/simple-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/performance-response-statement.json",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/MessageExt.kt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-substatement.json",
          "respect-lib-xapi-ipc-server/build.gradle.kts",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSender.kt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-actor.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/Readme.txt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/group-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/likert-response-statement.json",
          "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-test-resources/src/commonMain/kotlin/world/respect/lib/test/res/SampleXapiStatement.kt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-statementref.json"
        ],
        "commitId" : "7f72ba782d052d3cbafead86db4c1515cd90c3fa",
        "timestamp" : 1781424710000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Integration test improvements: send actual xAPI statements.\u000a",
        "date" : "2026-06-14 12:11:50 +0400",
        "id" : "7f72ba782d052d3cbafead86db4c1515cd90c3fa",
        "msg" : "Integration test improvements: send actual xAPI statements.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/true-false-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageData.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/MessageExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/Readme.txt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/commonMain/kotlin/world/respect/lib/test/res/SampleXapiStatement.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-statementref.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-substatement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/group-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/appendix-a-long-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSender.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/commonMain/kotlin/world/respect/lib/test/res/XapiStatementNameConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/simple-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageReply.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderBinderImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageData.kt",
          "respect-lib-xapi-core/build.gradle.kts",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/StringValuesExt.kt",
          "respect-lib-util/README.md",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleStringValues.kt",
          "respect-lib-util/build.gradle.kts",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/StringValuesExt.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
        ],
        "commitId" : "f90dc8610826609b061c27c5ab7873fb007e1847",
        "timestamp" : 1781445808000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement send/receive over IPC integration test.\u000a",
        "date" : "2026-06-14 18:03:28 +0400",
        "id" : "f90dc8610826609b061c27c5ab7873fb007e1847",
        "msg" : "Implement send/receive over IPC integration test.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/StringValuesExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleStringValues.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/StringValuesExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageData.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataLoadMetaInfoExt.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadState.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/GetStatementParamsExt.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiExceptionExt.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataReadyStateExt.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
        ],
        "commitId" : "a5336e9c85b22ca6a36635b2a8be8129f6fb680d",
        "timestamp" : 1781450946000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of converters from DataLoadState to/from Bundle.\u000a",
        "date" : "2026-06-14 19:29:06 +0400",
        "id" : "a5336e9c85b22ca6a36635b2a8be8129f6fb680d",
        "msg" : "Initial implementation of converters from DataLoadState to/from Bundle.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataLoadMetaInfoExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiExceptionExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataReadyStateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/GetStatementParamsExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/DurationExt.kt"
        ],
        "commitId" : "97778f354e1522899876e6203591a3ea9ca58920",
        "timestamp" : 1781588240000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-06-16 11:07:20 +0530",
        "id" : "97778f354e1522899876e6203591a3ea9ca58920",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/DurationExt.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/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/SendLearningUnitTerminatedStatementUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiLearningUnitExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
        ],
        "commitId" : "d0ddcb299e2ce1b752cac4b69f807423717329c3",
        "timestamp" : 1781590323000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "xapi statment added\u000a",
        "date" : "2026-06-16 11:42:03 +0530",
        "id" : "d0ddcb299e2ce1b752cac4b69f807423717329c3",
        "msg" : "xapi statment added",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/SendLearningUnitTerminatedStatementUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiLearningUnitExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.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/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "0d048fce7ad0f17edde4505fc21f932b09f97a94",
        "timestamp" : 1781590458000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-06-16 11:44:18 +0530",
        "id" : "0d048fce7ad0f17edde4505fc21f932b09f97a94",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "cb6e981f8125ece2e9de4c2a39651d7d183120cd",
        "timestamp" : 1781613500000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to include testing for viewing score details, xAPI statement information, and raw xAPI data.\u000a",
        "date" : "2026-06-16 16:38:20 +0400",
        "id" : "cb6e981f8125ece2e9de4c2a39651d7d183120cd",
        "msg" : "Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to include testing for viewing score details, xAPI statement information, and raw xAPI data.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt"
        ],
        "commitId" : "915d35310ce114ebfe0786ab4840c59c18c6dd32",
        "timestamp" : 1781674949000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-06-17 11:12:29 +0530",
        "id" : "915d35310ce114ebfe0786ab4840c59c18c6dd32",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "806f0d53822424ecbd920fda3adb92603619cb48",
        "timestamp" : 1781676774000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to adjust test assertions and input values for assignment results, including updates to score values and expected student actor names.\u000a",
        "date" : "2026-06-17 10:12:54 +0400",
        "id" : "806f0d53822424ecbd920fda3adb92603619cb48",
        "msg" : "Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to adjust test assertions and input values for assignment results, including updates to score values and expected student actor names.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
        ],
        "commitId" : "3117b1585f3db5afd241fdcda8b8ed4e4d175498",
        "timestamp" : 1781677090000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-06-17 11:48:10 +0530",
        "id" : "3117b1585f3db5afd241fdcda8b8ed4e4d175498",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt"
        ],
        "commitId" : "c02d4e452c956bfa4a7a6707fbfb6aabb757cc5f",
        "timestamp" : 1781679187000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-06-17 12:23:07 +0530",
        "id" : "c02d4e452c956bfa4a7a6707fbfb6aabb757cc5f",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "b107103d4089765d437e75961768cd8229af614c",
        "timestamp" : 1781681826000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to remove unused commented-out code and comment out an unstable relative time assertion.\u000a",
        "date" : "2026-06-17 11:37:06 +0400",
        "id" : "b107103d4089765d437e75961768cd8229af614c",
        "msg" : "Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to remove unused commented-out code and comment out an unstable relative time assertion.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "819af327c5cf1871f248b02f283b3c32e1ecc1aa",
        "timestamp" : 1781683649000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to use the correct resource ID for the options menu.\u000a",
        "date" : "2026-06-17 12:07:29 +0400",
        "id" : "819af327c5cf1871f248b02f283b3c32e1ecc1aa",
        "msg" : "Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to use the correct resource ID for the options menu.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
        ],
        "commitId" : "3188bb7da0d2b370fccd3b908e29661930eb0e23",
        "timestamp" : 1781685783000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-06-17 14:13:03 +0530",
        "id" : "3188bb7da0d2b370fccd3b908e29661930eb0e23",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "83db53471cf677f945c30b620ec5332930d05cb8",
        "timestamp" : 1781687236000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to remove an unnecessary assertion for a specific user on the \"Raw statement\" screen.\u000a",
        "date" : "2026-06-17 13:07:16 +0400",
        "id" : "83db53471cf677f945c30b620ec5332930d05cb8",
        "msg" : "Update Maestro flow `003_admin_user_assigns_assignment_to_a_class_test.yaml` to remove an unnecessary assertion for a specific user on the \"Raw statement\" screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/SendLearningUnitTerminatedStatementUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "a7f5363b133ac2a5e311298f9b82b3b9e6666dc8",
        "timestamp" : 1781765325000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-06-18 12:18:45 +0530",
        "id" : "a7f5363b133ac2a5e311298f9b82b3b9e6666dc8",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/SendLearningUnitTerminatedStatementUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSender.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiLocalInvalidation.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderBinderImpl.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
        ],
        "commitId" : "bfc94d0cf30eba1b6d94b0551ef60377570ed024",
        "timestamp" : 1781771078000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improve error handling for Xapi IPC messaging.\u000a",
        "date" : "2026-06-18 12:24:38 +0400",
        "id" : "bfc94d0cf30eba1b6d94b0551ef60377570ed024",
        "msg" : "Improve error handling for Xapi IPC messaging.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiLocalInvalidation.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSender.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderBinderImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
        ],
        "commitId" : "3bb49464ae2928a9ce9b09cd67fa61d39ade855d",
        "timestamp" : 1781771568000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move XapiMessengerService to using its own thread.\u000a",
        "date" : "2026-06-18 12:32:48 +0400",
        "id" : "3bb49464ae2928a9ce9b09cd67fa61d39ade855d",
        "msg" : "Move XapiMessengerService to using its own thread.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSender.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderBinderImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiConflictException.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeBinderImpl.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiRequire.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridge.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
        ],
        "commitId" : "c7611e87c3a84f5f716ecc79e3b5f93d32c67524",
        "timestamp" : 1781775662000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor to use a single XapiException to avoid issues converting to/from messages, http, etc.\u000a",
        "date" : "2026-06-18 13:41:02 +0400",
        "id" : "c7611e87c3a84f5f716ecc79e3b5f93d32c67524",
        "msg" : "Refactor to use a single XapiException to avoid issues converting to/from messages, http, etc.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiRequire.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeBinderImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderBinderImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiConflictException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridge.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSender.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "addee88ef71d8dea4d1c0ff6f60a5797a26749b5",
        "timestamp" : 1781782508000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor XapiResource post function to use DataLoadState\u000a",
        "date" : "2026-06-18 15:35:08 +0400",
        "id" : "addee88ef71d8dea4d1c0ff6f60a5797a26749b5",
        "msg" : "Refactor XapiResource post function to use DataLoadState",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageData.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeBinderImpl.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridge.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcTags.kt"
        ],
        "commitId" : "7ce0568d3e627757eb9db78500d486cb5edc0afa",
        "timestamp" : 1781790013000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of flow support for Xapi over IPC.\u000a",
        "date" : "2026-06-18 17:40:13 +0400",
        "id" : "7ce0568d3e627757eb9db78500d486cb5edc0afa",
        "msg" : "Initial implementation of flow support for Xapi over IPC.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeBinderImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridge.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcTags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageData.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageData.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeBinderImpl.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
        ],
        "commitId" : "c6631a0014b2d21747a9db290cf7db2d21a48bfe",
        "timestamp" : 1781793124000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of flow support for Xapi over IPC.\u000a",
        "date" : "2026-06-18 18:32:04 +0400",
        "id" : "c6631a0014b2d21747a9db290cf7db2d21a48bfe",
        "msg" : "Initial implementation of flow support for Xapi over IPC.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageData.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeBinderImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
        ],
        "commitId" : "073be31569d6d8176cd3c812cf0cafc0fba56ba1",
        "timestamp" : 1781847162000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "removed code\u000a",
        "date" : "2026-06-19 11:02:42 +0530",
        "id" : "073be31569d6d8176cd3c812cf0cafc0fba56ba1",
        "msg" : "removed code",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.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-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
        ],
        "commitId" : "03f6d7ad85f531816fcd46abc5cbed6755634505",
        "timestamp" : 1781848576000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-06-19 11:26:16 +0530",
        "id" : "03f6d7ad85f531816fcd46abc5cbed6755634505",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_003_login_using_school_link_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/002_browse_lessons_test.yaml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "524240f1b6322c86bbe5c4588184b53a68f5e9b7",
        "timestamp" : 1781864463000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-06-19 15:51:03 +0530",
        "id" : "524240f1b6322c86bbe5c4588184b53a68f5e9b7",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
        ],
        "commitId" : "11601a98a6763d5cc0a91cec8ad9b18d300e9a2d",
        "timestamp" : 1781866159000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-06-19 16:19:19 +0530",
        "id" : "11601a98a6763d5cc0a91cec8ad9b18d300e9a2d",
        "msg" : "commit",
        "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-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
        ],
        "commitId" : "4e7eb0c8b328e0299b47d984b89e076a1ae1dc12",
        "timestamp" : 1781867261000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-06-19 16:37:41 +0530",
        "id" : "4e7eb0c8b328e0299b47d984b89e076a1ae1dc12",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.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-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
        ],
        "commitId" : "0c2249e55dca5bd04c29504510d9f4565bea01c9",
        "timestamp" : 1781868378000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-06-19 16:56:18 +0530",
        "id" : "0c2249e55dca5bd04c29504510d9f4565bea01c9",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-server/src/main/AndroidManifest.xml",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeMessengerImpl.kt",
          "respect-lib-xapi-ipc-server/build.gradle.kts",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcIntent.kt",
          "respect-lib-xapi-core/build.gradle.kts",
          "respect-lib-ihttp-core/build.gradle.kts",
          "respect-lib-ihttp-iostreams/build.gradle.kts",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-xapi-ipc-shared/build.gradle.kts",
          "respect-server/build.gradle.kts",
          "respect-lib-xapi-ipc-client/build.gradle.kts",
          "respect-lib-serializers/build.gradle.kts",
          "README.md",
          "gradle.properties",
          "respect-lib-util/build.gradle.kts",
          "respect-cli/build.gradle.kts",
          "build.gradle.kts",
          "respect-app-compose/build.gradle.kts",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeBinderImpl.kt",
          "respect-lib-dataloadstate/build.gradle.kts"
        ],
        "commitId" : "71e70471adc89d9367f6d6778c2a6e81998d7238",
        "timestamp" : 1781870402000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Standardize jvm version to 17 and add Xapi IPC Binder message bridge.\u000a",
        "date" : "2026-06-19 16:00:02 +0400",
        "id" : "71e70471adc89d9367f6d6778c2a6e81998d7238",
        "msg" : "Standardize jvm version to 17 and add Xapi IPC Binder message bridge.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-serializers/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeMessengerImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeBinderImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-ihttp-core/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-cli/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-dataloadstate/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-ihttp-iostreams/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcIntent.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          ".maestro/flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows-pending/002_browse_lessons_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          ".maestro/flows-pending/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "2aa464be04836701304cdc8aa3a915d99de56a3f",
        "timestamp" : 1782114051000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-06-22 13:10:51 +0530",
        "id" : "2aa464be04836701304cdc8aa3a915d99de56a3f",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_003_login_using_school_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows-pending/001_005_add_school_self_registration_test.yaml"
        ],
        "commitId" : "8729761b3f1c201e5300d855f882bac6a3ceb320",
        "timestamp" : 1782120299000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-06-22 14:54:59 +0530",
        "id" : "8729761b3f1c201e5300d855f882bac6a3ceb320",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_005_add_school_self_registration_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiResourceProviderAndroid.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/AndroidManifest.xml",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResourceProvider.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
        ],
        "commitId" : "4c552f64ff5b2915d9f5039af05006e54b15eac9",
        "timestamp" : 1782120939000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove XapiNanoHttpdResourceProvider in favor of a single XapiResourceProvider that can work for IPC and NanoHttpd, Ktor server, etc.\u000a\u000aUpdate xapi ipc integration test to using an intent that does not require a class reference e.g. can work from an external app.\u000a",
        "date" : "2026-06-22 13:35:39 +0400",
        "id" : "4c552f64ff5b2915d9f5039af05006e54b15eac9",
        "msg" : "Remove XapiNanoHttpdResourceProvider in favor of a single XapiResourceProvider that can work for IPC and NanoHttpd, Ktor server, etc.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResourceProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiResourceProviderAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/native_demo/index.json",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeMessengerImpl.kt",
          "respect-server/src/main/resources/http/respect-ds/native_demo/lesson001/lesson001.json",
          "respect-server/src/main/resources/http/respect-ds/native_demo/lesson001/lesson001.html",
          "respect-lib-xapi-ipc-shared/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "respect-lib-xapi-ipc-client/build.gradle.kts",
          "respect-server/src/main/resources/http/respect-ds/native_demo/appmanifest.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt",
          "gradle.properties",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttp.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridge.kt"
        ],
        "commitId" : "ebb90d89c37c5d9813a45b9f9271d8066838cea6",
        "timestamp" : 1782154762000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation that receives an xAPI statement over IPC and saves it in the database as expected.\u000a",
        "date" : "2026-06-22 22:59:22 +0400",
        "id" : "ebb90d89c37c5d9813a45b9f9271d8066838cea6",
        "msg" : "Initial implementation that receives an xAPI statement over IPC and saves it in the database as expected.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridge.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/appmanifest.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/lesson001/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/index.json"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeMessengerImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/lesson001/lesson001.html"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttp.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcIntent.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt",
          "respect-lib-shared/build.gradle.kts",
          "gradle.properties"
        ],
        "commitId" : "31da95ca267c2b92c8e3d1d73a3528d6dcf5eae6",
        "timestamp" : 1782203173000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Xapi over IPC: Send IPC service package name as a parameter.\u000a",
        "date" : "2026-06-23 12:26:13 +0400",
        "id" : "31da95ca267c2b92c8e3d1d73a3528d6dcf5eae6",
        "msg" : "Xapi over IPC: Send IPC service package name as a parameter.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcIntent.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle.properties",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcClientBuilder.kt"
        ],
        "commitId" : "1a067af2ed44e6575822ae102f86a9bf42fd989a",
        "timestamp" : 1782282673000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add Xapi IPC client builder class.\u000a",
        "date" : "2026-06-24 10:31:13 +0400",
        "id" : "1a067af2ed44e6575822ae102f86a9bf42fd989a",
        "msg" : "Add Xapi IPC client builder class.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcClientBuilder.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-shared/README.md",
          "build.gradle.kts",
          "ci-run-maestro.sh",
          "ci-run-test-server.sh",
          "README.md"
        ],
        "commitId" : "3c6ebbcb7867a66037c2978987b540f98a277e29",
        "timestamp" : 1782287269000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Introduce version as environment variable for use by test server controller.\u000a",
        "date" : "2026-06-24 11:47:49 +0400",
        "id" : "3c6ebbcb7867a66037c2978987b540f98a277e29",
        "msg" : "Introduce version as environment variable for use by test server controller.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/README.md"
          },
          {
            "editType" : "edit",
            "file" : "README.md"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-test-server.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "e343ba3eb215bc0689160c907e9368bb92ecc80d",
        "timestamp" : 1782288471000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix ci-run-maestro script and make it quieter.\u000a",
        "date" : "2026-06-24 12:07:51 +0400",
        "id" : "e343ba3eb215bc0689160c907e9368bb92ecc80d",
        "msg" : "Fix ci-run-maestro script and make it quieter.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh",
          "respect-lib-xapi-ipc-server/build.gradle.kts",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt",
          "gradle.properties"
        ],
        "commitId" : "928de34329036635d99fc2cdcbd7b5267a4add56",
        "timestamp" : 1782299759000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial update to provide openeel assignment_id support on xAPI IPC service.\u000a",
        "date" : "2026-06-24 15:15:59 +0400",
        "id" : "928de34329036635d99fc2cdcbd7b5267a4add56",
        "msg" : "Initial update to provide openeel assignment_id support on xAPI IPC service.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-server/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-server/src/main/resources/http/respect-ds/native_demo/lesson001/lesson001.json"
        ],
        "commitId" : "084c96da690fea735f352769272bbaf876c6b026",
        "timestamp" : 1782374241000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Handle assignment recipe statement transform for\u000a XapiMessengerService.\u000a\u000a Improve XapiStatementEntityDao to check that any statement considered as part of progress is both for an assigned unit as per the actual assignment statement AND the progress statement includes the assignment activity id in its context activities.\u000a",
        "date" : "2026-06-25 15:57:21 +0800",
        "id" : "084c96da690fea735f352769272bbaf876c6b026",
        "msg" : "Handle assignment recipe statement transform for",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/lesson001/lesson001.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle.properties"
        ],
        "commitId" : "d94a41cf24faa817b349f05211efc009a70c66b9",
        "timestamp" : 1782374569000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version.\u000a",
        "date" : "2026-06-25 16:02:49 +0800",
        "id" : "d94a41cf24faa817b349f05211efc009a70c66b9",
        "msg" : "Bump version.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiLocalInvalidation.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
        ],
        "commitId" : "55e3f0ebb8b9b4146b4f5428af65445845262947",
        "timestamp" : 1782473788000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove unused XapiLocalInvalidation.kt and placeholders.\u000a",
        "date" : "2026-06-26 19:36:28 +0800",
        "id" : "55e3f0ebb8b9b4146b4f5428af65445845262947",
        "msg" : "Remove unused XapiLocalInvalidation.kt and placeholders.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiLocalInvalidation.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeMessengerImpl.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcIntent.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/AndroidManifest.xml",
          "gradle.properties",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcClientBuilder.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt"
        ],
        "commitId" : "44d0a6b625e824402882870fd28c00d8e43dc301",
        "timestamp" : 1782532957000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Logging improvements for XapiIpc.\u000a",
        "date" : "2026-06-27 12:02:37 +0800",
        "id" : "44d0a6b625e824402882870fd28c00d8e43dc301",
        "msg" : "Logging improvements for XapiIpc.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeMessengerImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcIntent.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcClientBuilder.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiMessengerService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt",
          "gradle.properties"
        ],
        "commitId" : "35548db75de85c0441a83620284c3f99155699c1",
        "timestamp" : 1782533632000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add ipc server package to logging messages.\u000a",
        "date" : "2026-06-27 12:13:52 +0800",
        "id" : "35548db75de85c0441a83620284c3f99155699c1",
        "msg" : "Add ipc server package to logging messages.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt"
        ],
        "commitId" : "85aa382bc28a2e7071eff28e58c3da5f16a2a478",
        "timestamp" : 1782570069000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Minor: Spelling correction and remove unused imports.\u000a",
        "date" : "2026-06-27 22:21:09 +0800",
        "id" : "85aa382bc28a2e7071eff28e58c3da5f16a2a478",
        "msg" : "Minor: Spelling correction and remove unused imports.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/native_demo/index.json",
          "respect-server/src/main/resources/http/respect-ds/native_demo/Lesson-manifest.json",
          "respect-server/src/main/resources/http/respect-ds/native_demo/lesson001/lesson001.json",
          "respect-app-compose/README.md",
          "respect-server/src/main/resources/http/respect-ds/native_demo/lesson001/lesson001.html",
          "respect-server/src/main/resources/http/respect-ds/native_demo/Lesson",
          "respect-server/src/main/resources/http/respect-ds/native_demo/appmanifest.json"
        ],
        "commitId" : "a9bb992f2e3d0c75eedf5405b01909244d2e46df",
        "timestamp" : 1782658202000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update native demo case.\u000a",
        "date" : "2026-06-28 22:50:02 +0800",
        "id" : "a9bb992f2e3d0c75eedf5405b01909244d2e46df",
        "msg" : "Update native demo case.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/lesson001/lesson001.html"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/appmanifest.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/Lesson"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/Lesson-manifest.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/lesson001/lesson001.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/testing/SendDbToServerViewModel.kt",
          ".maestro/flows/subflows/send_db_to_server.yaml",
          "respect-server/src/main/kotlin/world/respect/server/AppConfigExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCaseClient.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-server/src/main/resources/application.conf",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
        ],
        "commitId" : "2f49fe14fedc8dba6d753481114f1ad727d5ffca",
        "timestamp" : 1782716042000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "E2E Database Upload Feature\u000a",
        "date" : "2026-06-29 12:24:02 +0530",
        "id" : "2f49fe14fedc8dba6d753481114f1ad727d5ffca",
        "msg" : "E2E Database Upload Feature",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.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/testing/SendDbToServerScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/AppConfigExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/testing/SendDbToServerViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/send_db_to_server.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/application.conf"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/GetDbFilesForUploadUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/GetDbFilesForUploadUseCaseAndroid.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt"
        ],
        "commitId" : "1471e92c6535bd0b4273061ea4d4d7e243e10a2a",
        "timestamp" : 1782716062000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "E2E Database Upload Feature\u000a",
        "date" : "2026-06-29 12:24:22 +0530",
        "id" : "1471e92c6535bd0b4273061ea4d4d7e243e10a2a",
        "msg" : "E2E Database Upload Feature",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/GetDbFilesForUploadUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/GetDbFilesForUploadUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/GetDbFilesForUploadUseCaseAndroid.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolDbPath.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "115b6162cda3f74a53f7f66b29b1dcd037a96e7c",
        "timestamp" : 1782760941000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj",
          "fullName" : "Nikunj Sharma"
        },
        "authorEmail" : "swaggy.infolabs@gmail.com",
        "comment" : "pull req comments\u000a",
        "date" : "2026-06-30 00:52:21 +0530",
        "id" : "115b6162cda3f74a53f7f66b29b1dcd037a96e7c",
        "msg" : "pull req comments",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolDbPath.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/GetDbFilesForUploadUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/GetDbFilesForUploadUseCaseAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "fafdb1820085835affb5cc6b91993866afc333ef",
        "timestamp" : 1782798948000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj",
          "fullName" : "Nikunj Sharma"
        },
        "authorEmail" : "swaggy.infolabs@gmail.com",
        "comment" : "PRAGMA_CHECKPOINT added\u000a",
        "date" : "2026-06-30 11:25:48 +0530",
        "id" : "fafdb1820085835affb5cc6b91993866afc333ef",
        "msg" : "PRAGMA_CHECKPOINT added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/GetDbFilesForUploadUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "7bcafe50cb20c2d61d28143847a070c9cb3a2654",
        "timestamp" : 1782807224000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro browse lessons test flow with offline download and verification steps.\u000a",
        "date" : "2026-06-30 12:13:44 +0400",
        "id" : "7bcafe50cb20c2d61d28143847a070c9cb3a2654",
        "msg" : "Update Maestro browse lessons test flow with offline download and verification steps.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "7c7664c4992e0108c95ea2d6ff14a6665bf44388",
        "timestamp" : 1782809292000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro browse lessons test to verify offline access after app restart.\u000a",
        "date" : "2026-06-30 12:48:12 +0400",
        "id" : "7c7664c4992e0108c95ea2d6ff14a6665bf44388",
        "msg" : "Update Maestro browse lessons test to verify offline access after app restart.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "a46c8a463b5e92d14a4e5c0149d349f6e996dbd6",
        "timestamp" : 1782811647000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro browse lessons test to assert on connection error.\u000a",
        "date" : "2026-06-30 13:27:27 +0400",
        "id" : "a46c8a463b5e92d14a4e5c0149d349f6e996dbd6",
        "msg" : "Update Maestro browse lessons test to assert on connection error.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "80d82187ece676b1f5abf38fa9451612173b42d4",
        "timestamp" : 1782813757000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro browse lessons test to use a more generic error message assertion.\u000a",
        "date" : "2026-06-30 14:02:37 +0400",
        "id" : "80d82187ece676b1f5abf38fa9451612173b42d4",
        "msg" : "Update Maestro browse lessons test to use a more generic error message assertion.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/002_browse_lessons_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "respect-server/src/main/resources/application.conf"
        ],
        "commitId" : "d002ff9a03771364a4e7dd410e767aa72579bebc",
        "timestamp" : 1782817371000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-06-30 16:32:51 +0530",
        "id" : "d002ff9a03771364a4e7dd410e767aa72579bebc",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/application.conf"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "22bfaf148924806946b861a4734a6e601c811a4d",
        "timestamp" : 1782822040000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-maestro.sh` to save database files from each E2E test flow into a dedicated build folder for analysis.\u000a",
        "date" : "2026-06-30 16:20:40 +0400",
        "id" : "22bfaf148924806946b861a4734a6e601c811a4d",
        "msg" : "Update `ci-run-maestro.sh` to save database files from each E2E test flow into a dedicated build folder for analysis.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "649a7ca749845bcc712de29ff59ebd8f15bdf325",
        "timestamp" : 1782824073000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro CI script to extract the test server port and use it for database file renaming.\u000a",
        "date" : "2026-06-30 16:54:33 +0400",
        "id" : "649a7ca749845bcc712de29ff59ebd8f15bdf325",
        "msg" : "Update Maestro CI script to extract the test server port and use it for database file renaming.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "8dd295330b43e21fa724a00dfbdaf6067a953e09",
        "timestamp" : 1782825019000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update directory naming and path handling in `ci-run-maestro.sh`.\u000a",
        "date" : "2026-06-30 17:10:19 +0400",
        "id" : "8dd295330b43e21fa724a00dfbdaf6067a953e09",
        "msg" : "Update directory naming and path handling in `ci-run-maestro.sh`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "a51ce3b899d3f154ae9805d1197fcb9e84a94d31",
        "timestamp" : 1782825066000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro CI script to use curly braces for the `TEST_PORT` environment variable.\u000a",
        "date" : "2026-06-30 17:11:06 +0400",
        "id" : "a51ce3b899d3f154ae9805d1197fcb9e84a94d31",
        "msg" : "Update Maestro CI script to use curly braces for the `TEST_PORT` environment variable.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "92677cb2530e80c1095a6d750e0889ebb37d912c",
        "timestamp" : 1782825545000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Ensure only the first port match is extracted from logs in `ci-run-maestro.sh`.\u000a",
        "date" : "2026-06-30 17:19:05 +0400",
        "id" : "92677cb2530e80c1095a6d750e0889ebb37d912c",
        "msg" : "Ensure only the first port match is extracted from logs in `ci-run-maestro.sh`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "aa9d7537bb1735e2eb9bc4bc38cbeed697347060",
        "timestamp" : 1782827074000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update port extraction logic in `ci-run-maestro.sh` to correctly parse port numbers from URLs in log files.\u000a",
        "date" : "2026-06-30 17:44:34 +0400",
        "id" : "aa9d7537bb1735e2eb9bc4bc38cbeed697347060",
        "msg" : "Update port extraction logic in `ci-run-maestro.sh` to correctly parse port numbers from URLs in log files.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "a7c3ef90183ae601b4023d465e47a9b1a151de89",
        "timestamp" : 1782828278000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Refactor `ci-run-maestro.sh` to retrieve the test port via API call and simplify database path handling.\u000a",
        "date" : "2026-06-30 18:04:38 +0400",
        "id" : "a7c3ef90183ae601b4023d465e47a9b1a151de89",
        "msg" : "Refactor `ci-run-maestro.sh` to retrieve the test port via API call and simplify database path handling.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "02d0105f164a9778e1278fa64b5d9392bf37fd95",
        "timestamp" : 1782829309000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update CI Maestro script to dynamically resolve database filenames from log output.\u000a",
        "date" : "2026-06-30 18:21:49 +0400",
        "id" : "02d0105f164a9778e1278fa64b5d9392bf37fd95",
        "msg" : "Update CI Maestro script to dynamically resolve database filenames from log output.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "61f95f3c838aeb0b74d4d3eaf25f74887aae05e5",
        "timestamp" : 1782830038000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-maestro.sh` to target the specific `respect-server.log` file path for Maestro E2E test logs.\u000a",
        "date" : "2026-06-30 18:33:58 +0400",
        "id" : "61f95f3c838aeb0b74d4d3eaf25f74887aae05e5",
        "msg" : "Update `ci-run-maestro.sh` to target the specific `respect-server.log` file path for Maestro E2E test logs.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "3a9acc3f0b1c055edf8de60695aa21d36314b9a1",
        "timestamp" : 1782832119000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-maestro.sh` to extract filenames from the correct log path and add validation for empty filenames.\u000a",
        "date" : "2026-06-30 19:08:39 +0400",
        "id" : "3a9acc3f0b1c055edf8de60695aa21d36314b9a1",
        "msg" : "Update `ci-run-maestro.sh` to extract filenames from the correct log path and add validation for empty filenames.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "51ec1a34b0e58a3d43c69c356281e645a2a3c231",
        "timestamp" : 1782832712000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro CI script to use `ROOTDIR` instead of `WORKSPACE` for test log and database paths.\u000a",
        "date" : "2026-06-30 19:18:32 +0400",
        "id" : "51ec1a34b0e58a3d43c69c356281e645a2a3c231",
        "msg" : "Update Maestro CI script to use `ROOTDIR` instead of `WORKSPACE` for test log and database paths.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "7955dd487c80261f1ee3c78f148651ef3e631992",
        "timestamp" : 1782884691000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Refactor Maestro E2E test database extraction in CI script.\u000a\u000aSimplify the process of copying database files from test workspaces to the build folder and remove unused log file parsing for filenames.\u000a",
        "date" : "2026-07-01 09:44:51 +0400",
        "id" : "7955dd487c80261f1ee3c78f148651ef3e631992",
        "msg" : "Refactor Maestro E2E test database extraction in CI script.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "97fc3f22b5c1d7773e585ee0110c33e203be6762",
        "timestamp" : 1782888272000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Remove database backup logic from the Maestro CI script.\u000a",
        "date" : "2026-07-01 10:44:32 +0400",
        "id" : "97fc3f22b5c1d7773e585ee0110c33e203be6762",
        "msg" : "Remove database backup logic from the Maestro CI script.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/002_browse_lessons_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "d5e944d98c4219c9942e3efe8a48bbacbcd81d08",
        "timestamp" : 1782889079000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "addede send_db_to_server command in all test\u000a",
        "date" : "2026-07-01 12:27:59 +0530",
        "id" : "d5e944d98c4219c9942e3efe8a48bbacbcd81d08",
        "msg" : "addede send_db_to_server command in all test",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "674ea38cc9b137d54b101bfb2e9470ecfa408abb",
        "timestamp" : 1782889087000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-maestro.sh` to log Cloud run status and define `MAESTRO_LOG_FILE` before extracting the URL.\u000a",
        "date" : "2026-07-01 10:58:07 +0400",
        "id" : "674ea38cc9b137d54b101bfb2e9470ecfa408abb",
        "msg" : "Update `ci-run-maestro.sh` to log Cloud run status and define `MAESTRO_LOG_FILE` before extracting the URL.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "4d4d8f52690aea2940452047295aacdacb954dae",
        "timestamp" : 1782891797000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro CI script to back up test databases and refine flow naming.\u000a",
        "date" : "2026-07-01 11:43:17 +0400",
        "id" : "4d4d8f52690aea2940452047295aacdacb954dae",
        "msg" : "Update Maestro CI script to back up test databases and refine flow naming.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt"
        ],
        "commitId" : "dc6a6252ee57b91a7457780d1ed6ed67c593f044",
        "timestamp" : 1782897886000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix SelectLang.kt to use the code string exactly as found in the availableLocales.\u000a",
        "date" : "2026-07-01 13:24:46 +0400",
        "id" : "dc6a6252ee57b91a7457780d1ed6ed67c593f044",
        "msg" : "Fix SelectLang.kt to use the code string exactly as found in the availableLocales.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geticonforxapiactivity/GetPublicationForXapiActivityUseCase.kt"
        ],
        "commitId" : "35524229a3fe45ee141b27f715d3eeac7446b651",
        "timestamp" : 1782898366000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add use case to get Opds Publication for a given XapiActivity.\u000a\u000aUpdate to use xapiResource.statements.\u000a",
        "date" : "2026-07-01 13:32:46 +0400",
        "id" : "35524229a3fe45ee141b27f715d3eeac7446b651",
        "msg" : "Add use case to get Opds Publication for a given XapiActivity.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.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/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geticonforxapiactivity/GetPublicationForXapiActivityUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
        ],
        "commitId" : "901f5bc08f6bf5ff44154439f3de95070c01164c",
        "timestamp" : 1782900242000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Restore the icon\u000a",
        "date" : "2026-07-01 15:34:02 +0530",
        "id" : "901f5bc08f6bf5ff44154439f3de95070c01164c",
        "msg" : "Restore the icon",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "6bd94dd160317de2e4620054e3dca8a2beababef",
        "timestamp" : 1782903174000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Remove database file backup logic from Maestro CI script.\u000a",
        "date" : "2026-07-01 14:52:54 +0400",
        "id" : "6bd94dd160317de2e4620054e3dca8a2beababef",
        "msg" : "Remove database file backup logic from Maestro CI script.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
        ],
        "commitId" : "bec5695c4a551468d22c9722f80e184bdf525d09",
        "timestamp" : 1782904956000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update XapiStatementsResourceDb and DAOs to allow all users read access to list of apps.\u000a",
        "date" : "2026-07-01 15:22:36 +0400",
        "id" : "bec5695c4a551468d22c9722f80e184bdf525d09",
        "msg" : "Update XapiStatementsResourceDb and DAOs to allow all users read access to list of apps.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "95aaa6f35fb99dadc698d4f22c482c2a79b1039d",
        "timestamp" : 1782907815000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Refactor app list to use OPDS catalog from school configuration instead of xAPI statements.\u000a",
        "date" : "2026-07-01 17:40:15 +0530",
        "id" : "95aaa6f35fb99dadc698d4f22c482c2a79b1039d",
        "msg" : "Refactor app list to use OPDS catalog from school configuration instead of xAPI statements.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
        ],
        "commitId" : "9decb1c0fc63c3cf4ad94685ebc705ca63d9f1d3",
        "timestamp" : 1782909386000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Remove unused imports in `AppBar.kt`.\u000a",
        "date" : "2026-07-01 18:06:26 +0530",
        "id" : "9decb1c0fc63c3cf4ad94685ebc705ca63d9f1d3",
        "msg" : "Remove unused imports in `AppBar.kt`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "60d67fa744f1fd64ad8e4cc893cf4453d1f02d49",
        "timestamp" : 1782915540000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Move several Maestro E2E test flows to the flows-pending directory.\u000a",
        "date" : "2026-07-01 18:19:00 +0400",
        "id" : "60d67fa744f1fd64ad8e4cc893cf4453d1f02d49",
        "msg" : "Move several Maestro E2E test flows to the flows-pending directory.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "ef54b502a94af8e5bed98a87998ee11f77dcbedf",
        "timestamp" : 1782916049000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Move user invitation and class assignment Maestro tests from pending to active flows.\u000a",
        "date" : "2026-07-01 18:27:29 +0400",
        "id" : "ef54b502a94af8e5bed98a87998ee11f77dcbedf",
        "msg" : "Move user invitation and class assignment Maestro tests from pending to active flows.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
        ],
        "commitId" : "8775efa7000ab2f33b1803bcf18eeee846e58377",
        "timestamp" : 1782916950000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove unused openeelxapiconstant val.\u000a",
        "date" : "2026-07-01 18:42:30 +0400",
        "id" : "8775efa7000ab2f33b1803bcf18eeee846e58377",
        "msg" : "Remove unused openeelxapiconstant val.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/StatementDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "d97b15307f75298e6bd61d00324311becde4ec88",
        "timestamp" : 1782918746000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update to use xapiResource.statements.\u000a",
        "date" : "2026-07-01 19:12:26 +0400",
        "id" : "d97b15307f75298e6bd61d00324311becde4ec88",
        "msg" : "Update to use xapiResource.statements.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/StatementDetailViewModel.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/statement/detail/RawStatementViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolDbPath.kt"
        ],
        "commitId" : "0ed8b9305f20bc91f8b73ea2ef82a2fcdf894ef1",
        "timestamp" : 1782976551000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "DB_EXTENSION added\u000a",
        "date" : "2026-07-02 12:45:51 +0530",
        "id" : "0ed8b9305f20bc91f8b73ea2ef82a2fcdf894ef1",
        "msg" : "DB_EXTENSION added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolDbPath.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          ".maestro/flows/subflows/send_db_to_server.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/testing/SendDbToServerViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCaseClient.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCase.kt",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
        ],
        "commitId" : "8b8963a57ed44d89e905059a7378a41faa41f354",
        "timestamp" : 1782978508000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "added file name\u000a",
        "date" : "2026-07-02 13:18:28 +0530",
        "id" : "8b8963a57ed44d89e905059a7378a41faa41f354",
        "msg" : "added file name",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/send_db_to_server.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/testing/SendDbToServerViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/StatementDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/StatementDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
        ],
        "commitId" : "bc829cf92a92e6817294f49337673a32c3d92779",
        "timestamp" : 1782989948000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "add empty state on statemnt list screen and show bottom bar\u000a",
        "date" : "2026-07-02 16:29:08 +0530",
        "id" : "bc829cf92a92e6817294f49337673a32c3d92779",
        "msg" : "add empty state on statemnt list screen and show bottom bar",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/StatementDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/StatementDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "1574ddcfb8fe95d4b4e511cf794477469cc04f6b",
        "timestamp" : 1782989982000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro E2E test to replace multiple back navigations with direct tab navigation and verify assignment edit functionality.\u000a",
        "date" : "2026-07-02 14:59:42 +0400",
        "id" : "1574ddcfb8fe95d4b4e511cf794477469cc04f6b",
        "msg" : "Update Maestro E2E test to replace multiple back navigations with direct tab navigation and verify assignment edit functionality.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "dcd9e0c4ea861ab41f0f979b615b8dfe7bd5bd3c",
        "timestamp" : 1782990589000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro E2E test for admin assignment to verify \"Statement Maker\" activity details.\u000a",
        "date" : "2026-07-02 15:09:49 +0400",
        "id" : "dcd9e0c4ea861ab41f0f979b615b8dfe7bd5bd3c",
        "msg" : "Update Maestro E2E test for admin assignment to verify \"Statement Maker\" activity details.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "438289ec5134532bc22b6bdc61601c9fd0f8d3c5",
        "timestamp" : 1782991431000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro E2E test to verify going to the statement list even when there is no result for the assigned unit yet\u000a",
        "date" : "2026-07-02 15:23:51 +0400",
        "id" : "438289ec5134532bc22b6bdc61601c9fd0f8d3c5",
        "msg" : "Update Maestro E2E test to verify going to the statement list even when there is no result for the assigned unit yet",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectEmptyListComponent.kt"
        ],
        "commitId" : "f694630cc0143d4c594890a653b168565fc4d384",
        "timestamp" : 1782991691000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "update RespectEmptyListComponent for reuse\u000a",
        "date" : "2026-07-02 16:58:11 +0530",
        "id" : "f694630cc0143d4c594890a653b168565fc4d384",
        "msg" : "update RespectEmptyListComponent for reuse",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectEmptyListComponent.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/002_browse_lessons_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/subflows/teardown.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "2664478d81fb1be3025a7a55c80f84c4a353089e",
        "timestamp" : 1782994205000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Refactor Maestro E2E test teardown logic and move several tests to pending.\u000a",
        "date" : "2026-07-02 16:10:05 +0400",
        "id" : "2664478d81fb1be3025a7a55c80f84c4a353089e",
        "msg" : "Refactor Maestro E2E test teardown logic and move several tests to pending.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/teardown.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/002_browse_lessons_test.yaml",
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows-pending/001_005_add_school_self_registration_test.yaml"
        ],
        "commitId" : "d6890ee11e5b4784e57078e0de07a9f33f976402",
        "timestamp" : 1782994378000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro teardown configuration in pending flows to include environment variables.\u000a",
        "date" : "2026-07-02 16:12:58 +0400",
        "id" : "d6890ee11e5b4784e57078e0de07a9f33f976402",
        "msg" : "Update Maestro teardown configuration in pending flows to include environment variables.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows-pending/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows-pending/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows-pending/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/GetDbFilesForUploadUseCaseAndroid.kt",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/subflows/admin_add_student.yaml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "efa92cb847fa04414c8a79971d5da67b14de46d1",
        "timestamp" : 1782994784000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "send db to server activity added\u000a",
        "date" : "2026-07-02 17:49:44 +0530",
        "id" : "efa92cb847fa04414c8a79971d5da67b14de46d1",
        "msg" : "send db to server activity added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_student.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/GetDbFilesForUploadUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "73e89ffd754cef9befa01b119c8ae2d7d385cd90",
        "timestamp" : 1782997177000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update the teardown subflow configuration in the admin assignment E2E test to use `db-final`.\u000a",
        "date" : "2026-07-02 16:59:37 +0400",
        "id" : "73e89ffd754cef9befa01b119c8ae2d7d385cd90",
        "msg" : "Update the teardown subflow configuration in the admin assignment E2E test to use `db-final`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "00434d7246b4228243ae2cac530173fbffc2768f",
        "timestamp" : 1782999026000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add a function to `ci-run-maestro.sh` to archive test artifacts into a zip file.\u000a",
        "date" : "2026-07-02 17:30:26 +0400",
        "id" : "00434d7246b4228243ae2cac530173fbffc2768f",
        "msg" : "Add a function to `ci-run-maestro.sh` to archive test artifacts into a zip file.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "811afb2000eea125e551ec1735faa900f92c68c6",
        "timestamp" : 1782999099000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Ensure artifact zip creation on exit in `ci-run-maestro.sh` using a trap.\u000a",
        "date" : "2026-07-02 17:31:39 +0400",
        "id" : "811afb2000eea125e551ec1735faa900f92c68c6",
        "msg" : "Ensure artifact zip creation on exit in `ci-run-maestro.sh` using a trap.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "31e98994a92525bd31d06f6026d4b7f69f8cd9ee",
        "timestamp" : 1782999407000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Exclude `respect-server` directories from the Maestro CI output zip.\u000a",
        "date" : "2026-07-02 17:36:47 +0400",
        "id" : "31e98994a92525bd31d06f6026d4b7f69f8cd9ee",
        "msg" : "Exclude `respect-server` directories from the Maestro CI output zip.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "13f9d58bedd12edfaa42af8943bce6d81dead37b",
        "timestamp" : 1783002848000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update the artifact ZIP output path to the build directory in `ci-run-maestro.sh`.\u000a",
        "date" : "2026-07-02 18:34:08 +0400",
        "id" : "13f9d58bedd12edfaa42af8943bce6d81dead37b",
        "msg" : "Update the artifact ZIP output path to the build directory in `ci-run-maestro.sh`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "2b07dda43e29853ccdfdfa2cb45152a15e015ccc",
        "timestamp" : 1783004876000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add cleanup step to remove old test database artifact ZIP files.\u000a",
        "date" : "2026-07-02 19:07:56 +0400",
        "id" : "2b07dda43e29853ccdfdfa2cb45152a15e015ccc",
        "msg" : "Add cleanup step to remove old test database artifact ZIP files.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/002_browse_lessons_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/subflows/teardown.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
        ],
        "commitId" : "0fd7db10014d5be7de94e9466bd7f6fddfa3ca0c",
        "timestamp" : 1783018926000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-07-03 00:32:06 +0530",
        "id" : "0fd7db10014d5be7de94e9466bd7f6fddfa3ca0c",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/teardown.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
        ],
        "commitId" : "d71f668b3b98920c773f9a03983197c20a97c352",
        "timestamp" : 1783020840000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-07-03 01:04:00 +0530",
        "id" : "d71f668b3b98920c773f9a03983197c20a97c352",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "61d56428b8864d6b5ceb9fafea6b3f3c4b2ed8df",
        "timestamp" : 1783048801000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Resolve conflicts\u000a",
        "date" : "2026-07-03 08:50:01 +0530",
        "id" : "61d56428b8864d6b5ceb9fafea6b3f3c4b2ed8df",
        "msg" : "Resolve conflicts",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
        ],
        "commitId" : "83778bf6c9e85702415b3ab2c350c37ab3456cf1",
        "timestamp" : 1783055329000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-07-03 10:38:49 +0530",
        "id" : "83778bf6c9e85702415b3ab2c350c37ab3456cf1",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "d91b52d5d4212f201db8d451cb6c1d4b9d697d14",
        "timestamp" : 1783057042000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update the Maestro CI script to refine test artifact archiving.\u000a",
        "date" : "2026-07-03 09:37:22 +0400",
        "id" : "d91b52d5d4212f201db8d451cb6c1d4b9d697d14",
        "msg" : "Update the Maestro CI script to refine test artifact archiving.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "ea8f11b15fdd36e7beef117a5eb4810aa247322f",
        "timestamp" : 1783059924000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-maestro.sh` to include all workspace directories in test artifacts and exclude unnecessary log files.\u000a",
        "date" : "2026-07-03 10:25:24 +0400",
        "id" : "ea8f11b15fdd36e7beef117a5eb4810aa247322f",
        "msg" : "Update `ci-run-maestro.sh` to include all workspace directories in test artifacts and exclude unnecessary log files.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
        ],
        "commitId" : "9836673cd5c889b381c7d36eaac5154f61ac60da",
        "timestamp" : 1783060344000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "clean up and main merged\u000a",
        "date" : "2026-07-03 12:02:24 +0530",
        "id" : "9836673cd5c889b381c7d36eaac5154f61ac60da",
        "msg" : "clean up and main merged",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/testing/SendDbToServerViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt"
        ],
        "commitId" : "7f8d1d4d818e08dc1dfa9a69bc91d166c9a04ee6",
        "timestamp" : 1783063811000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "clean up\u000a",
        "date" : "2026-07-03 13:00:11 +0530",
        "id" : "7f8d1d4d818e08dc1dfa9a69bc91d166c9a04ee6",
        "msg" : "clean up",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/testing/SendDbToServerViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearch.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HeadersExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearchTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndLocks.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderApplyNoVarySearch.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryExtraHeaders.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryExtraHeadersDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt"
        ],
        "commitId" : "fbe560bad6f4f1a1d447517740a8f37dd93b194e",
        "timestamp" : 1783176030000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add support for programmatically setting extra response headers on UstadCache.\u000a",
        "date" : "2026-07-04 18:40:30 +0400",
        "id" : "fbe560bad6f4f1a1d447517740a8f37dd93b194e",
        "msg" : "Add support for programmatically setting extra response headers on UstadCache.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryExtraHeaders.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderApplyNoVarySearch.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryExtraHeadersDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearch.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearchTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndLocks.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json"
        ],
        "commitId" : "413587b112d35fb710d6e40bc314a73d9fbdf872",
        "timestamp" : 1783176044000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add cache database update.\u000a",
        "date" : "2026-07-04 18:40:44 +0400",
        "id" : "413587b112d35fb710d6e40bc314a73d9fbdf872",
        "msg" : "Add cache database update.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearch.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/UrlBuilderApplyNoVarySearchTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearchTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderApplyNoVarySearch.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
        ],
        "commitId" : "643af8cd29701a1cc8baef226a3d0a332d898b64",
        "timestamp" : 1783185446000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add support for parsing NoVarySearch header and normalizing URLs based on the NoVarySearch header.\u000a",
        "date" : "2026-07-04 21:17:26 +0400",
        "id" : "643af8cd29701a1cc8baef226a3d0a332d898b64",
        "msg" : "Add support for parsing NoVarySearch header and normalizing URLs based on the NoVarySearch header.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearchTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearch.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/UrlBuilderApplyNoVarySearchTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderApplyNoVarySearch.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/UrlBuilderApplyNoVarySearchTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/CacheEntryExt.kt",
          "respect-lib-cache/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderNormalizeForNoVarySearch.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt",
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderApplyNoVarySearch.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt",
          "gradle/libs.versions.toml",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/UrlNormalizeForNoVarySearch.kt"
        ],
        "commitId" : "ebb77a61b6b5e73324da0f8d1895c2b32d281d97",
        "timestamp" : 1783274440000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress refactoring UstadCacheImpl to use Cache4k for in memory cache.\u000a",
        "date" : "2026-07-05 22:00:40 +0400",
        "id" : "ebb77a61b6b5e73324da0f8d1895c2b32d281d97",
        "msg" : "Work in progress refactoring UstadCacheImpl to use Cache4k for in memory cache.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/CacheEntryExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/UrlNormalizeForNoVarySearch.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/UrlBuilderApplyNoVarySearchTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderApplyNoVarySearch.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderNormalizeForNoVarySearch.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "93b34bd3995bd2c57c8e7c72a781fa32a3ca5000",
        "timestamp" : 1783322826000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update file exclusion patterns in the CI Maestro artifact zip command to correctly target nested log and data files.\u000a",
        "date" : "2026-07-06 11:27:06 +0400",
        "id" : "93b34bd3995bd2c57c8e7c72a781fa32a3ca5000",
        "msg" : "Update file exclusion patterns in the CI Maestro artifact zip command to correctly target nested log and data files.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/CacheEntryExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheExtraHeaderProvider.kt"
        ],
        "commitId" : "186338ff9bbb658314e4561684d1cbbfd81d83ae",
        "timestamp" : 1783324804000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress refactoring UstadCacheImpl to use Cache4k for in memory cache. Now passes UstadCacheJvmTest.\u000a",
        "date" : "2026-07-06 12:00:04 +0400",
        "id" : "186338ff9bbb658314e4561684d1cbbfd81d83ae",
        "msg" : "Work in progress refactoring UstadCacheImpl to use Cache4k for in memory cache. Now passes UstadCacheJvmTest.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheExtraHeaderProvider.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/CacheEntryExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
        ],
        "commitId" : "f6b879c6d6a478d767c15bf1b3d1138aa6a05d8b",
        "timestamp" : 1783325411000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add cache listener onstored call. All cache jvmtests now pass.\u000a",
        "date" : "2026-07-06 12:10:11 +0400",
        "id" : "f6b879c6d6a478d767c15bf1b3d1138aa6a05d8b",
        "msg" : "Add cache listener onstored call. All cache jvmtests now pass.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
        ],
        "commitId" : "933a6c842802e195c7eb97cb1ad309bbbee005be",
        "timestamp" : 1783325583000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add cache listener onstored call. All cache jvmtests pass and build succeeds.\u000a",
        "date" : "2026-07-06 12:13:03 +0400",
        "id" : "933a6c842802e195c7eb97cb1ad309bbbee005be",
        "msg" : "Add cache listener onstored call. All cache jvmtests pass and build succeeds.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryExtraHeaders.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryExtraHeadersDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt",
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt"
        ],
        "commitId" : "b7bfe2aaa887740ea43675158c28385f2138414f",
        "timestamp" : 1783326323000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update database migrations for UstadCacheDb.\u000a",
        "date" : "2026-07-06 12:25:23 +0400",
        "id" : "b7bfe2aaa887740ea43675158c28385f2138414f",
        "msg" : "Update database migrations for UstadCacheDb.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryExtraHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryExtraHeadersDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "1086712242bdf8527ca04d291c2f37a313433213",
        "timestamp" : 1783326700000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Exclude `server.properties` from Maestro test artifact zip files.\u000a",
        "date" : "2026-07-06 12:31:40 +0400",
        "id" : "1086712242bdf8527ca04d291c2f37a313433213",
        "msg" : "Exclude `server.properties` from Maestro test artifact zip files.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "ba425463cf1021cedc3984886917dc5390694337",
        "timestamp" : 1783331901000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-07-06 15:28:21 +0530",
        "id" : "ba425463cf1021cedc3984886917dc5390694337",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/build.gradle.kts",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt",
          "gradle/libs.versions.toml"
        ],
        "commitId" : "e58fa0d84f3da047ecae5c2cfe56c2492915b425",
        "timestamp" : 1783336453000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "clean up\u000a",
        "date" : "2026-07-06 16:44:13 +0530",
        "id" : "e58fa0d84f3da047ecae5c2cfe56c2492915b425",
        "msg" : "clean up",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt"
        ],
        "commitId" : "480110f033708125d2aa87ea53d54ffc9e71dd22",
        "timestamp" : 1783340732000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-07-06 17:55:32 +0530",
        "id" : "480110f033708125d2aa87ea53d54ffc9e71dd22",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "40f4db3d6b7b3a848127be85a800ae1bb60d1cd7",
        "timestamp" : 1783341814000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add database integrity check to Maestro CI script.\u000a",
        "date" : "2026-07-06 16:43:34 +0400",
        "id" : "40f4db3d6b7b3a848127be85a800ae1bb60d1cd7",
        "msg" : "Add database integrity check to Maestro CI script.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "dc416ecb14e4ba1f55c0d176a553e86325007e1a",
        "timestamp" : 1783343115000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add database integrity check to `ci-run-maestro.sh`.\u000a",
        "date" : "2026-07-06 17:05:15 +0400",
        "id" : "dc416ecb14e4ba1f55c0d176a553e86325007e1a",
        "msg" : "Add database integrity check to `ci-run-maestro.sh`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          "ci-run-maestro.sh",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "2007d91d1effd7af13c493b5dcc49aa5e9e2cbc1",
        "timestamp" : 1783346768000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update database integrity check logic in `ci-run-maestro.sh` and move several Maestro flows to `flows-pending`.\u000a",
        "date" : "2026-07-06 18:06:08 +0400",
        "id" : "2007d91d1effd7af13c493b5dcc49aa5e9e2cbc1",
        "msg" : "Update database integrity check logic in `ci-run-maestro.sh` and move several Maestro flows to `flows-pending`.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "f5f625f952b75b751417c9100d297fbd9fc9e21e",
        "timestamp" : 1783347498000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Move Maestro invitation and assignment tests from pending to active flows.\u000a",
        "date" : "2026-07-06 18:18:18 +0400",
        "id" : "f5f625f952b75b751417c9100d297fbd9fc9e21e",
        "msg" : "Move Maestro invitation and assignment tests from pending to active flows.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/UstadCacheDbExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt",
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/UrlNormalizeForNoVarySearch.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
        ],
        "commitId" : "7209afa8e71348459dc8f9e5b3506f7795ba29b8",
        "timestamp" : 1783415059000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of cache support for the No-Vary-Search header with passing unit tests.\u000a",
        "date" : "2026-07-07 13:04:19 +0400",
        "id" : "7209afa8e71348459dc8f9e5b3506f7795ba29b8",
        "msg" : "Initial implementation of cache support for the No-Vary-Search header with passing unit tests.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/UstadCacheDbExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/UrlNormalizeForNoVarySearch.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "025acce5f5c551dcb3ba10f6ab1247d505253139",
        "timestamp" : 1783420690000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Sort student list alphabetically in assignment detail view\u000a",
        "date" : "2026-07-07 16:08:10 +0530",
        "id" : "025acce5f5c551dcb3ba10f6ab1247d505253139",
        "msg" : "Sort student list alphabetically in assignment detail view",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "ci-run-maestro.sh"
        ],
        "commitId" : "279b45f644572c5bd691f0e71d85d54b7a1d8d7f",
        "timestamp" : 1783425671000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "e2e-uploads to e2e-client-db-uploads\u000a",
        "date" : "2026-07-07 17:31:11 +0530",
        "id" : "279b45f644572c5bd691f0e71d85d54b7a1d8d7f",
        "msg" : "e2e-uploads to e2e-client-db-uploads",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "e5141516c852287350734d6528ac37a61e36c096",
        "timestamp" : 1783425818000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update the naming convention for Maestro test artifact ZIP files.\u000a",
        "date" : "2026-07-07 16:03:38 +0400",
        "id" : "e5141516c852287350734d6528ac37a61e36c096",
        "msg" : "Update the naming convention for Maestro test artifact ZIP files.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_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/playlists/mapping/edit/PlaylistEditViewModel.kt",
          ".maestro/flows/subflows/admin_add_app.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/index.json"
        ],
        "commitId" : "702b2a00a18701e8a1952bb51fe1e641b64eb911",
        "timestamp" : 1783428690000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Fix\u000a",
        "date" : "2026-07-07 18:21:30 +0530",
        "id" : "702b2a00a18701e8a1952bb51fe1e641b64eb911",
        "msg" : "Fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/index.json"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "d9600a6eaa8e4cfa452c5c1fb1ac1a8d56e6e692",
        "timestamp" : 1783428904000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Fix\u000a",
        "date" : "2026-07-07 18:25:04 +0530",
        "id" : "d9600a6eaa8e4cfa452c5c1fb1ac1a8d56e6e692",
        "msg" : "Fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "e08c9071567b72e5b5f96ba38c8c6d0f0ca783be",
        "timestamp" : 1783475573000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update the artifact filename format in `ci-run-maestro.sh`.\u000a",
        "date" : "2026-07-08 05:52:53 +0400",
        "id" : "e08c9071567b72e5b5f96ba38c8c6d0f0ca783be",
        "msg" : "Update the artifact filename format in `ci-run-maestro.sh`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "17a174a15ad79c0f1c13d9fdf71e22d3f74e8f48",
        "timestamp" : 1783475600000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update the artifact filename format in `ci-run-maestro.sh`.\u000a",
        "date" : "2026-07-08 05:53:20 +0400",
        "id" : "17a174a15ad79c0f1c13d9fdf71e22d3f74e8f48",
        "msg" : "Update the artifact filename format in `ci-run-maestro.sh`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/lesson002.json",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/video.mp4",
          "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/lesson002.html"
        ],
        "commitId" : "edc1d5502f011d19890e85f7b880e088aedbc054",
        "timestamp" : 1783495540000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Updated test 002 with latest app-lessons\u000a",
        "date" : "2026-07-08 11:25:40 +0400",
        "id" : "edc1d5502f011d19890e85f7b880e088aedbc054",
        "msg" : "Updated test 002 with latest app-lessons",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/lesson002.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/video.mp4"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson002/lesson002.html"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearch.kt",
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/17.json",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/CacheEntryExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheExtraHeaderProvider.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryExtraHeaders.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/UstadCacheDbExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryExtraHeadersDao.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt"
        ],
        "commitId" : "18b3be7a5bf0e91f21e4d8f024df9e91199433a0",
        "timestamp" : 1783497501000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Restore support for setting extra headers on UstadCache ahead of time.\u000a\u000aUsing a programmatic extra headers provider that looks for certain parameters to identify an xAPI launch URL doesn't work when a URL is retrieved without those parameters to begin with, so it can't be readily identified.\u000a",
        "date" : "2026-07-08 11:58:21 +0400",
        "id" : "18b3be7a5bf0e91f21e4d8f024df9e91199433a0",
        "msg" : "Restore support for setting extra headers on UstadCache ahead of time.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/CacheEntryExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearch.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/UstadCacheDbExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryExtraHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheExtraHeaderProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryExtraHeadersDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/17.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
        ],
        "commitId" : "239b7285bca9384e243176242fbfbb864bcccb8d",
        "timestamp" : 1783498993000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Automatically add NoVarySearch headers to links that are going to be launched with Xapi Rustici launch method parameters.\u000a",
        "date" : "2026-07-08 12:23:13 +0400",
        "id" : "239b7285bca9384e243176242fbfbb864bcccb8d",
        "msg" : "Automatically add NoVarySearch headers to links that are going to be launched with Xapi Rustici launch method parameters.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/subflows/admin_add_app.yaml"
        ],
        "commitId" : "e5e83360514dd24536616c5837793546adf3f35a",
        "timestamp" : 1783499332000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro E2E test assertions and improve tap selector reliability.\u000a",
        "date" : "2026-07-08 12:28:52 +0400",
        "id" : "e5e83360514dd24536616c5837793546adf3f35a",
        "msg" : "Update Maestro E2E test assertions and improve tap selector reliability.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "b11c85276f4fde7ec2fc9354676cde01d0d73ce9",
        "timestamp" : 1783499541000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro browse lessons test to verify JS Tetris visibility and Tin Can Home assertions.\u000a",
        "date" : "2026-07-08 12:32:21 +0400",
        "id" : "b11c85276f4fde7ec2fc9354676cde01d0d73ce9",
        "msg" : "Update Maestro browse lessons test to verify JS Tetris visibility and Tin Can Home assertions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "3f29566c6ab5ed9521ab2c867321dd07b186fe8e",
        "timestamp" : 1783504193000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro browse lessons test to use Assignment Result Statement Demo and verify offline functionality.\u000a",
        "date" : "2026-07-08 13:49:53 +0400",
        "id" : "3f29566c6ab5ed9521ab2c867321dd07b186fe8e",
        "msg" : "Update Maestro browse lessons test to use Assignment Result Statement Demo and verify offline functionality.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "1d7069d0f63bd18d1a4e609b5eff8b9f0f28eb37",
        "timestamp" : 1783504235000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Move Maestro E2E test flows to test 002\u000a",
        "date" : "2026-07-08 13:50:35 +0400",
        "id" : "1d7069d0f63bd18d1a4e609b5eff8b9f0f28eb37",
        "msg" : "Move Maestro E2E test flows to test 002",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "b64e5235e954b762e5576b0450ba9d4ce664862f",
        "timestamp" : 1783506476000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-07-08 15:57:56 +0530",
        "id" : "b64e5235e954b762e5576b0450ba9d4ce664862f",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorAndroid.kt"
        ],
        "commitId" : "244183f3c3b4ecc6d05b676454dba6b9e33f86b7",
        "timestamp" : 1783519633000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix ConnectivityMonitorAndroid : set default connectivity to false.\u000a\u000aIf the device is offline when the app starts, there will be no call to onLost, hence this was the wrong default.\u000a",
        "date" : "2026-07-08 18:07:13 +0400",
        "id" : "244183f3c3b4ecc6d05b676454dba6b9e33f86b7",
        "msg" : "Fix ConnectivityMonitorAndroid : set default connectivity to false.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt"
        ],
        "commitId" : "7c264eb9d7794f3076b1d886108e6e548a68c45a",
        "timestamp" : 1783577664000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "excception added\u000a",
        "date" : "2026-07-09 11:44:24 +0530",
        "id" : "7c264eb9d7794f3076b1d886108e6e548a68c45a",
        "msg" : "excception added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "f2207160eb09c2dd95d5e5ce745d098c5d31ae9a",
        "timestamp" : 1783579619000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-maestro.sh` to include a configurable device OS version for Maestro Cloud runs, defaulting to `android-35`.\u000a",
        "date" : "2026-07-09 10:46:59 +0400",
        "id" : "f2207160eb09c2dd95d5e5ce745d098c5d31ae9a",
        "msg" : "Update `ci-run-maestro.sh` to include a configurable device OS version for Maestro Cloud runs, defaulting to `android-35`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "0407d02587afa5595bffe0be3774d4f56ade5c8b",
        "timestamp" : 1783580223000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Hardcode Maestro Cloud device OS to \"android-35\" and disable dynamic `DEVICE_OS` assignment in `ci-run-maestro.sh`.\u000a",
        "date" : "2026-07-09 10:57:03 +0400",
        "id" : "0407d02587afa5595bffe0be3774d4f56ade5c8b",
        "msg" : "Hardcode Maestro Cloud device OS to \"android-35\" and disable dynamic `DEVICE_OS` assignment in `ci-run-maestro.sh`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "be6431bf79cf637e9ebe46440df68db0805b020c",
        "timestamp" : 1783580475000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Correct the Maestro cloud CLI parameter from `--device-os` to `--device-locale`.\u000a",
        "date" : "2026-07-09 11:01:15 +0400",
        "id" : "be6431bf79cf637e9ebe46440df68db0805b020c",
        "msg" : "Correct the Maestro cloud CLI parameter from `--device-os` to `--device-locale`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "1036465009537aceb22a067a3b172793e22d6f70",
        "timestamp" : 1783580984000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro cloud test configuration to use the `--device-os` argument for Android 35.\u000a",
        "date" : "2026-07-09 11:09:44 +0400",
        "id" : "1036465009537aceb22a067a3b172793e22d6f70",
        "msg" : "Update Maestro cloud test configuration to use the `--device-os` argument for Android 35.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "e7cd4e6fbf3730930d5accb38ad2445936783d4f",
        "timestamp" : 1783581741000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add `MAESTRO_CLOUD_DEVICEOS` environment variable validation and parameterize the device OS in the Maestro cloud command.\u000a",
        "date" : "2026-07-09 11:22:21 +0400",
        "id" : "e7cd4e6fbf3730930d5accb38ad2445936783d4f",
        "msg" : "Add `MAESTRO_CLOUD_DEVICEOS` environment variable validation and parameterize the device OS in the Maestro cloud command.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "553c0121f78075556ec5d03739b339dd4fd00c33",
        "timestamp" : 1783581996000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-maestro.sh` to dynamically handle Maestro Cloud device OS arguments and upgrade the Android API level to 35.\u000a",
        "date" : "2026-07-09 11:26:36 +0400",
        "id" : "553c0121f78075556ec5d03739b339dd4fd00c33",
        "msg" : "Update `ci-run-maestro.sh` to dynamically handle Maestro Cloud device OS arguments and upgrade the Android API level to 35.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "9c6e31255579f068660ab3770dda380a491a763e",
        "timestamp" : 1783582029000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Remove the `MAESTRO_CLOUD_DEVICEOS` environment variable requirement from the Maestro CI script.\u000a",
        "date" : "2026-07-09 11:27:09 +0400",
        "id" : "9c6e31255579f068660ab3770dda380a491a763e",
        "msg" : "Remove the `MAESTRO_CLOUD_DEVICEOS` environment variable requirement from the Maestro CI script.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "958af4ca3cd851cbe40dc0a3ad520852dcf250ae",
        "timestamp" : 1783582406000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-maestro.sh` to fix a syntax error in the Maestro Cloud command.\u000a",
        "date" : "2026-07-09 11:33:26 +0400",
        "id" : "958af4ca3cd851cbe40dc0a3ad520852dcf250ae",
        "msg" : "Update `ci-run-maestro.sh` to fix a syntax error in the Maestro Cloud command.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "e08127f4d7869cdc53e0cf1af0523f5c0c35df2d",
        "timestamp" : 1783592956000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-maestro.sh` to use the `--device-os` argument for Maestro Cloud and simplify version detection logic.\u000a",
        "date" : "2026-07-09 14:29:16 +0400",
        "id" : "e08127f4d7869cdc53e0cf1af0523f5c0c35df2d",
        "msg" : "Update `ci-run-maestro.sh` to use the `--device-os` argument for Maestro Cloud and simplify version detection logic.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "02c426e00c15f2ddb2e9988e0ac5d46bfd6abe1f",
        "timestamp" : 1783593075000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Reorder maestro cloud command arguments in ci-run-maestro.sh.\u000a",
        "date" : "2026-07-09 14:31:15 +0400",
        "id" : "02c426e00c15f2ddb2e9988e0ac5d46bfd6abe1f",
        "msg" : "Reorder maestro cloud command arguments in ci-run-maestro.sh.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/unit.json",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
        ],
        "commitId" : "e5233bbe2b4a06a7396d891bcc123aad7cae6aea",
        "timestamp" : 1783608391000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix launching xAPI links offline\u000a\u000aPinPublicationPrepareUseCase : remove adding respectLaunchVersion - no longer needed after adding no vary search support.\u000a\u000aImprove handling of cache retrieval to handle the paradigm shift that the entry retrieved can have a URL that is different to the request URL when no-vary-search headers are applied.\u000a\u000aPreviously the getOrLoadFromDb function used the cache with a loader function in a way that the entry would be stored with the wrong key.\u000a\u000aUpdate storeFileAsUrl: add extraheaders first.\u000a\u000aSet entry limit on memory cache.\u000a",
        "date" : "2026-07-09 18:46:31 +0400",
        "id" : "e5233bbe2b4a06a7396d891bcc123aad7cae6aea",
        "msg" : "Fix launching xAPI links offline",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/unit.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
        ],
        "commitId" : "48f2a187cb3be0a0e8542a346ade77ff5299765e",
        "timestamp" : 1783611921000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Avoid unnecessary new Md5Digest\u000a",
        "date" : "2026-07-09 19:45:21 +0400",
        "id" : "48f2a187cb3be0a0e8542a346ade77ff5299765e",
        "msg" : "Avoid unnecessary new Md5Digest",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "1eafede80419f3e10eac60f8eff40d0559e62771",
        "timestamp" : 1783612975000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move tests back from flows pending to flows.\u000a",
        "date" : "2026-07-09 20:02:55 +0400",
        "id" : "1eafede80419f3e10eac60f8eff40d0559e62771",
        "msg" : "Move tests back from flows pending to flows.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
        ],
        "commitId" : "fc1ffc956c0fde222ba5aef80cb614f97319e737",
        "timestamp" : 1783617769000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Set extra headers for lesson launch url at the earliest opportunity.\u000a",
        "date" : "2026-07-09 21:22:49 +0400",
        "id" : "fc1ffc956c0fde222ba5aef80cb614f97319e737",
        "msg" : "Set extra headers for lesson launch url at the earliest opportunity.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.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/components/SelectLangMapStringByLocale.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LruMap.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/UrlNormalizeForNoVarySearch.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LaunchNoVarySearchConstants.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
        ],
        "commitId" : "12d1595be3a0eae4af3d497e7d4fd75ed51e345f",
        "timestamp" : 1783621962000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update LaunchAppUseCaseAndroid to remove only the Xapi Launch params from a URL.\u000a\u000aUpdate select lang composable function to handle potential empty case without throwing an exception (could happen during loading).\u000a",
        "date" : "2026-07-09 22:32:42 +0400",
        "id" : "12d1595be3a0eae4af3d497e7d4fd75ed51e345f",
        "msg" : "Update LaunchAppUseCaseAndroid to remove only the Xapi Launch params from a URL.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LruMap.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/UrlNormalizeForNoVarySearch.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LaunchNoVarySearchConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
        ],
        "commitId" : "349e3642d47af8044a6adfe12e2b1f9a77ee5087",
        "timestamp" : 1783622290000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix cache jvmtest compilation: missed changing a constant.\u000a",
        "date" : "2026-07-09 22:38:10 +0400",
        "id" : "349e3642d47af8044a6adfe12e2b1f9a77ee5087",
        "msg" : "Fix cache jvmtest compilation: missed changing a constant.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
        ],
        "commitId" : "5a8fb4d83be8d2a2f8489cc4ee19ba23d734562c",
        "timestamp" : 1783676454000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Remove\u000a",
        "date" : "2026-07-10 15:10:54 +0530",
        "id" : "5a8fb4d83be8d2a2f8489cc4ee19ba23d734562c",
        "msg" : "Remove",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "2fcbaf179e816baadc448a0759885ee5a3a79adc",
        "timestamp" : 1783682952000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove check for empty statement list\u000a\u000aThe assign statement itself will always appear in the list for an assigned unit because the assigned unit activity id is in the contextActivities of the assign statement: therefor this list will never be empty.\u000a",
        "date" : "2026-07-10 15:29:12 +0400",
        "id" : "2fcbaf179e816baadc448a0759885ee5a3a79adc",
        "msg" : "Remove check for empty statement list",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/RawStatementScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt"
        ],
        "commitId" : "9aad1bbe07f68a81100e8264e4b4d61af8a9faf7",
        "timestamp" : 1783684565000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-07-10 17:26:05 +0530",
        "id" : "9aad1bbe07f68a81100e8264e4b4d61af8a9faf7",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/RawStatementScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.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/statement/detail/RawStatementViewModel.kt"
        ],
        "commitId" : "6e4e221962d58b83ccadd981259fd43e306c50e7",
        "timestamp" : 1783685295000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Fix: Use Uuid type for statementId in RawStatement navigation\u000a",
        "date" : "2026-07-10 17:38:15 +0530",
        "id" : "6e4e221962d58b83ccadd981259fd43e306c50e7",
        "msg" : "Fix: Use Uuid type for statementId in RawStatement navigation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.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-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt",
          "ci-run-test-server.sh",
          "respect-server/src/main/resources/application.conf",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
        ],
        "commitId" : "f0921b19a0c43bae8caf23c3e425a52661170ab4",
        "timestamp" : 1783685765000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "changes related pull request comments\u000a",
        "date" : "2026-07-10 17:46:05 +0530",
        "id" : "f0921b19a0c43bae8caf23c3e425a52661170ab4",
        "msg" : "changes related pull request comments",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-test-server.sh"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/application.conf"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/E2EArtifactUploadActivity.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/GetDbFilesForUploadUseCaseAndroid.kt",
          "respect-server/src/main/kotlin/world/respect/server/AppConfigExt.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCaseClient.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/GetDbFilesForUploadUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/SendDbToServerActivity.kt",
          "ci-run-test-server.sh",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCaseClient.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/e2etestartifactsroute/E2ETestArtifactsRoute.kt",
          "respect-server/src/main/resources/application.conf",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiLearningUnitExt.kt"
        ],
        "commitId" : "8f0a19910d527643e1b67667c9a82a443f1f5cdc",
        "timestamp" : 1783854637000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove check for empty statement list\u000a\u000aThe assign statement itself will always appear in the list for an assigned unit because the assigned unit activity id is in the contextActivities of the assign statement: therefor this list will never be empty.\u000a",
        "date" : "2026-07-12 15:10:37 +0400",
        "id" : "8f0a19910d527643e1b67667c9a82a443f1f5cdc",
        "msg" : "Remove check for empty statement list",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/application.conf"
          },
          {
            "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/testing/SendDbToServerActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/AppConfigExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/E2EArtifactUploadActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/GetDbFilesForUploadUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-test-server.sh"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/testing/GetDbFilesForUploadUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/e2e/ReceiveDbRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiLearningUnitExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/e2etestartifactsroute/E2ETestArtifactsRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/testing/SendDbToServerUseCaseClient.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/E2EArtifactUploadActivity.kt",
          ".maestro/flows/subflows/admin_add_student.yaml",
          ".maestro/flows/subflows/e2e_artifact_upload.yaml",
          ".maestro/flows/scripts/school_init.js",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/subflows/teardown.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/README.md",
          ".maestro/flows/subflows/send_db_to_server.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCase.kt",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCaseClient.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/e2etestartifactsroute/E2ETestArtifactsRoute.kt"
        ],
        "commitId" : "a965e05f3dfe4d217bd7f1f03692aa7256d0c099",
        "timestamp" : 1783860931000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fixes and improvements for sending e2e test artifacts to the server.\u000a\u000a1) Use consistent naming: E2ETestArtifact . At the moment this is only used to upload the sqlite database, but this could change.\u000a2) Switch to using a custom uri scheme intent that makes it easier to launch the e2e artifact upload activity using openlink from a maestro flow\u000a3) Update README on running test locally to add info on enabling artifact upload : existing flow was not working without verified links.\u000a",
        "date" : "2026-07-12 16:55:31 +0400",
        "id" : "a965e05f3dfe4d217bd7f1f03692aa7256d0c099",
        "msg" : "Fixes and improvements for sending e2e test artifacts to the server.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/scripts/school_init.js"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_student.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/subflows/send_db_to_server.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/E2EArtifactUploadActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/e2etestartifactsroute/E2ETestArtifactsRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/teardown.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/e2e_artifact_upload.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "45dcb4aad7ec6b948cd64f765c226e4f2aa0a93f",
        "timestamp" : 1783861091000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update ci-run-maestro.sh to use directory name as per E2ETestArtifactsUseCase.\u000a",
        "date" : "2026-07-12 16:58:11 +0400",
        "id" : "45dcb4aad7ec6b948cd64f765c226e4f2aa0a93f",
        "msg" : "Update ci-run-maestro.sh to use directory name as per E2ETestArtifactsUseCase.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "c3ac9d42b55120ca6c40c4ce24b800276976b506",
        "timestamp" : 1783918089000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro Cloud command execution order by moving `$DEVICE_OS_ARG`.\u000a",
        "date" : "2026-07-13 08:48:09 +0400",
        "id" : "c3ac9d42b55120ca6c40c4ce24b800276976b506",
        "msg" : "Update Maestro Cloud command execution order by moving `$DEVICE_OS_ARG`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "b965993d704b39e548a97a91a0191b526d25b4eb",
        "timestamp" : 1783920134000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `MAESTRO_CLOUD_URL` extraction in `ci-run-maestro.sh` to support any host with a stable `/upload/` path.\u000a",
        "date" : "2026-07-13 09:22:14 +0400",
        "id" : "b965993d704b39e548a97a91a0191b526d25b4eb",
        "msg" : "Update `MAESTRO_CLOUD_URL` extraction in `ci-run-maestro.sh` to support any host with a stable `/upload/` path.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "717a75d91e34eee233c557f9997abaac80e8409a",
        "timestamp" : 1783922472000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update logic for retrieving `MAESTRO_CLOUD_URL` in `ci-run-cypress.sh`.\u000a",
        "date" : "2026-07-13 10:01:12 +0400",
        "id" : "717a75d91e34eee233c557f9997abaac80e8409a",
        "msg" : "Update logic for retrieving `MAESTRO_CLOUD_URL` in `ci-run-cypress.sh`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-pending/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/002_browse_lessons_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "eee40220def800ead5daccea1c4718cf3fcf1bed",
        "timestamp" : 1783922503000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Move Maestro E2E test flows to a pending directory.\u000a",
        "date" : "2026-07-13 10:01:43 +0400",
        "id" : "eee40220def800ead5daccea1c4718cf3fcf1bed",
        "msg" : "Move Maestro E2E test flows to a pending directory.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows-pending/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCaseAndroid.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCaseAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCase.kt"
        ],
        "commitId" : "a796d8ab55a5df5b0b225da8deb01be7bb163893",
        "timestamp" : 1783922760000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Remove Zammad\u000a",
        "date" : "2026-07-13 11:36:00 +0530",
        "id" : "a796d8ab55a5df5b0b225da8deb01be7bb163893",
        "msg" : "Remove Zammad",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/FeedbackSubmittedViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/FeedbackSubmittedScreen.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/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/CreateTicketUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/GetFeedbackInfoUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackTicket.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/ZammadTicketResponse.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "97509c492864da4662d4bcb64fbbfcda0f020c63",
        "timestamp" : 1783923200000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Remove Zammad\u000a",
        "date" : "2026-07-13 11:43:20 +0530",
        "id" : "97509c492864da4662d4bcb64fbbfcda0f020c63",
        "msg" : "Remove Zammad",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackCategory.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/FeedbackTicket.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/ZammadTicketResponse.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/CreateTicketUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/feedback/GetFeedbackInfoUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_003_login_using_school_link_test.yaml",
          ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/002_browse_lessons_test.yaml",
          ".maestro/flows-pending/001_002_add_user_direct_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "196a27f4e06bbba3cfc3a83edef7ab5ce7b0e743",
        "timestamp" : 1783923685000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Move Maestro E2E tests from flows-pending to flows.\u000a",
        "date" : "2026-07-13 10:21:25 +0400",
        "id" : "196a27f4e06bbba3cfc3a83edef7ab5ce7b0e743",
        "msg" : "Move Maestro E2E tests from flows-pending to flows.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows-pending/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/build.gradle.kts",
          ".gitignore",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
        ],
        "commitId" : "d98711800f348fc1690513759541a36a2d61d2bc",
        "timestamp" : 1783923904000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Remove Zammad\u000a",
        "date" : "2026-07-13 11:55:04 +0530",
        "id" : "d98711800f348fc1690513759541a36a2d61d2bc",
        "msg" : "Remove Zammad",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : ".gitignore"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "15ebb0f2a50421088794db4eecfc61bc7a7c416d",
        "timestamp" : 1783924188000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update comment in `ci-run-cypress.sh` for clarity on Maestro Cloud URL retrieval.\u000a",
        "date" : "2026-07-13 10:29:48 +0400",
        "id" : "15ebb0f2a50421088794db4eecfc61bc7a7c416d",
        "msg" : "Update comment in `ci-run-cypress.sh` for clarity on Maestro Cloud URL retrieval.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/test-description/007_001_user_signup_using_passkey_test_description.md",
          "respect-test-end-to-end/test-description/006_002_user_send_feedback_test.md"
        ],
        "commitId" : "f6c964bebe10d61d6cace43d6cd910a817782def",
        "timestamp" : 1783924225000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2026-07-13 12:00:25 +0530",
        "id" : "f6c964bebe10d61d6cace43d6cd910a817782def",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/test-description/007_001_user_signup_using_passkey_test_description.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-test-end-to-end/test-description/006_002_user_send_feedback_test.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/feedback/CreateTicketUseCaseImpl.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/feedback/GetFeedbackInfoUseCaseImpl.kt"
        ],
        "commitId" : "8c8cb741855106360e06c809a3885755c81afb79",
        "timestamp" : 1783924589000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2026-07-13 12:06:29 +0530",
        "id" : "8c8cb741855106360e06c809a3885755c81afb79",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/feedback/CreateTicketUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/feedback/GetFeedbackInfoUseCaseImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "1149035688ab9f5b6552379f3cd29f52b4e1ba0f",
        "timestamp" : 1783927239000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Remove log-based Maestro Cloud URL discovery from `ci-run-cypress.sh`.\u000a",
        "date" : "2026-07-13 11:20:39 +0400",
        "id" : "1149035688ab9f5b6552379f3cd29f52b4e1ba0f",
        "msg" : "Remove log-based Maestro Cloud URL discovery from `ci-run-cypress.sh`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "ci-run-maestro.sh"
        ],
        "commitId" : "42a8c4562d244e3807b055281feb2064962f6268",
        "timestamp" : 1783928181000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro test tags and CI configuration to run work-in-progress flows.\u000a",
        "date" : "2026-07-13 11:36:21 +0400",
        "id" : "42a8c4562d244e3807b055281feb2064962f6268",
        "msg" : "Update Maestro test tags and CI configuration to run work-in-progress flows.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "ci-run-maestro.sh"
        ],
        "commitId" : "a59fd66687de62090881871b235831b8a37e669b",
        "timestamp" : 1783928912000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro test configuration to remove the `wip` tag and include the assignment flow in standard CI runs.\u000a",
        "date" : "2026-07-13 11:48:32 +0400",
        "id" : "a59fd66687de62090881871b235831b8a37e669b",
        "msg" : "Update Maestro test configuration to remove the `wip` tag and include the assignment flow in standard CI runs.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiTextGetString.kt"
        ],
        "commitId" : "c8b0229d115405ef0ad4729e7b0f31fc6d2fb18d",
        "timestamp" : 1783929547000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add suspended UiText getUiTextString for use by view models where required.\u000a",
        "date" : "2026-07-13 11:59:07 +0400",
        "id" : "c8b0229d115405ef0ad4729e7b0f31fc6d2fb18d",
        "msg" : "Add suspended UiText getUiTextString for use by view models where required.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiTextGetString.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "73f54875b6cd05bedaff12e2622f469f00fd60d2",
        "timestamp" : 1783931069000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-cypress.sh` to capture Cypress exit code by disabling immediate exit on error.\u000a",
        "date" : "2026-07-13 12:24:29 +0400",
        "id" : "73f54875b6cd05bedaff12e2622f469f00fd60d2",
        "msg" : "Update `ci-run-cypress.sh` to capture Cypress exit code by disabling immediate exit on error.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "c5c1ab65accf27cba09619a3e972141df12bf435",
        "timestamp" : 1783931671000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add video presence check to Maestro video URL extraction script.\u000a\u000aSkip processing and log a message if no video element is found on the page.\u000a",
        "date" : "2026-07-13 12:34:31 +0400",
        "id" : "c5c1ab65accf27cba09619a3e972141df12bf435",
        "msg" : "Add video presence check to Maestro video URL extraction script.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js",
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "1b043ce5c64926d23111b4517a60e7f98ac70726",
        "timestamp" : 1783935293000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Cypress script and video extraction logic.\u000a",
        "date" : "2026-07-13 13:34:53 +0400",
        "id" : "1b043ce5c64926d23111b4517a60e7f98ac70726",
        "msg" : "Update Cypress script and video extraction logic.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "ac6eda60c32e07997be5af8a457e4e6065e7b428",
        "timestamp" : 1783940397000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Fix indentation and remove redundant closing brace in `extract-maestro-video-urls.cy.js`.\u000a",
        "date" : "2026-07-13 14:59:57 +0400",
        "id" : "ac6eda60c32e07997be5af8a457e4e6065e7b428",
        "msg" : "Fix indentation and remove redundant closing brace in `extract-maestro-video-urls.cy.js`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "ci-run-maestro.sh"
        ],
        "commitId" : "e545de983d2d8693ae61efc701deae69b30bec3b",
        "timestamp" : 1783941356000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add `e2e` tags to Maestro flows and update the CI script to filter by these tags.\u000a",
        "date" : "2026-07-13 15:15:56 +0400",
        "id" : "e545de983d2d8693ae61efc701deae69b30bec3b",
        "msg" : "Add `e2e` tags to Maestro flows and update the CI script to filter by these tags.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/package-lock.json",
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js",
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "e6d6d62def81f3588317a265b22ba4e3df3e9928",
        "timestamp" : 1783943851000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update CI script and project metadata for video downloader, and fix indentation in extraction test.\u000a",
        "date" : "2026-07-13 15:57:31 +0400",
        "id" : "e6d6d62def81f3588317a265b22ba4e3df3e9928",
        "msg" : "Update CI script and project metadata for video downloader, and fix indentation in extraction test.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/package-lock.json"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/package-lock.json"
        ],
        "commitId" : "3591ce8ab795eab1f57dafb52df7d6d14110f4f5",
        "timestamp" : 1783944131000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add ISC license to video-downloader package-lock.json.\u000a",
        "date" : "2026-07-13 16:02:11 +0400",
        "id" : "3591ce8ab795eab1f57dafb52df7d6d14110f4f5",
        "msg" : "Add ISC license to video-downloader package-lock.json.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/package-lock.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "e6acde283a8dd8a900d8cb38b4347832854cda77",
        "timestamp" : 1783944221000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Comment out E2E tags in admin user assignment Maestro flow.\u000a",
        "date" : "2026-07-13 16:03:41 +0400",
        "id" : "e6acde283a8dd8a900d8cb38b4347832854cda77",
        "msg" : "Comment out E2E tags in admin user assignment Maestro flow.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "47c2ba2b5030f12bc22de7e0f9ebeb5c26505ea7",
        "timestamp" : 1783944451000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Ignore Cypress test failure exit code in CI script to allow subsequent video download steps.\u000a",
        "date" : "2026-07-13 16:07:31 +0400",
        "id" : "47c2ba2b5030f12bc22de7e0f9ebeb5c26505ea7",
        "msg" : "Ignore Cypress test failure exit code in CI script to allow subsequent video download steps.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          "ci-run-maestro.sh",
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "dde9b03b436711af01e62a75608c7d5ea0f8773b",
        "timestamp" : 1783944813000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro CI scripts and login flow test.\u000a",
        "date" : "2026-07-13 16:13:33 +0400",
        "id" : "dde9b03b436711af01e62a75608c7d5ea0f8773b",
        "msg" : "Update Maestro CI scripts and login flow test.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          "ci-run-maestro.sh"
        ],
        "commitId" : "634bd44b82cbc1e1c42238ccafe91e6f8996194f",
        "timestamp" : 1783945869000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro E2E test flows and CI configuration.\u000a",
        "date" : "2026-07-13 16:31:09 +0400",
        "id" : "634bd44b82cbc1e1c42238ccafe91e6f8996194f",
        "msg" : "Update Maestro E2E test flows and CI configuration.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "7212e11952e97f8017cd019175f6a261980dbeaa",
        "timestamp" : 1783946125000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-maestro.sh` to append a unique timestamp to Maestro Cloud run names.\u000a",
        "date" : "2026-07-13 16:35:25 +0400",
        "id" : "7212e11952e97f8017cd019175f6a261980dbeaa",
        "msg" : "Update `ci-run-maestro.sh` to append a unique timestamp to Maestro Cloud run names.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "b400e73eebc101e7182ecc0a3d54a1b1b9238123",
        "timestamp" : 1783946198000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Refactor `ci-run-maestro.sh` to remove the fallback name argument for Maestro cloud runs.\u000a",
        "date" : "2026-07-13 16:36:38 +0400",
        "id" : "b400e73eebc101e7182ecc0a3d54a1b1b9238123",
        "msg" : "Refactor `ci-run-maestro.sh` to remove the fallback name argument for Maestro cloud runs.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "39831c2d77ee812a5cd99b53fce41eedee02a686",
        "timestamp" : 1783950980000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Simplify Maestro CI run naming by removing unique timestamp suffixes from the `BUILD_TAG`.\u000a",
        "date" : "2026-07-13 17:56:20 +0400",
        "id" : "39831c2d77ee812a5cd99b53fce41eedee02a686",
        "msg" : "Simplify Maestro CI run naming by removing unique timestamp suffixes from the `BUILD_TAG`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_XAPI_OPDS.md",
          "respect-lib-xapi-core/README_EXTENSION_PUBLICATION.md",
          "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
        ],
        "commitId" : "455cf2f79fc9f39f11443e4bf5a5bb99e221b4ad",
        "timestamp" : 1783965714000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add documentation on connections between open standards used.\u000a",
        "date" : "2026-07-13 22:01:54 +0400",
        "id" : "455cf2f79fc9f39f11443e4bf5a5bb99e221b4ad",
        "msg" : "Add documentation on connections between open standards used.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/README_XAPI_OPDS.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_EXTENSION_PUBLICATION.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_XAPI_OPDS.md"
        ],
        "commitId" : "987068954293a5bcf20450ff5f6262b4a6fc4385",
        "timestamp" : 1783965823000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add documentation on connections between open standards used.\u000a",
        "date" : "2026-07-13 22:03:43 +0400",
        "id" : "987068954293a5bcf20450ff5f6262b4a6fc4385",
        "msg" : "Add documentation on connections between open standards used.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_XAPI_OPDS.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ExpandableFabUiState.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/ExpandableFab.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
        ],
        "commitId" : "e0a9b2f13bc12b20d8dea483fb8baa0dfda0ed59",
        "timestamp" : 1784010383000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Refactor playlist list to use `ExpandableFabUiState` for creation options.\u000a",
        "date" : "2026-07-14 11:56:23 +0530",
        "id" : "e0a9b2f13bc12b20d8dea483fb8baa0dfda0ed59",
        "msg" : "Refactor playlist list to use `ExpandableFabUiState` for creation options.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ExpandableFabUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/ExpandableFab.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/GetActiveUsernameUseCase.kt"
        ],
        "commitId" : "c9b1634267ad7f19ab9fec0f4bf8e579e8fdc9ee",
        "timestamp" : 1784013818000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Refactor GetActiveUsernameUseCase\u000a",
        "date" : "2026-07-14 12:53:38 +0530",
        "id" : "c9b1634267ad7f19ab9fec0f4bf8e579e8fdc9ee",
        "msg" : "Refactor GetActiveUsernameUseCase",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/GetActiveUsernameUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.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/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/CreatePlaylistShareLinkUseCase.kt"
        ],
        "commitId" : "d2a44049e3eb0ab3c48e0c5be34476e82761f734",
        "timestamp" : 1784016927000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Fix EnterLinkViewModel and removed the constants.\u000a",
        "date" : "2026-07-14 13:45:27 +0530",
        "id" : "d2a44049e3eb0ab3c48e0c5be34476e82761f734",
        "msg" : "Fix EnterLinkViewModel and removed the constants.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/CreatePlaylistShareLinkUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/006_user_send_feedback_test.yaml",
          ".maestro/flows/006_002_user_send_feedback_test.yaml"
        ],
        "commitId" : "6920dea79eaff2307747eea0ce0b31e678185d0f",
        "timestamp" : 1784019126000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Remove `006_002_user_send_feedback_test.yaml` and replace it with a refactored `006_user_send_feedback_test.yaml` Maestro flow.\u000a",
        "date" : "2026-07-14 12:52:06 +0400",
        "id" : "6920dea79eaff2307747eea0ce0b31e678185d0f",
        "msg" : "Remove `006_002_user_send_feedback_test.yaml` and replace it with a refactored `006_user_send_feedback_test.yaml` Maestro flow.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/006_user_send_feedback_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/006_002_user_send_feedback_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/006_user_send_feedback_test.yaml"
        ],
        "commitId" : "cfb9502d3e896693ceb9725973b27d9dd4924249",
        "timestamp" : 1784020140000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update the `006_user_send_feedback_test.yaml` Maestro flow to change the visibility assertion from \"UstadMobile/Respect\" to \"Welcome to discussions!\" following the \"Public forum\" tap action.\u000a",
        "date" : "2026-07-14 13:09:00 +0400",
        "id" : "cfb9502d3e896693ceb9725973b27d9dd4924249",
        "msg" : "Update the `006_user_send_feedback_test.yaml` Maestro flow to change the visibility assertion from \"UstadMobile/Respect\" to \"Welcome to discussions!\" following the \"Public forum\" tap action.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/006_user_send_feedback_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
        ],
        "commitId" : "5773c5329499bc873dbf0c9668fb7861615ee2de",
        "timestamp" : 1784022437000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix\u000a",
        "date" : "2026-07-14 15:17:17 +0530",
        "id" : "5773c5329499bc873dbf0c9668fb7861615ee2de",
        "msg" : "fix",
        "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/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js",
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "7cb902c86e60d47fcaa495751b9661df266087f6",
        "timestamp" : 1784027938000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "changes in `.maestro/video-downloader/ci-run-cypress.sh` and `.maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js`.\u000a",
        "date" : "2026-07-14 15:18:58 +0400",
        "id" : "7cb902c86e60d47fcaa495751b9661df266087f6",
        "msg" : "changes in `.maestro/video-downloader/ci-run-cypress.sh` and `.maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js",
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "42c3990eae1df7450415bbe343a3b47a2fe86601",
        "timestamp" : 1784030533000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Summarize the changes in `.maestro/video-downloader/ci-run-cypress.sh` and `.maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js`.\u000a",
        "date" : "2026-07-14 16:02:13 +0400",
        "id" : "42c3990eae1df7450415bbe343a3b47a2fe86601",
        "msg" : "Summarize the changes in `.maestro/video-downloader/ci-run-cypress.sh` and `.maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/scripts/verifyZammadTicket.js"
        ],
        "commitId" : "470a8f86048bebaea6ad37e332a2643882fb3706",
        "timestamp" : 1784030708000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Delete `.maestro/flows/scripts/verifyZammadTicket.js` and its associated logic for validating Zammad environment variables and verifying support ticket creation via the API.\u000a",
        "date" : "2026-07-14 16:05:08 +0400",
        "id" : "470a8f86048bebaea6ad37e332a2643882fb3706",
        "msg" : "Delete `.maestro/flows/scripts/verifyZammadTicket.js` and its associated logic for validating Zammad environment variables and verifying support ticket creation via the API.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/scripts/verifyZammadTicket.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js",
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "7b2d6625eaaed04d55771f949cffdf73f592e76e",
        "timestamp" : 1784031006000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Improve the robustness and reliability of the Maestro video downloader script and Cypress extraction logic.\u000a",
        "date" : "2026-07-14 16:10:06 +0400",
        "id" : "7b2d6625eaaed04d55771f949cffdf73f592e76e",
        "msg" : "Improve the robustness and reliability of the Maestro video downloader script and Cypress extraction logic.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "596c98835491f4252e7ad3cbc9ccd873c60c567e",
        "timestamp" : 1784031285000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add `test` tag to Maestro flows and update `ci-run-maestro.sh` to exclude them from CI runs.\u000a",
        "date" : "2026-07-14 16:14:45 +0400",
        "id" : "596c98835491f4252e7ad3cbc9ccd873c60c567e",
        "msg" : "Add `test` tag to Maestro flows and update `ci-run-maestro.sh` to exclude them from CI runs.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress.config.js"
        ],
        "commitId" : "7ccafc8cfee40fe841b8760e130bb3c1318ca100",
        "timestamp" : 1784033008000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add a logging task to the Cypress configuration for the video downloader.\u000a",
        "date" : "2026-07-14 16:43:28 +0400",
        "id" : "7ccafc8cfee40fe841b8760e130bb3c1318ca100",
        "msg" : "Add a logging task to the Cypress configuration for the video downloader.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress.config.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/GetActiveUsernameUseCase.kt"
        ],
        "commitId" : "bf1507fc675170289b54f71e41eb3c8d768cf79d",
        "timestamp" : 1784033150000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Remove GetActiveUsernameUseCase\u000a",
        "date" : "2026-07-14 18:15:50 +0530",
        "id" : "bf1507fc675170289b54f71e41eb3c8d768cf79d",
        "msg" : "Remove GetActiveUsernameUseCase",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/GetActiveUsernameUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "93c8ccec19e6ce6b015e2b7088bf01ff96a83083",
        "timestamp" : 1784034484000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Remove `test` tags from Maestro flows and update CI script to include all tests.\u000a",
        "date" : "2026-07-14 17:08:04 +0400",
        "id" : "93c8ccec19e6ce6b015e2b7088bf01ff96a83083",
        "msg" : "Remove `test` tags from Maestro flows and update CI script to include all tests.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README_XAPI.md",
          "README_ADD_YOUR_APP.md",
          "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
        ],
        "commitId" : "be57e9042d93ae9a8af36103fccffddd1ce5a107",
        "timestamp" : 1784053610000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add documentation on adding a new app.\u000a",
        "date" : "2026-07-14 22:26:50 +0400",
        "id" : "be57e9042d93ae9a8af36103fccffddd1ce5a107",
        "msg" : "Add documentation on adding a new app.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "README_XAPI.md"
          },
          {
            "editType" : "add",
            "file" : "README_ADD_YOUR_APP.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
        ],
        "commitId" : "211c8704c35624871ed0bd8f255075e39387dfb9",
        "timestamp" : 1784099849000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Refactor learning-unit selection handling in `PlaylistEditViewModel` and add documentation for result types.\u000a",
        "date" : "2026-07-15 12:47:29 +0530",
        "id" : "211c8704c35624871ed0bd8f255075e39387dfb9",
        "msg" : "Refactor learning-unit selection handling in `PlaylistEditViewModel` and add documentation for result types.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README_ADD_YOUR_APP.md"
        ],
        "commitId" : "ea0af78aa264bcb7e9850726fbaec3ca4c39aefc",
        "timestamp" : 1784101656000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Clarify terms used in the add your app readme and make terminology consistent.\u000a",
        "date" : "2026-07-15 11:47:36 +0400",
        "id" : "ea0af78aa264bcb7e9850726fbaec3ca4c39aefc",
        "msg" : "Clarify terms used in the add your app readme and make terminology consistent.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_ADD_YOUR_APP.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/package.json",
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "21c5a8affaeab4ae284f0253444697195d601497",
        "timestamp" : 1784102409000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `cypress` version to 15.18.1 and clean up comments in the CI script.\u000a",
        "date" : "2026-07-15 12:00:09 +0400",
        "id" : "21c5a8affaeab4ae284f0253444697195d601497",
        "msg" : "Update `cypress` version to 15.18.1 and clean up comments in the CI script.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/package.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "5c35c4497aca0b829f2abcc18552777b96228bbd",
        "timestamp" : 1784119814000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add debug logging for Node.js, npm, and environment path in `ci-run-cypress.sh`.\u000a",
        "date" : "2026-07-15 16:50:14 +0400",
        "id" : "5c35c4497aca0b829f2abcc18552777b96228bbd",
        "msg" : "Add debug logging for Node.js, npm, and environment path in `ci-run-cypress.sh`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "4b9bc829eb844efb49c096ea75a5cbbb80184a4d",
        "timestamp" : 1784136523000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `ci-run-cypress.sh` to use Node.js version 20.20.2 via NVM.\u000a",
        "date" : "2026-07-15 21:28:43 +0400",
        "id" : "4b9bc829eb844efb49c096ea75a5cbbb80184a4d",
        "msg" : "Update `ci-run-cypress.sh` to use Node.js version 20.20.2 via NVM.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "70fa0fa6824295bc4c8dc8b53987c08a1c1ca927",
        "timestamp" : 1784138448000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Remove Node version management commands from the Cypress CI script.\u000a",
        "date" : "2026-07-15 22:00:48 +0400",
        "id" : "70fa0fa6824295bc4c8dc8b53987c08a1c1ca927",
        "msg" : "Remove Node version management commands from the Cypress CI script.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/ci-run-cypress.sh"
        ],
        "commitId" : "da4c1bf3617c55aa899f59ba53cde274f2d2b18f",
        "timestamp" : 1784183145000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Configure Node.js version 20.20.2 using NVM in the Cypress CI script.\u000a",
        "date" : "2026-07-16 10:25:45 +0400",
        "id" : "da4c1bf3617c55aa899f59ba53cde274f2d2b18f",
        "msg" : "Configure Node.js version 20.20.2 using NVM in the Cypress CI script.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/ci-run-cypress.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "4f9b5317048ff593436053170658a531554bd0f4",
        "timestamp" : 1784202446000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `extract-maestro-video-urls.cy.js` to include a pause during OTP polling and improve code comments.\u000a",
        "date" : "2026-07-16 15:47:26 +0400",
        "id" : "4f9b5317048ff593436053170658a531554bd0f4",
        "msg" : "Update `extract-maestro-video-urls.cy.js` to include a pause during OTP polling and improve code comments.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/share/PlaylistShareScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/list/PlaylistListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/externallink/ExternalLinkEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/share/PlaylistShareScreen.kt",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/edit/PlaylistEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/share/PlaylistShareViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/externallink/ExternalLinkEditViewModel.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",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/externallink/ExternalLinkEditScreen.kt"
        ],
        "commitId" : "6c6a36cd18a6c6825126e9c9e2205e5e4729791c",
        "timestamp" : 1784288128000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "rename from mapping to collections\u000a",
        "date" : "2026-07-17 17:05:28 +0530",
        "id" : "6c6a36cd18a6c6825126e9c9e2205e5e4729791c",
        "msg" : "rename from mapping to collections",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/list/PlaylistListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/share/PlaylistShareViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/share/PlaylistShareScreen.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/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/share/PlaylistShareScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/externallink/ExternalLinkEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/mapping/externallink/ExternalLinkEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/externallink/ExternalLinkEditScreen.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/playlists/collections/list/PlaylistListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/mapping/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/share/PlaylistShareViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".github/ISSUE_TEMPLATE/add_app_to_default_catalog.MD"
        ],
        "commitId" : "86b15234fb65922f53a1d0803ebc3163ae4228e4",
        "timestamp" : 1784383655000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update instructions on adding an app to the default catalog.\u000a",
        "date" : "2026-07-18 18:07:35 +0400",
        "id" : "86b15234fb65922f53a1d0803ebc3163ae4228e4",
        "msg" : "Update instructions on adding an app to the default catalog.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".github/ISSUE_TEMPLATE/add_app_to_default_catalog.MD"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/scripts/school_init.js",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/subflows/teardown.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "respect-lib-opds-model/build.gradle.kts",
          "gradle.properties",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/README.md",
          ".maestro/flows/scripts/teardown.js",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          "ci-run-maestro.sh",
          "README_ADD_YOUR_APP.md",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCaseClient.kt"
        ],
        "commitId" : "64127779cc82e240cb749968595f32363e65c11e",
        "timestamp" : 1784478624000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Updates for improved local on-prem testing\u000a\u000aFix ci-run-maestro to run shutdowns properly (change to get database copies had broken this)\u000a\u000aImprove e2e artifact uploader to wait for connectivity (avoid potential fail when airplane mode was on and connectivity is not yet ready)\u000a\u000aImprove ci-run-maestro scripts to allow for extra args/tags\u000a",
        "date" : "2026-07-19 20:30:24 +0400",
        "id" : "64127779cc82e240cb749968595f32363e65c11e",
        "msg" : "Updates for improved local on-prem testing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_ADD_YOUR_APP.md"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/scripts/teardown.js"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/teardown.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/scripts/school_init.js"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          ".maestro/flows/002_browse_lessons_test.yaml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "ci-run-maestro.sh",
          "respect-lib-xapi-nanohttpd/build.gradle.kts"
        ],
        "commitId" : "4bf198b5b4957b58d0f8ba6e597f88daf76c4067",
        "timestamp" : 1784553628000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Maestro device offline reproduction with additional logging.\u000a",
        "date" : "2026-07-20 17:20:28 +0400",
        "id" : "4bf198b5b4957b58d0f8ba6e597f88daf76c4067",
        "msg" : "Maestro device offline reproduction with additional logging.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "7d2c75f8a9b9fdc6c359ba251e266d23daa35e91",
        "timestamp" : 1784617697000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Update Maestro browse lessons test to tap on \"Home\" instead of \"Apps\".\u000a",
        "date" : "2026-07-21 12:38:17 +0530",
        "id" : "7d2c75f8a9b9fdc6c359ba251e266d23daa35e91",
        "msg" : "Update Maestro browse lessons test to tap on \"Home\" instead of \"Apps\".",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/launchable-app.json",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/GetLicenseLabelUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumSubject.kt"
        ],
        "commitId" : "d037651d1f686fda144c3a6195f9aaeda576ceb7",
        "timestamp" : 1784626851000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "update learning unit detail screen initial commit\u000a",
        "date" : "2026-07-21 15:10:51 +0530",
        "id" : "d037651d1f686fda144c3a6195f9aaeda576ceb7",
        "msg" : "update learning unit detail screen initial commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumSubject.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/GetLicenseLabelUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/launchable-app.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "93c593d02a95c94c261a59acb5c91fa96636226f",
        "timestamp" : 1784627342000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Add highlight card functionality and related links in AppsDetailScreen\u000a",
        "date" : "2026-07-21 15:19:02 +0530",
        "id" : "93c593d02a95c94c261a59acb5c91fa96636226f",
        "msg" : "Add highlight card functionality and related links in AppsDetailScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "9ed993bc3a371f9ea9d89f459a14fbe56ea6f9c3",
        "timestamp" : 1784627738000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove extra character in wrong place in ci-run-maestro.sh script.\u000a",
        "date" : "2026-07-21 13:55:38 +0400",
        "id" : "9ed993bc3a371f9ea9d89f459a14fbe56ea6f9c3",
        "msg" : "Remove extra character in wrong place in ci-run-maestro.sh script.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "ci-run-maestro.sh",
          "ci-run-test-server.sh",
          "respect-server/src/main/kotlin/world/respect/server/AppConfigExt.kt"
        ],
        "commitId" : "bf151ed7ab83bb26b5e5459e195a239c7f2c3b22",
        "timestamp" : 1784663485000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update version of TestServerController.\u000a",
        "date" : "2026-07-21 23:51:25 +0400",
        "id" : "bf151ed7ab83bb26b5e5459e195a239c7f2c3b22",
        "msg" : "Update version of TestServerController.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-test-server.sh"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/AppConfigExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md",
          "ci-run-maestro.sh",
          "ci-run-e2e-tests.sh",
          "ci-run-test-server.sh"
        ],
        "commitId" : "a73780ed5a127e5a62b391ebdbefc3145f29f2e3",
        "timestamp" : 1784709847000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Rename ci-run-maestro script to ci-run-e2e-tests.sh\u000a\u000aUpdate to latest testserver controller\u000aTidy up all e2e output into single build/ci-e2e directory.\u000a",
        "date" : "2026-07-22 12:44:07 +0400",
        "id" : "a73780ed5a127e5a62b391ebdbefc3145f29f2e3",
        "msg" : "Rename ci-run-maestro script to ci-run-e2e-tests.sh",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "ci-run-maestro.sh"
          },
          {
            "editType" : "add",
            "file" : "ci-run-e2e-tests.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-test-server.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/e2e_artifact_upload.yaml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt"
        ],
        "commitId" : "5d66aa3c0cac9af39086085837fe255c5fc4cd7d",
        "timestamp" : 1784722521000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update SendDbToServerScreen and e2e_artifact_upload to avoid artifact upload failure when no db created yet blocking server shutdown.\u000a",
        "date" : "2026-07-22 16:15:21 +0400",
        "id" : "5d66aa3c0cac9af39086085837fe255c5fc4cd7d",
        "msg" : "Update SendDbToServerScreen and e2e_artifact_upload to avoid artifact upload failure when no db created yet blocking server shutdown.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/e2e_artifact_upload.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt"
        ],
        "commitId" : "1eaedfd76f545707878e38ec564d7cde54044898",
        "timestamp" : 1784724318000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix Application.kt to create required data directory\u000a",
        "date" : "2026-07-22 16:45:18 +0400",
        "id" : "1eaedfd76f545707878e38ec564d7cde54044898",
        "msg" : "Fix Application.kt to create required data directory",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticatePasswordUseCaseDbImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/exception/ExceptionWithUiText.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/throwable/ExceptionWithHttpStatusCode.kt"
        ],
        "commitId" : "cb6afd6a1d76eb2c1a8fc2a7db0ba5573eaeb260",
        "timestamp" : 1784732644000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update login to use auto-retry and show appropriate error messages.\u000a",
        "date" : "2026-07-22 19:04:04 +0400",
        "id" : "cb6afd6a1d76eb2c1a8fc2a7db0ba5573eaeb260",
        "msg" : "Update login to use auto-retry and show appropriate error messages.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/exception/ExceptionWithUiText.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticatePasswordUseCaseDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/throwable/ExceptionWithHttpStatusCode.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/LogTags.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
        ],
        "commitId" : "1737734685efcc2457b5612ab841e824e10625bc",
        "timestamp" : 1784796984000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update PersonListViewModel: don't load from datasource when not needed on clicking an item in the list in browse mode.\u000a",
        "date" : "2026-07-23 12:56:24 +0400",
        "id" : "1737734685efcc2457b5612ab841e824e10625bc",
        "msg" : "Update PersonListViewModel: don't load from datasource when not needed on clicking an item in the list in browse mode.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/LogTags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/Constants.kt"
        ],
        "commitId" : "ef2f4319013473b008b4df5d8be46bd243fdc1ac",
        "timestamp" : 1784797367000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Removed unused Constants.kt (from Android Studio project template).\u000a",
        "date" : "2026-07-23 13:02:47 +0400",
        "id" : "ef2f4319013473b008b4df5d8be46bd243fdc1ac",
        "msg" : "Removed unused Constants.kt (from Android Studio project template).",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/Constants.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumSubjectEntityDao.kt",
          "respect-lib-opds-model/src/jvmTest/resources/lesson001.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectGenderExposedDropDownMenuField.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/db/opds/adapters/lesson001.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumSubjectEntityAdapters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/TestOpdsStorage.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt",
          "respect-lib-opds-model/src/jvmTest/kotlin/world/respect/lib/opds/model/OpdsSerializerTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumSubject.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsGroupAdapter.kt"
        ],
        "commitId" : "ec6a56271e863c32822010b12d4cb234e05d8eb8",
        "timestamp" : 1784874064000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix Opds Subject storage to/from database.\u000a",
        "date" : "2026-07-24 10:21:04 +0400",
        "id" : "ec6a56271e863c32822010b12d4cb234e05d8eb8",
        "msg" : "Fix Opds Subject storage to/from database.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/db/opds/adapters/lesson001.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-opds-model/src/jvmTest/resources/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/TestOpdsStorage.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectGenderExposedDropDownMenuField.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumSubject.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsGroupAdapter.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/school/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-opds-model/src/jvmTest/kotlin/world/respect/lib/opds/model/OpdsSerializerTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumSubjectEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDataLoadHost.kt"
        ],
        "commitId" : "d66af6b934f7177119ba8b2260bd8e9b86d91e9a",
        "timestamp" : 1784882764000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add RespectDataLoadHost component.\u000a",
        "date" : "2026-07-24 12:46:04 +0400",
        "id" : "d66af6b934f7177119ba8b2260bd8e9b86d91e9a",
        "msg" : "Add RespectDataLoadHost component.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDataLoadHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDataLoadHost.kt"
        ],
        "commitId" : "60f52d7a12e3f8c3d2207c4a94df1d2bbb82f774",
        "timestamp" : 1784885405000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update RespectDataLoadHost and DataLoadExtension functions to handle not found scenarios.\u000a",
        "date" : "2026-07-24 13:30:05 +0400",
        "id" : "60f52d7a12e3f8c3d2207c4a94df1d2bbb82f774",
        "msg" : "Update RespectDataLoadHost and DataLoadExtension functions to handle not found scenarios.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.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/components/RespectDataLoadHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "5a8fdb010ad03680c4f6559a5f0fb090c310e2cd",
        "timestamp" : 1785068189000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Minor adjustments to learning unit detail screen.\u000a",
        "date" : "2026-07-26 16:16:29 +0400",
        "id" : "5a8fdb010ad03680c4f6559a5f0fb090c310e2cd",
        "msg" : "Minor adjustments to learning unit detail screen.",
        "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-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoConstants.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/ext/DemoAppUrlExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
        ],
        "commitId" : "f44a7ef464c4114d0da4cbd16d20c3c8b760c027",
        "timestamp" : 1785070113000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "ADd demo app route.\u000a",
        "date" : "2026-07-26 16:48:33 +0400",
        "id" : "f44a7ef464c4114d0da4cbd16d20c3c8b760c027",
        "msg" : "ADd demo app route.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/ext/DemoAppUrlExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/ext/DemoAppUrlExt.kt",
          "respect-server/src/main/resources/demoapp/app_icon.png"
        ],
        "commitId" : "59c3c6039b76e19c269ac371cd5c519b09bd851d",
        "timestamp" : 1785073901000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Set icon on demo app\u000a",
        "date" : "2026-07-26 17:51:41 +0400",
        "id" : "59c3c6039b76e19c269ac371cd5c519b09bd851d",
        "msg" : "Set icon on demo app",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/demoapp/app_icon.png"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/ext/DemoAppUrlExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
        ],
        "commitId" : "5f3bd1a2f30109d8c34ff7f45df3bd4f1d320627",
        "timestamp" : 1785075828000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add demo launchable app to respect-server.\u000a",
        "date" : "2026-07-26 18:23:48 +0400",
        "id" : "5f3bd1a2f30109d8c34ff7f45df3bd4f1d320627",
        "msg" : "Add demo launchable app to respect-server.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/default-catalog.json",
          "respect-app-compose/src/androidMain/res/raw/license_label_json",
          "respect-app-compose/src/androidMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCaseAndroid.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/Lesson-manifest.json",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/ic_google_play_badge.png",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/LicenseLabelEntry.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCase.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/launchable-app.json"
        ],
        "commitId" : "58255a68b86a0a9275cf71b7a69c3014e4d3fcc7",
        "timestamp" : 1785130290000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Added Highlight card, Google play nad license label functionality and update AppsDetailScreen\u000a",
        "date" : "2026-07-27 11:01:30 +0530",
        "id" : "58255a68b86a0a9275cf71b7a69c3014e4d3fcc7",
        "msg" : "Added Highlight card, Google play nad license label functionality and update AppsDetailScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/default-catalog.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/ic_google_play_badge.png"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/Lesson-manifest.json"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/launchable-app.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/LicenseLabelEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/raw/license_label_json"
          },
          {
            "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/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-server/src/main/resources/demoapp/credits.txt",
          "respect-server/src/main/resources/demoapp/grade.jpg",
          "respect-server/src/main/resources/demoapp/books.png",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
        ],
        "commitId" : "6a2cbabf73b261ee3a265a50f5f97eb773fee32e",
        "timestamp" : 1785132247000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add icons for collections in demo app.\u000a",
        "date" : "2026-07-27 10:04:07 +0400",
        "id" : "6a2cbabf73b261ee3a265a50f5f97eb773fee32e",
        "msg" : "Add icons for collections in demo app.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/demoapp/books.png"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/demoapp/grade.jpg"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/demoapp/credits.txt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "8a30a972b9513ccf12065e76d6f6cc345a79d2ef",
        "timestamp" : 1785133145000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Added Highlight card, Google play nad license label functionality and update AppsDetailScreen\u000a",
        "date" : "2026-07-27 11:49:05 +0530",
        "id" : "8a30a972b9513ccf12065e76d6f6cc345a79d2ef",
        "msg" : "Added Highlight card, Google play nad license label functionality and update AppsDetailScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle/libs.versions.toml",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXml.kt",
          "respect-lib-xapi-core/src/jvmTest/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXmlTest.kt"
        ],
        "commitId" : "08f251ef76f44a7050f44c4828105ebf5ab90d60",
        "timestamp" : 1785136862000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Pre-modularization.\u000a",
        "date" : "2026-07-27 11:21:02 +0400",
        "id" : "08f251ef76f44a7050f44c4828105ebf5ab90d60",
        "msg" : "Pre-modularization.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXml.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/jvmTest/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXmlTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_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/detail/LearningUnitDetailViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/icon.png",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json"
        ],
        "commitId" : "80699b573cad23b3d2139277402fb7cefa570c51",
        "timestamp" : 1785136894000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "update lesson detail screen with license and subject tag\u000a",
        "date" : "2026-07-27 12:51:34 +0530",
        "id" : "80699b573cad23b3d2139277402fb7cefa570c51",
        "msg" : "update lesson detail screen with license and subject tag",
        "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/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/icon.png"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json"
          }
        ]
      },
      {
        "_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/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "8db3c8bd46886e0b937ff8e037aac2589aa6bf16",
        "timestamp" : 1785138118000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Update license label in AppsDetailScreen and modify string resource for clarity\u000a",
        "date" : "2026-07-27 13:11:58 +0530",
        "id" : "8db3c8bd46886e0b937ff8e037aac2589aa6bf16",
        "msg" : "Update license label in AppsDetailScreen and modify string resource for clarity",
        "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/detail/AppsDetailScreen.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-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/GetLicenseLabelUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "a81d67535308ffd0a3f0627b307d332459d58e9c",
        "timestamp" : 1785141561000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "merge dev-learning-unit branch to update-learning-unit-detail-screen to use getLicenseLabelUseCase\u000a",
        "date" : "2026-07-27 14:09:21 +0530",
        "id" : "a81d67535308ffd0a3f0627b307d332459d58e9c",
        "msg" : "merge dev-learning-unit branch to update-learning-unit-detail-screen to use getLicenseLabelUseCase",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.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/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/GetLicenseLabelUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
        ],
        "commitId" : "054b9391ccac065cb466b3e4139475f85571e303",
        "timestamp" : 1785142645000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-07-27 14:27:25 +0530",
        "id" : "054b9391ccac065cb466b3e4139475f85571e303",
        "msg" : "refactor",
        "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/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/launchable-app.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "ac3317c8908ac07a72c25812c0e20d7d9748f145",
        "timestamp" : 1785149507000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Enhance AppsDetailScreen with app description and update license button text for clarity\u000a",
        "date" : "2026-07-27 16:21:47 +0530",
        "id" : "ac3317c8908ac07a72c25812c0e20d7d9748f145",
        "msg" : "Enhance AppsDetailScreen with app description and update license button text for clarity",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/launchable-app.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.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/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "b896f8fc02e435f8b036a8d750a90ed9e7725a67",
        "timestamp" : 1785149808000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "Refactor LearningUnitDetail Screen\u000a",
        "date" : "2026-07-27 16:26:48 +0530",
        "id" : "b896f8fc02e435f8b036a8d750a90ed9e7725a67",
        "msg" : "Refactor LearningUnitDetail Screen",
        "paths" : [
          {
            "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/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-test-resources/build.gradle.kts",
          "respect-lib-primarykeygen/build.gradle.kts",
          "app-android/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectImageSelectButton.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseDatabaseImpl.kt",
          "respect-lib-ihttp-okhttp/build.gradle.kts",
          "respect-lib-ihttp-core/build.gradle.kts",
          "respect-datalayer-http/build.gradle.kts",
          "respect-lib-xapi-ipc-client/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt",
          "gradle/libs.versions.toml",
          "respect-lib-util/build.gradle.kts",
          "respect-lib-dataloadstate/build.gradle.kts",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/CreatePublicKeyCredentialCreationOptionsJsonUseCase.kt",
          "app-android/src/main/AndroidManifest.xml",
          "respect-lib-xapi-ipc-server/build.gradle.kts",
          "respect-lib-xxhash/build.gradle.kts",
          "respect-lib-ihttp-iostreams/build.gradle.kts",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-xapi-core/build.gradle.kts",
          "respect-lib-xapi-ipc-shared/build.gradle.kts",
          "respect-credentials/build.gradle.kts",
          "respect-datalayer-db/build.gradle.kts",
          "respect-lib-serializers/build.gradle.kts",
          "respect-app-compose/proguard-rules.pro",
          "app-android/proguard-rules.pro",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/RespectImageSelectButton.android.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt",
          "app-android/src/main/kotlin/world/respect/RespectApp.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt",
          "respect-lib-test/build.gradle.kts",
          "respect-lib-cache/build.gradle.kts",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt",
          "respect-server/build.gradle.kts",
          "gradle/wrapper/gradle-wrapper.properties",
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCase.kt",
          "respect-lib-ihttp-nanohttpd/build.gradle.kts",
          "respect-datalayer/build.gradle.kts",
          "app-android/src/main/kotlin/world/respect/AbstractAppActivity.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppActivity.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-datalayer-repository/build.gradle.kts",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "app-android/src/main/kotlin/world/respect/MainActivity.kt",
          "settings.gradle.kts",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt",
          "respect-lib-opds-model/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "gradle.properties",
          "respect-lib-shared-se/build.gradle.kts",
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "respect-lib-xapi-nanohttpd/build.gradle.kts"
        ],
        "commitId" : "934467558254bcb1d49d234badef303bc70c02da",
        "timestamp" : 1785161561000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update to AGP9 and Kotlin 2.4.10\u000a",
        "date" : "2026-07-27 18:12:41 +0400",
        "id" : "934467558254bcb1d49d234badef303bc70c02da",
        "msg" : "Update to AGP9 and Kotlin 2.4.10",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-util/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-dataloadstate/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-ihttp-iostreams/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectImageSelectButton.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseDatabaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-ihttp-okhttp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-serializers/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-credentials/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-ihttp-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-primarykeygen/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "app-android/src/main/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "app-android/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/wrapper/gradle-wrapper.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xxhash/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/RespectImageSelectButton.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/CreatePublicKeyCredentialCreationOptionsJsonUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-ihttp-core/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "app-android/src/main/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "add",
            "file" : "app-android/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared-se/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test-resources/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/proguard-rules.pro"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "app-android/src/main/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-server/src/main/resources/http/respect-ds/case_valid/default-catalog.json",
          "respect-server/src/main/resources/http/respect-ds/case_valid/Lesson-manifest.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "269eaa043a99bfd64bcd9d19e936f93c45e459f1",
        "timestamp" : 1785217886000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor AppsDetailScreen and ViewModel for improved clarity and functionality; update app titles and string resources\u000a",
        "date" : "2026-07-28 11:21:26 +0530",
        "id" : "269eaa043a99bfd64bcd9d19e936f93c45e459f1",
        "msg" : "Refactor AppsDetailScreen and ViewModel for improved clarity and functionality; update app titles and string resources",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/default-catalog.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/Lesson-manifest.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/002_002_browse_demo_app_test.yaml",
          ".maestro/flows/002_001_browse_lessons_test.yaml"
        ],
        "commitId" : "c5014adca1b80bcb5264408dae036543de7a908a",
        "timestamp" : 1785223636000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Rename `002_browse_lessons_test.yaml` to `002_001_browse_lessons_test.yaml` and add a new Maestro test flow `002_002_browse_demo_app_test.yaml` to verify the \"Demo Launchable App\" functionality, including metadata verification and lesson navigation.\u000a",
        "date" : "2026-07-28 11:27:16 +0400",
        "id" : "c5014adca1b80bcb5264408dae036543de7a908a",
        "msg" : "Rename `002_browse_lessons_test.yaml` to `002_001_browse_lessons_test.yaml` and add a new Maestro test flow `002_002_browse_demo_app_test.yaml` to verify the \"Demo Launchable App\" functionality, including metadata verification and lesson navigation.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_001_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_002_browse_demo_app_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".gitignore"
        ],
        "commitId" : "5cd915bfed64510e1b7314bdcca1ce950719d11c",
        "timestamp" : 1785223688000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `.gitignore` to ignore the `.maestro/flows/.maestro/screenshots` directory.\u000a",
        "date" : "2026-07-28 11:28:08 +0400",
        "id" : "5cd915bfed64510e1b7314bdcca1ce950719d11c",
        "msg" : "Update `.gitignore` to ignore the `.maestro/flows/.maestro/screenshots` directory.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".gitignore"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md",
          "app-android/src/main/AndroidManifest.xml",
          "ci-run-e2e-tests.sh"
        ],
        "commitId" : "50f42284321439808b17dea37136d8db2cf9510d",
        "timestamp" : 1785224026000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update e2e testing script and doc to use new APK location.\u000a",
        "date" : "2026-07-28 11:33:46 +0400",
        "id" : "50f42284321439808b17dea37136d8db2cf9510d",
        "msg" : "Update e2e testing script and doc to use new APK location.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-e2e-tests.sh"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectImageSelectButton.kt",
          "gradle.properties"
        ],
        "commitId" : "73d45e9fa1c3d68e110c9417186f87388b6dccff",
        "timestamp" : 1785225773000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove \"app name\" visible assertion.\u000a",
        "date" : "2026-07-28 12:02:53 +0400",
        "id" : "73d45e9fa1c3d68e110c9417186f87388b6dccff",
        "msg" : "Remove \"app name\" visible assertion.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectImageSelectButton.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "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",
          "respect-server/src/main/resources/http/respect-ds/case_valid/Lesson-manifest.json"
        ],
        "commitId" : "bae250ea65979db20bce91ae0981f856c07809cc",
        "timestamp" : 1785226373000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-07-28 13:42:53 +0530",
        "id" : "bae250ea65979db20bce91ae0981f856c07809cc",
        "msg" : "refactor",
        "paths" : [
          {
            "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"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/Lesson-manifest.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_browse_lessons_test.yaml"
        ],
        "commitId" : "859748e11a1c61957ff5daa2826771389481af33",
        "timestamp" : 1785227913000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update assertion and tap action text from \"Add App\" to \"Add to school apps\" in `002_001_browse_lessons_test.yaml`.\u000a",
        "date" : "2026-07-28 12:38:33 +0400",
        "id" : "859748e11a1c61957ff5daa2826771389481af33",
        "msg" : "Update assertion and tap action text from \"Add App\" to \"Add to school apps\" in `002_001_browse_lessons_test.yaml`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_app.yaml"
        ],
        "commitId" : "b9f9d9f99dac5ab75741a02b4161b476fded5ae0",
        "timestamp" : 1785228192000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update `admin_add_app.yaml` subflow to tap on \"Add to school apps\" instead of \"Add App\".\u000a",
        "date" : "2026-07-28 12:43:12 +0400",
        "id" : "b9f9d9f99dac5ab75741a02b4161b476fded5ae0",
        "msg" : "Update `admin_add_app.yaml` subflow to tap on \"Add to school apps\" instead of \"Add App\".",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCaseAndroid.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "85a95a045a8e4bd43c432322afb8aa38cf7ae3a1",
        "timestamp" : 1785235590000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Merge app and learning unit detail updates.\u000a",
        "date" : "2026-07-28 14:46:30 +0400",
        "id" : "85a95a045a8e4bd43c432322afb8aa38cf7ae3a1",
        "msg" : "Merge app and learning unit detail updates.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCaseAndroid.kt"
          },
          {
            "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/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/openexternallink/OpenExternalLinkUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/OpenExternalLinkUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCase.kt"
        ],
        "commitId" : "616a6725b58b1d329e9b43fa2aa1a01c5bbfd745",
        "timestamp" : 1785239747000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Tidyup share feedback.\u000a",
        "date" : "2026-07-28 15:55:47 +0400",
        "id" : "616a6725b58b1d329e9b43fa2aa1a01c5bbfd745",
        "msg" : "Tidyup share feedback.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WebLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/openexternallink/OpenExternalLinkUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/OpenExternalLinkUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/WhatsAppLauncherUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_002_browse_demo_app_test.yaml"
        ],
        "commitId" : "6b99719b19c906fb87b5ead61368c4658c3f76a7",
        "timestamp" : 1785240511000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix 002-002 browse to remove extra space that causes maestro test to fail. Remove assertion that relies on content of an external site.\u000a",
        "date" : "2026-07-28 16:08:31 +0400",
        "id" : "6b99719b19c906fb87b5ead61368c4658c3f76a7",
        "msg" : "Fix 002-002 browse to remove extra space that causes maestro test to fail. Remove assertion that relies on content of an external site.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_002_browse_demo_app_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_002_browse_demo_app_test.yaml"
        ],
        "commitId" : "b28e900ed5810fdbb8b8b668f53e3a68d16090df",
        "timestamp" : 1785242715000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix 002_002 remove incorrect assert visible and fix expected license info.\u000a",
        "date" : "2026-07-28 16:45:15 +0400",
        "id" : "b28e900ed5810fdbb8b8b668f53e3a68d16090df",
        "msg" : "Fix 002_002 remove incorrect assert visible and fix expected license info.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_002_browse_demo_app_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/006_user_send_feedback_test.yaml"
        ],
        "commitId" : "21bf77a143458be553aea314cb2be726fb7bec2f",
        "timestamp" : 1785320719000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix feedback maestro flow\u000a Remove unnecessary user creation and login not related to the scope of this test.\u000a",
        "date" : "2026-07-29 14:25:19 +0400",
        "id" : "21bf77a143458be553aea314cb2be726fb7bec2f",
        "msg" : "Fix feedback maestro flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/006_user_send_feedback_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README.md"
        ],
        "commitId" : "97ac20242d7390216f788048a1b7854592ce390c",
        "timestamp" : 1785405360000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update README.md\u000a\u000aUpdate README.md to specify using the latest stable channel version of Android Studio\u000a",
        "date" : "2026-07-30 13:56:00 +0400",
        "id" : "97ac20242d7390216f788048a1b7854592ce390c",
        "msg" : "Update README.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/6.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          ".maestro/flows/002_001_browse_lessons_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          ".maestro/flows/002_002_browse_demo_app_test.yaml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geticonforxapiactivity/GetPublicationForXapiActivityUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CommonSortOptions.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/5.json",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js",
          "respect-lib-shared/src/commonMain/composeResources/drawable/no_bookmark.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/AddBookmarkUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/bookmark/BookmarkListScreen.kt",
          "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/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/RemoveBookmarkUseCase.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/Snack.kt",
          ".maestro/flows/subflows/admin_add_app.yaml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/PublicationListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
        ],
        "commitId" : "beec082677ecfe343236c083f1545d158453e63f",
        "timestamp" : 1785408254000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Dev bookmark xapi (#272)\u000a\u000a* Add bookmark button to lesson details\u000a\u000a* Add bookmark functionality for learning units\u000a\u000aKey changes include:\u000a- Updating the `OpdsDataSource` interface and its implementations (`OpdsDataSourceRepository`, `OpdsDataSourceDb`) to handle observing and setting bookmark status.\u000a- Adding a `BookmarkEntity` and `BookmarkDao` to the database schema to persist bookmark state.\u000a- Implementing the bookmark logic in the `LearningUnitDetailViewModel`, which now observes and updates the bookmark status.\u000a- The bookmark button in `LearningUnitDetailScreen` now dynamically changes its icon based on whether the unit is bookmarked.\u000a\u000a* feat: Add bookmark data layer\u000a\u000aIntroduced the data layer components required for managing publication bookmarks.\u000a\u000aThis includes:\u000a- A `BookmarkEntity` to store bookmark status and timestamp.\u000a- A `BookmarkDao` with functions to insert/update bookmarks, observe a single bookmark's status, and retrieve all bookmarked publications.\u000a- An implementation in `OpdsDataSourceDb` to get a flow of bookmarked `OpdsPublication` objects.\u000a- An update to `ReadiumLinkEntityDao` to find all links associated with a publication UID.\u000a\u000a* feat: Implement fetching of bookmarked publications\u000a\u000aThis commit introduces the functionality to retrieve a list of all bookmarked publications from the local database.\u000a\u000aKey changes:\u000a\u000a-   Added `getBookmarkedPublications()` to the `OpdsDataSource` interface.\u000a-   Implemented the new function in `OpdsDataSourceRepository` to delegate the call to the local data source.\u000a-   In `OpdsDataSourceDb`, the implementation now fetches bookmarked publication entities from `BookmarkDao` and maps them to `OpdsPublication` models.\u000a-   Updated the `OpdsDataSourceHttp` stub to include the new interface method.\u000a\u000a* feat: Store title and timestamp for bookmarks\u000a\u000aThis change enhances the bookmarking functionality by storing the title of the bookmarked item and implicitly tracking when it was last updated.\u000a\u000aKey changes include:\u000a- Updating the `setBookmarkStatus` function across the `OpdsDataSource` interface and its implementations (`OpdsDataSourceDb`, `OpdsDataSourceRepository`, `OpdsDataSourceHttp`) to accept a `title` parameter.\u000a- Modifying the `BookmarkDao` to no longer retrieve `OpdsPublicationEntity` objects directly. Instead, a new `observeAllBookmarks` function returns a flow of `BookmarkEntity` objects, ordered by their update timestamp.\u000a- The `LearningUnitDetailViewModel` now passes the lesson title when setting the bookmark status.\u000a- The `OpdsDataSourceDb` was updated to implement these DAO changes and now provides a `getAllBookmarks` function.\u000a\u000a* Implement fetching of all bookmarks\u000aThis commit introduces the functionality to retrieve a list of all bookmarks.\u000a\u000a* Display app name and icon on learning unit detail screen\u000a\u000a* Store subtitle and app icon for bookmarks\u000a\u000a* Store subtitle and app icon for bookmarks\u000a\u000a* Improve code formatting in OpdsDataSourceDb\u000a\u000a* Improve code formatting in OpdsDataSourceDb\u000a\u000a* Implement bookmark list screen\u000a\u000a* Implement bookmark list screen\u000a\u000a* Implement bookmark list screen\u000a\u000a* Implement bookmark list screen\u000a\u000a* Implement bookmark list screen\u000a\u000a* Implement bookmark list screen\u000a\u000a* Refactor bookmarking logic to toggle status\u000a\u000aThis commit refactors the bookmarking functionality. Instead of explicitly passing a boolean to set the bookmark status, the `setBookmarkStatus` function now toggles the state. If a bookmark exists, it's removed; otherwise, a new one is created.\u000a\u000aThis change simplifies the bookmarking logic across the data layers and the view model. Additionally, the bookmark list screen now allows for the removal of bookmarks.\u000a\u000a* Refactor bookmarking logic to toggle status\u000a\u000aThis commit refactors the bookmarking functionality. Instead of explicitly passing a boolean to set the bookmark status, the `setBookmarkStatus` function now toggles the state. If a bookmark exists, it's removed; otherwise, a new one is created.\u000a\u000aThis change simplifies the bookmarking logic across the data layers and the view model. Additionally, the bookmark list screen now allows for the removal of bookmarks.\u000a\u000a* Delete respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/2.json\u000a\u000a* Refactor bookmarking logic to toggle status\u000a\u000aThis commit refactors the bookmarking functionality. Instead of explicitly passing a boolean to set the bookmark status, the `setBookmarkStatus` function now toggles the state. If a bookmark exists, it's removed; otherwise, a new one is created.\u000a\u000aThis change simplifies the bookmarking logic across the data layers and the view model. Additionally, the bookmark list screen now allows for the removal of bookmarks.\u000a\u000a* Refactor bookmarking logic to toggle status\u000a\u000a* Refactor: Enhance bookmark data and enable navigation\u000a\u000a* Seperation of bookmark implementation\u000a\u000a* Seperation of bookmark implementation\u000a\u000a* Update bookmark data model to include learning unit URL\u000a\u000a* Update bookmark\u000a\u000a* Move bookmarking logic from respect app data source to school data source\u000a\u000a* Update bookmark logic to use enum to delete\u000a\u000a* Rename bookmark observation methods to getBookmarkStatus and getAllBookmarks\u000a\u000a* Rename bookmark observation methods to getBookmarkStatus and getAllBookmarks\u000a\u000a* Refactor bookmarking logic to use Bookmark model and toggle status\u000a\u000a* Refactor bookmarking logic to use Bookmark model and toggle status\u000a\u000a* Refactor bookmarking logic to use Bookmark model and toggle status\u000a\u000a* Refactor bookmarking logic to use Bookmark model and toggle status\u000a\u000a* Rename Bookmark field learningUnitUrl to learningUnitManifestUrl\u000a\u000aThis commit renames the `learningUnitUrl` property in the `Bookmark` data class to `learningUnitManifestUrl` for better clarity and consistency with other parts of the codebase.\u000a\u000aThe changes include:\u000a- Updating the `Bookmark` model definition.\u000a- Updating the `BookmarkAdapter` mapping logic to reflect the rename.\u000a- Adjusting usages in `LearningUnitDetailViewModel` and `BookmarkListViewModel`.\u000a- Updating the database access logic in `BookmarkDataSourceDb`.\u000a- Cleaning up unused imports.\u000a\u000a* Rename Bookmark field learningUnitUrl to learningUnitManifestUrl\u000a\u000a* Added playlist test\u000a\u000a* Move bookmark-related database components to the school package\u000a\u000a* Move bookmark-related database components to the school package\u000a\u000a* Added bookmark test\u000a\u000a* Add user identification to bookmark database components\u000a\u000a* Add user identification to bookmark database components\u000a\u000a* Add user identification to bookmark database components\u000a\u000a* Update bookmark storage logic\u000a\u000a* Implement bookmark toggling and update database components\u000a\u000a* Refactor bookmark data layer to use unique identifiers and timestamps\u000a\u000a* Refactor bookmark data layer to use composite primary keys and remove UID generation logic\u000a\u000a* Refactor bookmark data layer to use composite primary keys and remove UID generation logic\u000a\u000a* Clean up code and refactor bookmark icon logic\u000a\u000a* Implement bookmark data layer including HTTP, DB, and Repository components\u000a\u000a* Update Bookmark model and data layer to support titles, subtitles, and images.\u000a\u000a- Add `title`, `subtitle`, and `imageUrl` properties to the `Bookmark` model.\u000a- Implement `BookmarkEntities` and `PublicationWithDetails` in the DB layer to handle relational data for bookmarks and OPDS publications.\u000a- Update `BookmarkDao` and `BookmarkDataSourceDb` to return bookmarks with their associated publication details.\u000a- Refactor `BookmarkListScreen` to display bookmark images and text content.\u000a- Add navigation logic to `AppLauncherViewModel` for navigating to the bookmark list.\u000a- Minor clean up and documentation updates in OPDS and Bookmark entities.\u000a\u000a* Remove title, subtitle, and image fields from Bookmark model and DAO logic\u000a\u000a* Add localized title support to bookmarks and update database relations\u000a\u000a* Refactor LearningUnitDetailViewModel and clean up unused imports and whitespace.\u000a\u000a* Update Bookmark model and data layer to include subtitles and improve app detail handling in LearningUnitDetailScreen.\u000a\u000a* Remove properties\u000a\u000a* Update BookmarkListViewModel to use LoadingUiState and clean up imports\u000a\u000a* Update BookmarkListViewModel to use LoadingUiState and clean up imports\u000a\u000a* Update BookmarkListViewModel to use LoadingUiState and clean up imports\u000a\u000a* Update BookmarkListViewModel to use LoadingUiState and clean up imports\u000a\u000a* Clean up formatting in BookmarkDao\u000a\u000a* Clean up formatting in BookmarkAdapter.kt\u000a\u000a* Clean up\u000a\u000a* Clean up\u000a\u000a* Clean up\u000a\u000a* Clean up LearningUnitDetailViewModel constructor and improve code formatting\u000a\u000a* Add image URL support to Bookmark model and UI components\u000a\u000a* Add BookmarkEntity to database schema and implement navigation to bookmark list from app launcher.\u000a\u000a* Add BookmarkEntity to database schema and implement navigation to bookmark list from app launcher.\u000a\u000a* Add BookmarkEntity to database schema and implement navigation to bookmark list from app launcher.\u000a\u000a* Added lesson002 and updated test\u000a\u000a* Implement bookmark navigation and fix data synchronization in BookmarkListViewModel\u000a\u000a* Update bookmark implementation to include application manifest URLs and app metadata.\u000a\u000a* commented bookmark code for playlist screen\u000a\u000a* commented bookmark code for playlist screen\u000a\u000a* Update bookmark implementation to include application manifest URLs and app metadata.\u000a\u000a* Update bookmark data layer, database entities, and cleanup ViewModel logic\u000a\u000a* Rename findBookmarks to findBookmarksWithMissingPublication and update loading logic in BookmarkListViewModel\u000a\u000a* Implement getBookmarkLastModified and findByUidList in BookmarkDao and BookmarkDataSourceDb\u000a\u000a* Register Bookmark components in RespectSchoolDatabase and update OPDS package imports\u000a\u000a* Register Bookmark components in RespectSchoolDatabase and update OPDS package imports\u000a\u000a* Add language, grade, and type fields to Bookmark model and display them in BookmarkListScreen\u000a\u000a* Update navigation labels to \"Home\" and integrate BookmarkListScreen into HomeScreen\u000a\u000a- Rename \"Apps\" navigation label to \"Home\" across `App.kt`, `AppLauncherViewModel`, and `BookmarkListViewModel`.\u000a- Update `HomeScreen` to include a new \"Bookmarks\" tab alongside the existing \"Apps\" tab.\u000a- Refactor `BookmarkListScreen` UI: remove redundant styling boxes/borders around icons and adjust icon sizing.\u000a- Update `strings.xml` to include new \"home\" and \"bookmarks\" resources and update the bookmark empty state message.\u000a- Update Maestro flow test to reflect UI text changes.\u000a\u000a* Update navigation labels to \"Home\" and integrate BookmarkListScreen into HomeScreen\u000a\u000a* Add NO_BOOKMARK to RespectImage and update EmptyBookmarkState UI in BookmarkListScreen\u000a\u000a* Add NO_BOOKMARK to RespectImage and update EmptyBookmarkState UI in BookmarkListScreen\u000a\u000a* Add NO_BOOKMARK to RespectImage and update EmptyBookmarkState UI in BookmarkListScreen\u000a\u000a* Add NO_BOOKMARK to RespectImage and update EmptyBookmarkState UI in BookmarkListScreen\u000a\u000a* Update UI layout and styling in BookmarkListScreen.kt\u000a\u000a* Update UI layout and styling in BookmarkListScreen.kt\u000a\u000a* Move no_bookmark image to shared resources and update BookmarkListScreen usage\u000a\u000a* Implement `listAsFlow` in `BookmarkDataSource` and update `BookmarkListViewModel` to reactive flow\u000a\u000aInstead Of using Paging Source I am using List as Flow because-App loading per item getting messy with paging\u000a\u000a* Implement paging support for BookmarkDataSource across DB, HTTP, and Repository layers\u000a\u000a* Remove redundant comments in BookmarkListViewModel\u000a\u000a* Introduce `BookmarkDetails` to associate bookmarks with their corresponding application data and refactor `BookmarkListViewModel` to load these details concurrently.\u000a\u000a* Update Maestro flows\u000a\u000a* test - update Maestro flow for lesson browsing\u000a\u000a* Update Maestro test flows\u000a\u000a*   **002_browse_lessons_test.yaml**: Updated the \"Bookmark\" tap index from 1 to 0 and commented out several assertion and undo steps.\u000a\u000a* Update Maestro test flows\u000a\u000a* Update Maestro test flows\u000a\u000a* Update BookmarkDataSource and related components to support includeDeleted parameter and fix BookmarkDao query\u000a\u000a* Update SnackBar implementation to support actions and implement undo functionality for bookmark removal\u000a\u000a*   Modify `App.kt` to handle `SnackbarResult` and trigger the snackbar's `onAction` callback.\u000a*   Update `BookmarkListViewModel` to use `SnackBarDispatcher` and provide an \"Undo\" action when removing a bookmark.\u000a*   Add `remove_bookmark` and `undo` string resources.\u000a\u000a* Implement `UiText.asString()` extension and update `Snack` to support `UiText` actions\u000a\u000a* Use default snackbar duration in App.kt\u000a\u000a* test is failing as Snack bar appears but due to duration by the time tapOn Undo is triggered it disappears\u000a\u000a* test: Update browse lessons Maestro flow with additional assertions\u000a\u000a* test: update browse lessons Maestro flow\u000a\u000a* Updated `002_browse_lessons_test.yaml` Maestro flow\u000a\u000a* test: update Maestro browse lessons flow\u000a\u000a* test is failing as Snack bar appears but due to duration by the time tapOn Undo is triggered it disappears\u000a\u000a* Format code and apply style improvements across bookmark and data layer components\u000a\u000a* Update icon URI handling in Bookmark and LearningUnit detail screens and resolve publication URLs in ViewModels\u000a\u000a* Update snackbar message handling to support StringUiText and StringResourceUiText in App.kt\u000a\u000a* Update snackbar message handling to support StringUiText and StringResourceUiText in App.kt\u000a\u000a* Update bookmark query field and remote sync logic.\u000a\u000a* Refactor data loading state and clean up bookmark-related logic.\u000a\u000a- Move `DataLoadState`, `DataLoadParams`, and related extensions from `world.respect.datalayer` to `world.respect.lib.dataloadstate`.\u000a- Remove `UiText.asString()` extension in favor of explicit `when` branches in the `App` composable.\u000a- Remove `AssignmentDataSource` and related references across the data layer and server routes.\u000a- Replace `getTitle()` with `langMapString()` for title resolution in `BookmarkListScreen` and `LearningUnitDetailScreen`.\u000a- Fix parameter mapping in `LearningUnitDetailViewModel` to use `learningUnitManifestUrl` and update bookmark storage logic.\u000a- Clean up unused imports and duplicate string resources.\u000a\u000a* Add `gradle-daemon-jvm.properties` to specify Java 21 for the Gradle daemon.\u000a\u000a* Add `gradle-daemon-jvm.properties` to specify Java 21 for the Gradle daemon.\u000a\u000a* Add `gradle-daemon-jvm.properties` to specify Java 21 for the Gradle daemon.\u000a\u000a* removed bookmark data source\u000a\u000a* Refactor bookmark management to use xapi statements instead of a dedicated `BookmarkDataSource`.\u000a\u000a- Remove `BookmarkDataSourceRepository` and its associated server-side route.\u000a- Update `LearningUnitDetailViewModel` to fetch and store bookmark status using `xapiResource.statements` with the `ID_BOOKMARKED` verb.\u000a- Update `BookmarkListViewModel` and `BookmarkListScreen` to display and manage bookmarks based on xapi statements and linked `OpdsPublication` data.\u000a- Add `ID_BOOKMARKED` constant to `XapiVerb`.\u000a- Update Maestro UI tests to reflect changes in sample data names and bookmark behavior.\u000a\u000a* Sort bookmark statements by timestamp in `BookmarkListViewModel` and remove unused imports and test steps.\u000a\u000a* Remove redundant newline in `002_browse_lessons_test.yaml`.\u000a\u000a* Update Maestro flow assertions to use \"Home\" instead of \"Apps\".\u000a\u000a* Update Maestro flow assertions to use \"Home\" instead of \"Apps\".\u000a\u000a* Reorganize Maestro YAML files between flows and test directories.\u000a\u000a* Update lesson visibility assertion in `002_browse_lessons_test.yaml`.\u000a\u000a* Add `BookmarkEntity` table to `RespectSchoolDatabase` schema and move Maestro test files to the `flows` directory.\u000a\u000a* Update school self-registration test and remove unused admin subflow.\u000a\u000a* Update school self-registration test and remove unused admin subflow.\u000a\u000a* Update `002_browse_lessons_test.yaml` to use `${output.TEST_APP_URL}` variable.\u000a\u000a* Update `002_browse_lessons_test.yaml` to use `${output.TEST_APP_URL}` variable.\u000a\u000a* Update `002_browse_lessons_test.yaml` to use `${output.TEST_APP_URL}` variable.\u000a\u000a* Add database schema files for versions 1 through 8 of `RespectAppDatabase`.\u000a\u000a* Add database schema files for versions 1 through 8 of `RespectAppDatabase`.\u000a\u000a* Refine code formatting and whitespace.\u000a\u000a* Refine code formatting and whitespace.\u000a\u000a* Refine imports in `SchoolDataSourceDb.kt` and remove trailing whitespace in `OpdsPublicationEntityAdapter.kt`.\u000a\u000a* Remove extraneous blank lines from documentation comments in `OpdsPublicationEntity.kt`.\u000a\u000a* Introduce `AddBookmarkUseCase` and `RemoveBookmarkUseCase` to centralize bookmarking logic and refactor view models to use these use cases.\u000a\u000a- Deleted legacy `Bookmark` model from `datalayer`.\u000a- Added `AddBookmarkUseCase` and `RemoveBookmarkUseCase` in `respect-lib-shared`.\u000a- Refactored `LearningUnitDetailViewModel` and `BookmarkListViewModel` to use the new use cases and improve error handling via snackbars.\u000a- Updated `AppKoinModule.kt` to provide the new use cases within the account scope.\u000a- Refined UI styles and string resources in `BookmarkListScreen`, `LearningUnitDetailScreen`, and `strings.xml`.\u000a- Fixed typo from `accountMananger` to `accountManager` in `LearningUnitDetailViewModel`.\u000a\u000a* Remove unused `FontWeight` import in `LearningUnitDetailScreen`.\u000a\u000a* Include `appManifestUrl` in `LearningUnitDetail` route and xAPI bookmark statements.\u000a\u000a- Update `LearningUnitDetail` route to include and persist `appManifestUrl`.\u000a- Pass `appManifestUrl` through `AddBookmarkUseCase` and store it within the xAPI statement's `context.contextActivities.parent` field.\u000a- Update `LearningUnitDetailViewModel` to fetch application data using `appManifestUrl` from the route.\u000a- Enhance `BookmarkListViewModel` to extract `appManifestUrl` from bookmark statements when navigating to unit details.\u000a- Simplify UI in `LearningUnitDetailScreen` by removing the subtitle from the supporting content row.\u000a\u000a* Refactor `BookmarkListScreen` to use `PublicationListItem` and add `trailingContent` support to `PublicationListItem`.\u000a\u000a* Remove `grade1` test case data, including `lesson002` HTML, JSON, and media assets.\u000a\u000a* Replace duplicated getString code with new getUiTextString function\u000a\u000a* Move PublicationListItem into its own file\u000a\u000a* Update `.maestro/flows/002_browse_lessons_test.yaml` to include a test flow for downloading a lesson and verifying its functionality in offline mode.\u000a\u000a* Refactor bookmark handling to utilize new XAPI constants and improve context management\u000a\u000a* Refactor AddBookmarkUseCase and LearningUnitDetailViewModel to remove appManifestUrl handling\u000a\u000a* Refactor AddBookmarkUseCase and LearningUnitDetailViewModel to remove appManifestUrl handling\u000a\u000a* Enhance AddBookmarkUseCase to include title in bookmark xAPI statement\u000a\u000a* Refactor BookmarkListViewModel and LearningUnitDetailViewModel to remove appManifestUrl handling and improve bookmark state management\u000a\u000a* Add sorting functionality to BookmarkListViewModel and UI for bookmarks\u000a\u000a* Add sorting functionality to BookmarkListViewModel and UI for bookmarks\u000a\u000a* Refactor LearningUnitDetailScreen to use Column layout for improved UI structure and add app icon\u000a\u000a* Add error handling and user feedback for bookmark operations\u000a\u000a* Add test tags to top navigation items for improved UI testing\u000a\u000a* Update `.maestro/flows/002_browse_lessons_test.yaml` to use element IDs instead of text-based indexing for navigating to the home screen and asserting home visibility.\u000a\u000a* Update Maestro test flows to use resource IDs for home navigation visibility assertions.\u000a\u000a* Update `admin_add_app.yaml` to use the resource ID `nav_home` for the home navigation tap action instead of the \"Home\" text label.\u000a\u000a* Tidyup of bookmark saving to/from xAPI.\u000a\u000a* Update `.maestro/flows/002_browse_lessons_test.yaml` to refine the navigation flow. Replace the back button action with specific navigation to the home screen and \"Apps\" section to access the \"Statement Maker\" feature.\u000a\u000a* Refactored\u000aThe screen now:\u000aExtracts the activityId\u000aPasses it as Url(activityId)to uiState.taskInfoFlow()\u000aCollects the returned flow\u000aRenders the PublicationListItem\u000a\u000a* Minor tidyup on homescreen.kt\u000a\u000a* Add bookmark button back to learning unit detail screen.\u000a\u000a* Bookmark cleanup\u000a\u000a1) Use remember on bookmarklistscreen when collecting flow\u000a2) bookmarklistviewmodel to filter current active user.\u000a\u000a* Fix 002_001 browse lessons test flow.\u000a\u000a* Tidyup bookmarks\u000a\u000a1) Learning detail screen updated to use a shared flow to avoid unnecessarily reloading app detail\u000a2) Use separate buttons enabled setting for bookmark button on learning unit detail to avoid potential end to end test flakiness: it is a separate load/API call.\u000a\u000a* Resolve OpdsPublication in BookmarkListViewModel to ensure icon will display as expected if it is a relative href.\u000a\u000a* Update demo app test to reflect navigation changes from \"Apps\" to \"Home\"\u000a\u000a* Correct license link on DemoLaunchableAppManifestRoute.kt\u000a\u000a* Update demo app test to use navigation ID for \"Home\"\u000a\u000a* Replace tapOn home with using test tag\u000a\u000a* Add additional logging to WebViewActivity and lesson launch to attempt to diagnose learning unit not opening flakey results on Maestro testing.\u000a\u000a* Add more logging on xapi_statement_maker.js .\u000a\u000a* Revert database JSON schema change: BookmarkEntity was not added when using xapi so no change.\u000a\u000a---------\u000a\u000aCo-authored-by: pooja <pooja@ustadmobile.com>\u000aCo-authored-by: Mike Dawson <mike@ustadmobile.com>\u000a",
        "date" : "2026-07-30 14:44:14 +0400",
        "id" : "beec082677ecfe343236c083f1545d158453e63f",
        "msg" : "Dev bookmark xapi (#272)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/PublicationListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/Snack.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/6.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CommonSortOptions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/RemoveBookmarkUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_002_browse_demo_app_test.yaml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/no_bookmark.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/AddBookmarkUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app.yaml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/bookmark/BookmarkListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "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/viewmodel/bookmark/BookmarkListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/5.json"
          },
          {
            "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/geticonforxapiactivity/GetPublicationForXapiActivityUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_new_student_to_class.yaml",
          ".maestro/flows/subflows/add_person_create_account.yaml",
          ".maestro/flows/subflows/admin_add_student.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows/002_001_browse_lessons_test.yaml",
          ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "7dcdde677d98a6a3b10e72d4c0a1150c2f68e93a",
        "timestamp" : 1785415095000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Improve Maestro test stability\u000a",
        "date" : "2026-07-30 16:38:15 +0400",
        "id" : "7dcdde677d98a6a3b10e72d4c0a1150c2f68e93a",
        "msg" : "Improve Maestro test stability",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_new_student_to_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/add_person_create_account.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_student.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/jvmTest/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXmlDocumentTest.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXml.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/rusticilaunch/model/TinCanXmlDocument.kt",
          "respect-lib-xapi-core/src/jvmTest/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXmlTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt",
          "respect-lib-xapi-core/build.gradle.kts"
        ],
        "commitId" : "e4042afc191b6ed7220d1d18d661a9a6354175f2",
        "timestamp" : 1785484704000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add XmlUtil and TinCanXmlDocument for deserialization.\u000a",
        "date" : "2026-07-31 11:58:24 +0400",
        "id" : "e4042afc191b6ed7220d1d18d661a9a6354175f2",
        "msg" : "Add XmlUtil and TinCanXmlDocument for deserialization.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXml.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/jvmTest/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXmlDocumentTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/rusticilaunch/model/TinCanXmlDocument.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/jvmTest/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXmlTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
        ],
        "commitId" : "faa61f31a71b8ee63ff42eeb83663138a65bdf35",
        "timestamp" : 1785493292000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update PinPublicationPrepareUseCase to include the manifest itself and images.\u000a",
        "date" : "2026-07-31 14:21:32 +0400",
        "id" : "faa61f31a71b8ee63ff42eeb83663138a65bdf35",
        "msg" : "Update PinPublicationPrepareUseCase to include the manifest itself and images.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorAndroid.kt"
        ],
        "commitId" : "81ec123a349ff08a6f530ab152003c911a9e9f21",
        "timestamp" : 1785495341000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improve logging for UstadCacheInterceptor and ConnectivityMonitorAndroid.kt\u000a",
        "date" : "2026-07-31 14:55:41 +0400",
        "id" : "81ec123a349ff08a6f530ab152003c911a9e9f21",
        "msg" : "Improve logging for UstadCacheInterceptor and ConnectivityMonitorAndroid.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
        ],
        "commitId" : "b866879743dfc1c1cc1b471ce1af3d6c40988cf7",
        "timestamp" : 1785497367000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add logging on UstadCacheInterceptor even when not applying further processing.\u000a",
        "date" : "2026-07-31 15:29:27 +0400",
        "id" : "b866879743dfc1c1cc1b471ce1af3d6c40988cf7",
        "msg" : "Add logging on UstadCacheInterceptor even when not applying further processing.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "ci-run-e2e-tests.sh",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ChannelExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
        ],
        "commitId" : "d290141a45d04b62ac859482d07c3c209b5ee129",
        "timestamp" : 1785526145000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update UstadCache to use a Channel to batch and execute database updates instead of an interval.\u000a\u000aThe interval approach led to flakey test results when the app was killed before updates were committed to the database.\u000a",
        "date" : "2026-07-31 23:29:05 +0400",
        "id" : "d290141a45d04b62ac859482d07c3c209b5ee129",
        "msg" : "Update UstadCache to use a Channel to batch and execute database updates instead of an interval.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ChannelExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-e2e-tests.sh"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCase.kt",
          "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticatePasswordUseCaseDbImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
        ],
        "commitId" : "62688c7fe742af0eaf0396c76297482ed4c3b9b7",
        "timestamp" : 1785596640000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improvements to reduce potential flakiness in Login and improve authentication logging.\u000a",
        "date" : "2026-08-01 19:04:00 +0400",
        "id" : "62688c7fe742af0eaf0396c76297482ed4c3b9b7",
        "msg" : "Improvements to reduce potential flakiness in Login and improve authentication logging.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticatePasswordUseCaseDbImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/AndroidManifest.xml",
          "respect-lib-ihttp-core/build.gradle.kts",
          "respect-lib-ihttp-iostreams/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt",
          "gradle/wrapper/gradle-wrapper.properties",
          "gradle/libs.versions.toml",
          "gradle.properties"
        ],
        "commitId" : "52845f44836ba14427dd22dbeb7169292931effa",
        "timestamp" : 1785599456000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Dependency version updates.\u000a",
        "date" : "2026-08-01 19:50:56 +0400",
        "id" : "52845f44836ba14427dd22dbeb7169292931effa",
        "msg" : "Dependency version updates.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "gradle/wrapper/gradle-wrapper.properties"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-ihttp-core/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-ihttp-iostreams/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerAppMain.kt",
          ".fleet/receipt.json"
        ],
        "commitId" : "d7157c9c817fac9e8bcb805ebf15fc52fe49ca20",
        "timestamp" : 1785658867000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Start adding support to output the demo launchable app to static files.\u000a",
        "date" : "2026-08-02 12:21:07 +0400",
        "id" : "d7157c9c817fac9e8bcb805ebf15fc52fe49ca20",
        "msg" : "Start adding support to output the demo launchable app to static files.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerAppMain.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : ".fleet/receipt.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
        ],
        "commitId" : "8718980f1acc18880a8f5860b17f1f38b650a2d4",
        "timestamp" : 1785677631000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial usage of TinCan.xml in GetXapiLaunchUrlUseCaseAndroid.kt\u000a",
        "date" : "2026-08-02 17:33:51 +0400",
        "id" : "8718980f1acc18880a8f5860b17f1f38b650a2d4",
        "msg" : "Initial usage of TinCan.xml in GetXapiLaunchUrlUseCaseAndroid.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
        ],
        "commitId" : "e368404e6e10845cf46fd83f74fa1bd09f85d5f2",
        "timestamp" : 1785761011000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress: add support to write demo app as static files.\u000a",
        "date" : "2026-08-03 16:43:31 +0400",
        "id" : "e368404e6e10845cf46fd83f74fa1bd09f85d5f2",
        "msg" : "Work in progress: add support to write demo app as static files.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonManifestUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
        ],
        "commitId" : "cecbcf5e3f9a94c4ac4ef8b7e30e384650174d53",
        "timestamp" : 1785763491000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Write demo app lesson manifest as file or use in Ktor route.\u000a",
        "date" : "2026-08-03 17:24:51 +0400",
        "id" : "cecbcf5e3f9a94c4ac4ef8b7e30e384650174d53",
        "msg" : "Write demo app lesson manifest as file or use in Ktor route.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonManifestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonTinCanXmlUseCase.kt"
        ],
        "commitId" : "8059b6c0a51b479add3cbbb459a152cecc25c9ef",
        "timestamp" : 1785764487000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add tincan.xml to demo app output on Ktor server route and static files output.\u000a",
        "date" : "2026-08-03 17:41:27 +0400",
        "id" : "8059b6c0a51b479add3cbbb459a152cecc25c9ef",
        "msg" : "Add tincan.xml to demo app output on Ktor server route and static files output.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonTinCanXmlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonHtmlUseCase.kt",
          "respect-server/src/main/resources/demoapp/lesson_xapi.js",
          "respect-server/src/main/resources/demoapp/xapi_module.js",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonTinCanXmlUseCase.kt"
        ],
        "commitId" : "d8f6a6e312a91f79baa03a8bd84a4bb2863aa1a8",
        "timestamp" : 1785768904000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of demo app lesson html to send an xAPI statement\u000a",
        "date" : "2026-08-03 18:55:04 +0400",
        "id" : "d8f6a6e312a91f79baa03a8bd84a4bb2863aa1a8",
        "msg" : "Initial implementation of demo app lesson html to send an xAPI statement",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/demoapp/xapi_module.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonTinCanXmlUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/demoapp/lesson_xapi.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonHtmlUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonHtmlUseCase.kt",
          "respect-server/src/main/resources/demoapp/lesson_xapi.js"
        ],
        "commitId" : "572d15fa891059c81f165a06c4e5ae43ac642d94",
        "timestamp" : 1785825117000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update demo app HTML/JS version to mirror the native Android version.\u000a",
        "date" : "2026-08-04 10:31:57 +0400",
        "id" : "572d15fa891059c81f165a06c4e5ae43ac642d94",
        "msg" : "Update demo app HTML/JS version to mirror the native Android version.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/demoapp/lesson_xapi.js"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonHtmlUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonHtmlUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonManifestUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
        ],
        "commitId" : "9e1b3205dbce484e928b772e5eac1bed84ee8cfd",
        "timestamp" : 1785830138000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update save demo app to files to include lesson HTML and Javascript.\u000a",
        "date" : "2026-08-04 11:55:38 +0400",
        "id" : "9e1b3205dbce484e928b772e5eac1bed84ee8cfd",
        "msg" : "Update save demo app to files to include lesson HTML and Javascript.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonHtmlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonManifestUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt",
          "respect-server/src/main/resources/demoapp/lesson_xapi.js",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonManifestUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonTinCanXmlUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLearningUnitRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonHtmlUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt",
          "respect-server/src/main/resources/demoapp/learning_unit_xapi.js",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitHtmlUseCase.kt"
        ],
        "commitId" : "f4d67923b38730e4a50ab4a0927ee683dd13fa67",
        "timestamp" : 1785832822000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update demo naming to follow terminology.\u000a",
        "date" : "2026-08-04 12:40:22 +0400",
        "id" : "f4d67923b38730e4a50ab4a0927ee683dd13fa67",
        "msg" : "Update demo naming to follow terminology.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/demoapp/lesson_xapi.js"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitHtmlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonManifestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLearningUnitRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonHtmlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLessonTinCanXmlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLessonRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/demoapp/learning_unit_xapi.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-cache/build.gradle.kts",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/downloader/DownloadIntegrationTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitHtmlUseCase.kt",
          "gradle.properties"
        ],
        "commitId" : "a6c16515f9f9a61aeaa1dff61e0ed840d5cc7973",
        "timestamp" : 1785846944000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix demo app links. Bump version.\u000a",
        "date" : "2026-08-04 16:35:44 +0400",
        "id" : "a6c16515f9f9a61aeaa1dff61e0ed840d5cc7973",
        "msg" : "Fix demo app links. Bump version.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/downloader/DownloadIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitHtmlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/build.gradle.kts",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCaseImpl.kt"
        ],
        "commitId" : "1bec94de8fef638f449fcbfe56713770973b71c8",
        "timestamp" : 1785848961000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Add `GEOLOCATION_API_ENDPOINT` build config field and update `GetCountryForUrlUseCaseImpl` to use the injected endpoint and new API path.\u000a",
        "date" : "2026-08-04 18:39:21 +0530",
        "id" : "1bec94de8fef638f449fcbfe56713770973b71c8",
        "msg" : "Add `GEOLOCATION_API_ENDPOINT` build config field and update `GetCountryForUrlUseCaseImpl` to use the injected endpoint and new API path.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ChannelExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
        ],
        "commitId" : "6ecd77ce786b44bfc313964f961c30aed8dfbbd4",
        "timestamp" : 1785849404000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix potential for flakiness in UstadCacheJvmTest where update had not yet been committed to the database.\u000a",
        "date" : "2026-08-04 17:16:44 +0400",
        "id" : "6ecd77ce786b44bfc313964f961c30aed8dfbbd4",
        "msg" : "Fix potential for flakiness in UstadCacheJvmTest where update had not yet been committed to the database.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ChannelExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/tincan.xml"
        ],
        "commitId" : "bf36064888e0aa724bf76c980a9f07eefd487016",
        "timestamp" : 1785850366000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add tincan.xml for exampels/lesson 001\u000a",
        "date" : "2026-08-04 17:32:46 +0400",
        "id" : "bf36064888e0aa724bf76c980a9f07eefd487016",
        "msg" : "Add tincan.xml for exampels/lesson 001",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/tincan.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/CountryFlag.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryDetection.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCaseImpl.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt",
          "app-android/build.gradle.kts"
        ],
        "commitId" : "4386799be9c5738c67c4e41f7b089fa306498448",
        "timestamp" : 1785857096000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix\u000a",
        "date" : "2026-08-04 20:54:56 +0530",
        "id" : "4386799be9c5738c67c4e41f7b089fa306498448",
        "msg" : "fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/CountryFlag.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryDetection.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-server/src/main/resources/demoapp/index.html",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
        ],
        "commitId" : "7ebdf88d54478a92f00d1bcb30538849be59a10f",
        "timestamp" : 1785913257000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add index.html for demo app.\u000a",
        "date" : "2026-08-05 11:00:57 +0400",
        "id" : "7ebdf88d54478a92f00d1bcb30538849be59a10f",
        "msg" : "Add index.html for demo app.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/demoapp/index.html"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README_ADD_YOUR_APP.md",
          "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
        ],
        "commitId" : "b14d70228ade3d0a0282bced3d341c9b8a984f93",
        "timestamp" : 1785914385000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Make terminology consistent: use collection instead of catalog.\u000a",
        "date" : "2026-08-05 11:19:45 +0400",
        "id" : "b14d70228ade3d0a0282bced3d341c9b8a984f93",
        "msg" : "Make terminology consistent: use collection instead of catalog.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_ADD_YOUR_APP.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README_ADD_YOUR_APP.md"
        ],
        "commitId" : "d997498330fa70ab311cd65d2f24b5153d73d06a",
        "timestamp" : 1785918823000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Make learning unit consistent with demo.openeel.org.\u000a",
        "date" : "2026-08-05 12:33:43 +0400",
        "id" : "d997498330fa70ab311cd65d2f24b5153d73d06a",
        "msg" : "Make learning unit consistent with demo.openeel.org.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_ADD_YOUR_APP.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt"
        ],
        "commitId" : "6dfef8e4a6ddbf8e01c8925f31bae2ab65add74f",
        "timestamp" : 1785922180000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add retry logic to SchoolDirectoryEntryDataSourceHttp.kt\u000a",
        "date" : "2026-08-05 13:29:40 +0400",
        "id" : "6dfef8e4a6ddbf8e01c8925f31bae2ab65add74f",
        "msg" : "Add retry logic to SchoolDirectoryEntryDataSourceHttp.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/RemoteWriteQueue.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/WriteQueueItemEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/writequeue/RemoteWriteQueueDbImpl.kt"
        ],
        "commitId" : "e29231d5cf47ca457cbc1c28690ebb7eeb85ab04",
        "timestamp" : 1785927677000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add text component that can be monitored in Maestro tests to wait for all pending remote writes to be completed.\u000a",
        "date" : "2026-08-05 15:01:17 +0400",
        "id" : "e29231d5cf47ca457cbc1c28690ebb7eeb85ab04",
        "msg" : "Add text component that can be monitored in Maestro tests to wait for all pending remote writes to be completed.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/WriteQueueItemEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/writequeue/RemoteWriteQueueDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/RemoteWriteQueue.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
        ],
        "commitId" : "91a9a7096117da5433c92a5129b6ac297918040d",
        "timestamp" : 1785930490000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update UstadCacheImpl.kt and test to improve handling closing the database/cache\u000a",
        "date" : "2026-08-05 15:48:10 +0400",
        "id" : "91a9a7096117da5433c92a5129b6ac297918040d",
        "msg" : "Update UstadCacheImpl.kt and test to improve handling closing the database/cache",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          ".maestro/flows/subflows/teardown.yaml"
        ],
        "commitId" : "0402fc938ae40bc5e9a5b8a496a5afa41e7f6407",
        "timestamp" : 1785931455000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Make maestro tests wait for all pending remote writs to complete.\u000a\u000aAdd a small hidden text element with the pending remote write count that a maestro test can wait for (avoid clearing the app before saved data is written to server).\u000a",
        "date" : "2026-08-05 16:04:15 +0400",
        "id" : "0402fc938ae40bc5e9a5b8a496a5afa41e7f6407",
        "msg" : "Make maestro tests wait for all pending remote writs to complete.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/teardown.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/AbstractCacheInterceptorTest.kt"
        ],
        "commitId" : "6fd710da694f06f076eb3e389ac7f145690f9d63",
        "timestamp" : 1785952438000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Reduce use of cache database closing due to apparent bug in Room Sqlite bundled driver.\u000a\u000aUpdate UstadCacheInterceptorTest to close mockwebserver after each run.\u000a",
        "date" : "2026-08-05 21:53:58 +0400",
        "id" : "6fd710da694f06f076eb3e389ac7f145690f9d63",
        "msg" : "Reduce use of cache database closing due to apparent bug in Room Sqlite bundled driver.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/AbstractCacheInterceptorTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle.properties"
        ],
        "commitId" : "74b3e6c5e4f5642ca08c7d494992ad27607f75c7",
        "timestamp" : 1785953030000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version\u000a",
        "date" : "2026-08-05 22:03:50 +0400",
        "id" : "74b3e6c5e4f5642ca08c7d494992ad27607f75c7",
        "msg" : "Bump version",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle.properties"
        ],
        "commitId" : "d6a65d188370e080d078ee87dcf2ec054d03309e",
        "timestamp" : 1785953050000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version\u000a",
        "date" : "2026-08-05 22:04:10 +0400",
        "id" : "d6a65d188370e080d078ee87dcf2ec054d03309e",
        "msg" : "Bump version",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/e2e_artifact_upload.yaml",
          ".maestro/flows/subflows/teardown.yaml"
        ],
        "commitId" : "74df52d811dbfecc0f22f2df7a33faa78eb8c0f3",
        "timestamp" : 1785996886000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "moved the command to Wait for all pending remote writes from teardown to e2e_artifact_upload.yaml\u000a",
        "date" : "2026-08-06 10:14:46 +0400",
        "id" : "74df52d811dbfecc0f22f2df7a33faa78eb8c0f3",
        "msg" : "moved the command to Wait for all pending remote writes from teardown to e2e_artifact_upload.yaml",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/teardown.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/e2e_artifact_upload.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/e2e_artifact_upload.yaml"
        ],
        "commitId" : "abf298829e847550c020cbfb63f03272a0f66b4a",
        "timestamp" : 1786000260000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Waiting for pending remote writes to complete is done after setting the device back to online.\u000a",
        "date" : "2026-08-06 11:11:00 +0400",
        "id" : "abf298829e847550c020cbfb63f03272a0f66b4a",
        "msg" : "Waiting for pending remote writes to complete is done after setting the device back to online.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/e2e_artifact_upload.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt",
          "gradle.properties"
        ],
        "commitId" : "7172569c153a05ff49006cb9a94a64443443575c",
        "timestamp" : 1786003014000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update to use activity id as per tincan.xml when addinga learning unit to an assignment. Bump version.\u000a",
        "date" : "2026-08-06 11:56:54 +0400",
        "id" : "7172569c153a05ff49006cb9a94a64443443575c",
        "msg" : "Update to use activity id as per tincan.xml when addinga learning unit to an assignment. Bump version.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ChannelExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
        ],
        "commitId" : "12fdd918e68b5bb65cbf3e7118c21a5e92a98651",
        "timestamp" : 1786003662000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove concurrency issue: update cache commit backlog size only after db transaction has finished.\u000a",
        "date" : "2026-08-06 12:07:42 +0400",
        "id" : "12fdd918e68b5bb65cbf3e7118c21a5e92a98651",
        "msg" : "Remove concurrency issue: update cache commit backlog size only after db transaction has finished.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ChannelExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/CountryFlag.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryDetection.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCaseImpl.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt"
        ],
        "commitId" : "fcbe0ced3524bf02db779ed27cfd7b875a632a24",
        "timestamp" : 1786018385000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix\u000a",
        "date" : "2026-08-06 17:43:05 +0530",
        "id" : "fcbe0ced3524bf02db779ed27cfd7b875a632a24",
        "msg" : "fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/CountryFlag.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryDetection.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryCodeToFlagEmoji.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryDetection.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RememberCountryFlagEmoji.kt",
          "app-android/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCaseImpl.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/CountryFlag.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCaseImpl.kt"
        ],
        "commitId" : "ef805d54e6f20b3572f3c636dcbde9e832ca93cc",
        "timestamp" : 1786278826000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "GeoIp lookup tidyup\u000a",
        "date" : "2026-08-09 16:33:46 +0400",
        "id" : "ef805d54e6f20b3572f3c636dcbde9e832ca93cc",
        "msg" : "GeoIp lookup tidyup",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RememberCountryFlagEmoji.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/CountryFlag.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryCodeToFlagEmoji.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/country/GetCountryForUrlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryDetection.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/list/PlaylistListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/share/PlaylistShareScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/detail/PlaylistDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/detail/PlaylistDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/externallink/ExternalLinkEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
        ],
        "commitId" : "9bb4fdd6df56433d3dc3ede102808c882d3a5858",
        "timestamp" : 1786349056000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Resolved the comments and move PlaylistDetail into its own files\u000a",
        "date" : "2026-08-10 13:34:16 +0530",
        "id" : "9bb4fdd6df56433d3dc3ede102808c882d3a5858",
        "msg" : "Resolved the comments and move PlaylistDetail into its own files",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/externallink/ExternalLinkEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/detail/PlaylistDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/detail/PlaylistDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.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/playlists/collections/list/PlaylistListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/share/PlaylistShareScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/edit/PlaylistEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
        ],
        "commitId" : "1db81c02e16fc959287402d3587e47686aa410d2",
        "timestamp" : 1786349137000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Resolved the comments and move PlaylistDetail into its own files\u000a",
        "date" : "2026-08-10 13:35:37 +0530",
        "id" : "1db81c02e16fc959287402d3587e47686aa410d2",
        "msg" : "Resolved the comments and move PlaylistDetail into its own files",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.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/enterlink/EnterLinkViewModel.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.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/playlists/collections/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/detail/PlaylistDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/detail/PlaylistDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "282524cdee6e128ac397fa66725a05177c8e7ef7",
        "timestamp" : 1786354535000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix\u000a",
        "date" : "2026-08-10 15:05:35 +0530",
        "id" : "282524cdee6e128ac397fa66725a05177c8e7ef7",
        "msg" : "fix",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/detail/PlaylistDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.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"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/detail/PlaylistDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_XAPI_SQL_QUERY.md",
          "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
        ],
        "commitId" : "860d3fae1a870012649be7a8bcd250592d8ecf76",
        "timestamp" : 1786386075000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add XAPI SQL Query receipe readme.\u000a",
        "date" : "2026-08-10 22:21:15 +0400",
        "id" : "860d3fae1a870012649be7a8bcd250592d8ecf76",
        "msg" : "Add XAPI SQL Query receipe readme.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/README_XAPI_SQL_QUERY.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt",
          "respect-lib-shared/build.gradle.kts"
        ],
        "commitId" : "53d0b05c7d345080fd10305f08963104643a1057",
        "timestamp" : 1786438461000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "refactor: extract web page metadata from Open Graph tags instead of using a WebView\u000a",
        "date" : "2026-08-11 14:24:21 +0530",
        "id" : "53d0b05c7d345080fd10305f08963104643a1057",
        "msg" : "refactor: extract web page metadata from Open Graph tags instead of using a WebView",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/externallink/ExtractWebPageMetadataUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml",
          ".maestro/flows/002_001_browse_lessons_test.yaml",
          ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
        ],
        "commitId" : "efe0b96031ea0c8519ccf84a071fb2d57f48377c",
        "timestamp" : 1786439047000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Added bookmark and playlist to one test\u000a",
        "date" : "2026-08-11 13:04:07 +0400",
        "id" : "efe0b96031ea0c8519ccf84a071fb2d57f48377c",
        "msg" : "Added bookmark and playlist to one test",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_001_browse_lessons_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_user_add_apps_playlists_bookmarks_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml",
          "ci-run-e2e-tests.sh"
        ],
        "commitId" : "8554b076a2fbae5861ad5018c419f054db722374",
        "timestamp" : 1786439278000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Added tags to test only the failed tests\u000a",
        "date" : "2026-08-11 13:07:58 +0400",
        "id" : "8554b076a2fbae5861ad5018c419f054db722374",
        "msg" : "Added tags to test only the failed tests",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-e2e-tests.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_class_with_members.yaml",
          ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml",
          ".maestro/flows/subflows/admin_add_class.yaml",
          ".maestro/flows/subflows/admin_add_new_student_to_class.yaml",
          ".maestro/flows/subflows/admin_add_student.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "b3d157189eaa64e06aa86c7a8ce22c02f6c3d93e",
        "timestamp" : 1786441536000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Updated the Classes locator to its  id: \"nav_classes\"\u000a",
        "date" : "2026-08-11 13:45:36 +0400",
        "id" : "b3d157189eaa64e06aa86c7a8ce22c02f6c3d93e",
        "msg" : "Updated the Classes locator to its  id: \"nav_classes\"",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_student.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class_with_members.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_new_student_to_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
        ],
        "commitId" : "76a48f3ff7fc548e411d80078f4ab062375ffb1c",
        "timestamp" : 1786443287000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Fix\u000a",
        "date" : "2026-08-11 15:44:47 +0530",
        "id" : "76a48f3ff7fc548e411d80078f4ab062375ffb1c",
        "msg" : "Fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "a4a7358ca631ebfa44f42a2f3e793aa9e118b2b4",
        "timestamp" : 1786446364000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "added tag\u000a",
        "date" : "2026-08-11 15:06:04 +0400",
        "id" : "a4a7358ca631ebfa44f42a2f3e793aa9e118b2b4",
        "msg" : "added tag",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "47c5d2f2bee27bebdbee47a6ec9a7482397ebac5",
        "timestamp" : 1786447730000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test\u000a",
        "date" : "2026-08-11 15:28:50 +0400",
        "id" : "47c5d2f2bee27bebdbee47a6ec9a7482397ebac5",
        "msg" : "updated test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "b70b8deaf6198a02f8a50c983885f29a27bab894",
        "timestamp" : 1786448855000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test id\u000a",
        "date" : "2026-08-11 15:47:35 +0400",
        "id" : "b70b8deaf6198a02f8a50c983885f29a27bab894",
        "msg" : "updated test id",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "797da502dfc983239976ada3149916f5123e24e2",
        "timestamp" : 1786448897000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated title comments\u000a",
        "date" : "2026-08-11 15:48:17 +0400",
        "id" : "797da502dfc983239976ada3149916f5123e24e2",
        "msg" : "updated title comments",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "1b38a1dd5b500233e5525b12fe6113f9722dbc4b",
        "timestamp" : 1786518391000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "remove the id from test file\u000a",
        "date" : "2026-08-12 12:36:31 +0530",
        "id" : "1b38a1dd5b500233e5525b12fe6113f9722dbc4b",
        "msg" : "remove the id from test file",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "2cdaea0bccefe15841bf42b97d4179e26b41d94d",
        "timestamp" : 1786523588000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Fix 002_001 test file\u000a",
        "date" : "2026-08-12 14:03:08 +0530",
        "id" : "2cdaea0bccefe15841bf42b97d4179e26b41d94d",
        "msg" : "Fix 002_001 test file",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          },
          {
            "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/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "a7858bb528ce213fb6893681ed412795cab39f03",
        "timestamp" : 1786525536000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Revert\u000a",
        "date" : "2026-08-12 14:35:36 +0530",
        "id" : "a7858bb528ce213fb6893681ed412795cab39f03",
        "msg" : "Revert",
        "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" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "4ae16061b309e76da716dd8def68a406d9ce8ec7",
        "timestamp" : 1786529535000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Updated app name\u000a",
        "date" : "2026-08-12 14:12:15 +0400",
        "id" : "4ae16061b309e76da716dd8def68a406d9ce8ec7",
        "msg" : "Updated app name",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "8f47f26a5766fdb86b52ac9081ea29e9ff055363",
        "timestamp" : 1786532233000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Fix the flow\u000a",
        "date" : "2026-08-12 16:27:13 +0530",
        "id" : "8f47f26a5766fdb86b52ac9081ea29e9ff055363",
        "msg" : "Fix the flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.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-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt",
          "gradle.properties"
        ],
        "commitId" : "57c6f948b6b15bde197a40a6a1ad78009d30021d",
        "timestamp" : 1786532734000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix cache db migration (migration referenced old field name).\u000a",
        "date" : "2026-08-12 15:05:34 +0400",
        "id" : "57c6f948b6b15bde197a40a6a1ad78009d30021d",
        "msg" : "Fix cache db migration (migration referenced old field name).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "4907cb57c8c52ffbde0d356b82be038bd77d0efd",
        "timestamp" : 1786536624000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "added hidekeyboard when Task is hidden by keyboard\u000a",
        "date" : "2026-08-12 16:10:24 +0400",
        "id" : "4907cb57c8c52ffbde0d356b82be038bd77d0efd",
        "msg" : "added hidekeyboard when Task is hidden by keyboard",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "5f6208ea44e2a8ed155d3522d97fef332989c82d",
        "timestamp" : 1786537993000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated home\u000a",
        "date" : "2026-08-12 16:33:13 +0400",
        "id" : "5f6208ea44e2a8ed155d3522d97fef332989c82d",
        "msg" : "updated home",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml",
          "ci-run-e2e-tests.sh"
        ],
        "commitId" : "4326530d3b1064edd0cad451cd2b058bcca94f32",
        "timestamp" : 1786538916000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Clean up\u000a",
        "date" : "2026-08-12 16:48:36 +0400",
        "id" : "4326530d3b1064edd0cad451cd2b058bcca94f32",
        "msg" : "Clean up",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-e2e-tests.sh"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "5acf713cef89b616204c6cebc327e45261da58d7",
        "timestamp" : 1786610529000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Share flow updated\u000a",
        "date" : "2026-08-13 12:42:09 +0400",
        "id" : "5acf713cef89b616204c6cebc327e45261da58d7",
        "msg" : "Share flow updated",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
        ],
        "commitId" : "58b19a1f5548e8d43a8a882763f47abaa76b8f24",
        "timestamp" : 1786628834000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove unnecessary FeedActionButton that was really just a duplicate of RespectQuickActionButton (went against DRY principle).\u000a",
        "date" : "2026-08-13 17:47:14 +0400",
        "id" : "58b19a1f5548e8d43a8a882763f47abaa76b8f24",
        "msg" : "Remove unnecessary FeedActionButton that was really just a duplicate of RespectQuickActionButton (went against DRY principle).",
        "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/detail/LearningUnitDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListHeader.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/LearningUnitSelection.kt"
        ],
        "commitId" : "4467cb4ff388f1daa46631a38a307a673d375ba1",
        "timestamp" : 1786644397000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Tidyup work in progress:\u000a\u000aRefactor LearningUnitSelection to allow for multi selection.\u000aAvoid crash on assigning long lists.\u000aHandle getting xapi activity info for selecting learning units.\u000a",
        "date" : "2026-08-13 19:06:37 +0100",
        "id" : "4467cb4ff388f1daa46631a38a307a673d375ba1",
        "msg" : "Tidyup work in progress:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/LearningUnitSelection.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "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/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/ReadiumLinkExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListHeader.kt"
        ],
        "commitId" : "b3b5ff1a73b252975705b52dd37ee53240c3af71",
        "timestamp" : 1786647137000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "More tidy up of learning unit list : fix selection if icons, and fix display of header icon and description.\u000a",
        "date" : "2026-08-13 19:52:17 +0100",
        "id" : "b3b5ff1a73b252975705b52dd37ee53240c3af71",
        "msg" : "More tidy up of learning unit list : fix selection if icons, and fix display of header icon and description.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListHeader.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt"
        ],
        "commitId" : "dfe364f81be88d0cfb19e81b22cc6e2a32a83e51",
        "timestamp" : 1786648104000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Hide assign button when there are no assignable publications. Padding fixes.\u000a",
        "date" : "2026-08-13 20:08:24 +0100",
        "id" : "dfe364f81be88d0cfb19e81b22cc6e2a32a83e51",
        "msg" : "Hide assign button when there are no assignable publications. Padding fixes.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
        ],
        "commitId" : "d5e3093ba8b07d22877711cc1696fa9218b4538f",
        "timestamp" : 1786676075000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "build fix\u000a",
        "date" : "2026-08-14 08:24:35 +0530",
        "id" : "d5e3093ba8b07d22877711cc1696fa9218b4538f",
        "msg" : "build fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsPublicationsSelection.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.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/editfeed/PlaylistEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListHeader.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/edit/PlaylistEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/opdscatalog/detail/LearningUnitDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedHeader.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",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/LearningUnitSelection.kt"
        ],
        "commitId" : "e610feb08fe2e577932009177ab9e15c0748640a",
        "timestamp" : 1786733411000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Name learning unit list as per opds terminology\u000a",
        "date" : "2026-08-14 19:50:11 +0100",
        "id" : "e610feb08fe2e577932009177ab9e15c0748640a",
        "msg" : "Name learning unit list as per opds terminology",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/edit/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsPublicationsSelection.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListHeader.kt"
          },
          {
            "editType" : "delete",
            "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/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "delete",
            "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/learningunit/list/OpdsFeedDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/LearningUnitSelection.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/opdscatalog/detail/LearningUnitDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/PlaylistEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/edit/PlaylistEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditNavigationItemRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedGroupEditItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsGroupExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
        ],
        "commitId" : "58f0e2413459c6e374e4bded76d6942b04f702f1",
        "timestamp" : 1786888680000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Tidying up opds feed detail and edit screens. Tidyup reordering logic.\u000a",
        "date" : "2026-08-16 14:58:00 +0100",
        "id" : "58f0e2413459c6e374e4bded76d6942b04f702f1",
        "msg" : "Tidying up opds feed detail and edit screens. Tidyup reordering logic.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/edit/PlaylistEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditNavigationItemRow.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedGroupEditItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsGroupExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/PlaylistEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditGroupMenuItemButton.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditNavigationItemRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddItemBottomSheet.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedGroupEditItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditPublicationItemRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditMoveToGroupDialog.kt"
        ],
        "commitId" : "e50a0e5e301d03afff35387110a952a26ce5e07e",
        "timestamp" : 1786891292000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Finish splitting up OpdsFeedEdit screen into files by component. Remove passing modifier as drag handle modifier.\u000a",
        "date" : "2026-08-16 15:41:32 +0100",
        "id" : "e50a0e5e301d03afff35387110a952a26ce5e07e",
        "msg" : "Finish splitting up OpdsFeedEdit screen into files by component. Remove passing modifier as drag handle modifier.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddItemBottomSheet.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditMoveToGroupDialog.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditNavigationItemRow.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditPublicationItemRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedGroupEditItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditGroupMenuItemButton.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/learningunit/editfeed/OpdsFeedEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedGroupEditItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditPublicationItemRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditNavigationItemRow.kt"
        ],
        "commitId" : "6d26c550c69f6151d7f5f6006a6485e3a2ad412f",
        "timestamp" : 1786897318000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update OpdsFeedEdit user interface to use list items instead of buttons for add section, collection link, learning item link.\u000a",
        "date" : "2026-08-16 17:21:58 +0100",
        "id" : "6d26c550c69f6151d7f5f6006a6485e3a2ad412f",
        "msg" : "Update OpdsFeedEdit user interface to use list items instead of buttons for add section, collection link, learning item link.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditPublicationItemRow.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/editfeed/OpdsFeedGroupEditItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditNavigationItemRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditScreen.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/list/OpdsFeedDetailViewModel.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddItemBottomSheet.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedItemIndex.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/SetExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt"
        ],
        "commitId" : "3e7914c436ac81358bb1d409f0243b793b43e12f",
        "timestamp" : 1786914595000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change selection handling on OpdsFeedDetail to use indexes because the Opds spec provides no promise of providing identifiers, or that thosse identifiers will be unique.\u000a\u000aHide bottom navigation when in picker mode for opdsfeed. Hide fab buttons when in picker mode.\u000a",
        "date" : "2026-08-16 22:09:55 +0100",
        "id" : "3e7914c436ac81358bb1d409f0243b793b43e12f",
        "msg" : "Change selection handling on OpdsFeedDetail to use indexes because the Opds spec provides no promise of providing identifiers, or that thosse identifiers will be unique.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddItemBottomSheet.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/SetExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedItemIndex.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt"
        ],
        "commitId" : "ae128767bf683764bc4ef24a9833b1814a9f05fd",
        "timestamp" : 1786955787000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add helper functions for use of statement extension properties.\u000a",
        "date" : "2026-08-17 09:36:27 +0100",
        "id" : "ae128767bf683764bc4ef24a9833b1814a9f05fd",
        "msg" : "Add helper functions for use of statement extension properties.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.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/editfeed/OpdsFeedEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onappstart/NavigateOnAppStartUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsPickType.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsFeedSelection.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublication.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsDocument.kt"
        ],
        "commitId" : "bb23065b90ecfb762580fe39960f1976477d1580",
        "timestamp" : 1786991141000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fixes for selecting navigation feeds from OpdsFeedEdit\u000a\u000aImplement similar logic for checkbox display/handling for selecting a catalog.\u000a\u000aDelete failing PlaylistRepositoryIntegrationTest: data will be stored using xAPI, so this is obsolete anyway.\u000a",
        "date" : "2026-08-17 22:25:41 +0400",
        "id" : "bb23065b90ecfb762580fe39960f1976477d1580",
        "msg" : "Fixes for selecting navigation feeds from OpdsFeedEdit",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsFeedSelection.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsPickType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublication.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onappstart/NavigateOnAppStartUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsDocument.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.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-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt"
        ],
        "commitId" : "7f131744491ddc0efd6abd008ed9a076919f13ca",
        "timestamp" : 1786992077000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement support for selecting multiple feeds in OpdsFeedEdit.\u000a",
        "date" : "2026-08-17 22:41:17 +0400",
        "id" : "7f131744491ddc0efd6abd008ed9a076919f13ca",
        "msg" : "Implement support for selecting multiple feeds in OpdsFeedEdit.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPickTypeExt.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedHeader.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
        ],
        "commitId" : "0cae67de9a6e7aa51f44f3bbb51b1910c547c23c",
        "timestamp" : 1787124069000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix making opds selections via bookmarks and collections list.\u000a",
        "date" : "2026-08-19 11:21:09 +0400",
        "id" : "0cae67de9a6e7aa51f44f3bbb51b1910c547c23c",
        "msg" : "Fix making opds selections via bookmarks and collections list.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPickTypeExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.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/catalog/OpdsPickType.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditNavigationItemRow.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt",
          "respect-lib-opds-model/src/jvmTest/kotlin/world/respect/lib/opds/model/OpdsSerializerTest.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedGroupEditItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/opdscatalog/detail/LearningUnitDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/bookmark/BookmarkListScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditGroupMenuItemButton.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/publicationdetail/PublicationDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PublicationExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/OpdsFeedSelection.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/downloader/DownloadIntegrationTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateOpdsPublicationUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt",
          "respect-cli/src/main/java/world/respect/clitools/RespectCLI.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.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/editfeed/OpdsFeedEditScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateLinkUseCaseImpl.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedGroupEditItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/PublicationListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/LearningUnitDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditPublicationItemRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditMoveToGroupDialog.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/OpdsFeedValidator.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPickTypeExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsPublicationsSelection.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/PublicationListItem.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/OpdsPublicationValidator.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditPublicationItemRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedListItem.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestPublicationEntityAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geticonforxapiactivity/GetPublicationForXapiActivityUseCase.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsGroup.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/TestOpdsStorage.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddItemBottomSheet.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsPickType.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublication.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditMoveToGroupDialog.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditAddItemBottomSheet.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/feeddetail/OpdsFeedDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/feededit/OpdsFeedEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/PublicationsSelection.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedDetailHeader.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditNavigationItemRow.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/Publication.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsFeedSelection.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditGroupMenuItemButton.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedHeader.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsGroupExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/RespectAppManifestExt.kt"
        ],
        "commitId" : "599566d5f6e120812dc17e2a961fe97c0b6fa161",
        "timestamp" : 1787129115000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor to make catalog related naming more consistent.\u000a",
        "date" : "2026-08-19 12:45:15 +0400",
        "id" : "599566d5f6e120812dc17e2a961fe97c0b6fa161",
        "msg" : "Refactor to make catalog related naming more consistent.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditAddItemBottomSheet.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/Publication.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/TestOpdsStorage.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/downloader/DownloadIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditPublicationItemRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedDetailHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/OpdsFeedSelection.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddItemBottomSheet.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateOpdsPublicationUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditNavigationItemRow.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsFeedSelection.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedGroupEditItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/feeddetail/OpdsFeedDetailViewModel.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/viewmodel/catalog/OpdsPickType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedGroupEditItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditMoveToGroupDialog.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/jvmTest/kotlin/world/respect/lib/opds/model/OpdsSerializerTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditMoveToGroupDialog.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublication.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/bookmark/BookmarkListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/feededit/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsGroupExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/opdscatalog/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditGroupMenuItemButton.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/RespectAppManifestExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/OpdsFeedValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditGroupMenuItemButton.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/PublicationListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPickTypeExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsPublicationsSelection.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsPickType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/OpdsPublicationValidator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/PublicationListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geticonforxapiactivity/GetPublicationForXapiActivityUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsGroup.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditPublicationItemRow.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/publicationdetail/PublicationDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditNavigationItemRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/PublicationsSelection.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateLinkUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditAddItemBottomSheet.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/PublicationListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededitaddlink/OpdsFeedEditAddLinkScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditNavigationItemRow.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededitaddlink/OpdsFeedEditAddLinkViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/bookmark/BookmarkListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededit/OpdsFeedEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedGroupEditItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditGroupMenuItemButton.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/bookmark/BookmarkListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/externallink/ExternalLinkEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/bookmark/BookmarkListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailHeader.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedshare/OpdsFeedShareScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedlist/PlaylistListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedlist/OpdsFeedListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/share/PlaylistShareViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditNavigationItemRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/PublicationDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/LearningUnitDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/PublicationListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeeddetail/OpdsFeedDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/list/PlaylistListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditMoveToGroupDialog.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditPublicationItemRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/share/PlaylistShareScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditMoveToGroupDialog.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditAddItemBottomSheet.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/feededit/OpdsFeedEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/feeddetail/OpdsFeedDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedGroupEditItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditPublicationItemRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedDetailHeader.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditGroupMenuItemButton.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsGroupExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedshare/OpdsFeedShareViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt"
        ],
        "commitId" : "292abb05550957a6b329fd125719e69e035def73",
        "timestamp" : 1787131047000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor to make catalog related naming more consistent. Part 2\u000a",
        "date" : "2026-08-19 13:17:27 +0400",
        "id" : "292abb05550957a6b329fd125719e69e035def73",
        "msg" : "Refactor to make catalog related naming more consistent. Part 2",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditGroupMenuItemButton.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditNavigationItemRow.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/list/PlaylistListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditPublicationItemRow.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/bookmark/BookmarkListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditMoveToGroupDialog.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditNavigationItemRow.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/feededit/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/PublicationListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededit/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/externallink/ExternalLinkEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedGroupEditItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditPublicationItemRow.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededitaddlink/OpdsFeedEditAddLinkScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/bookmark/BookmarkListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/PublicationListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedGroupEditItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedshare/OpdsFeedShareScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedDetailHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedlist/PlaylistListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedlist/OpdsFeedListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededitaddlink/OpdsFeedEditAddLinkViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditGroupMenuItemButton.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsGroupExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditAddItemBottomSheet.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/share/PlaylistShareViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feeddetail/OpdsFeedDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/list/PlaylistListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/playlists/collections/externallink/ExternalLinkEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditAddItemBottomSheet.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditMoveToGroupDialog.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedshare/OpdsFeedShareViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/bookmark/BookmarkListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/playlists/collections/share/PlaylistShareScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeeddetail/OpdsFeedDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/PublicationDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/feededit/OpdsFeedEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/feeddetail/OpdsFeedDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedlist/OpdsFeedListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedlist/PlaylistListScreen.kt"
        ],
        "commitId" : "75c74bbcdb51f3ad02544de3ecc5f5bd717ea701",
        "timestamp" : 1787131078000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Rename PlaylistListScreen to OpdsFeedListScreen.kt\u000a",
        "date" : "2026-08-19 13:17:58 +0400",
        "id" : "75c74bbcdb51f3ad02544de3ecc5f5bd717ea701",
        "msg" : "Rename PlaylistListScreen to OpdsFeedListScreen.kt",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedlist/OpdsFeedListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedlist/PlaylistListScreen.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/catalog/opdsfeedlist/OpdsFeedListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededit/OpdsFeedEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailHeader.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedlist/OpdsFeedListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedshare/OpdsFeedShareViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
        ],
        "commitId" : "639e9f3d4fad6071d3cfe1f9fc1dd16ee5372e8d",
        "timestamp" : 1787132084000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change terminology from \"playlists\" to \"collections\".\u000a",
        "date" : "2026-08-19 13:34:44 +0400",
        "id" : "639e9f3d4fad6071d3cfe1f9fc1dd16ee5372e8d",
        "msg" : "Change terminology from \"playlists\" to \"collections\".",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededit/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeededit/OpdsFeedEditAddGroupSelectTypeBottomSheet.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedlist/OpdsFeedListScreen.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/catalog/opdsfeeddetail/OpdsFeedDetailHeader.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedlist/OpdsFeedListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedshare/OpdsFeedShareViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/MockRunReportUseCaseClientImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/IndicatorDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/ReportOptions.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/filteredit/ReportFilterEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ReportAdapter.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/Indicator.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportPeriod.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DateGraphFormatter.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/graph/CombinedGraph.kt",
          "respect-lib-xapi-core/README_XAPI_SQL_QUERY.md",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReportExtensions.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/edit/ReportEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/detail/IndicatorDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/filteredit/ReportFilterEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ext/ReportQueryResultExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/DefaultIndicators.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportConditionFilterOptions.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/ReportConditionFilterOptions.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/ReportPeriod.kt",
          "app-android/README.md",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/ReportSeries.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/StatementReportRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/list/IndicatorListScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Report.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/queryresponse/XapiSqlQueryResponse.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportSeries.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/StatementReportRow.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportOptions.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Indicator.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/IndicatorDataSourceDb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/DefaultIndicators.kt"
        ],
        "commitId" : "ded5fe5d6b7603b848bc5d16baca96a4accae55b",
        "timestamp" : 1787149595000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add model class for XapiSqlQueryResponse. Move report options into xapi module.\u000a",
        "date" : "2026-08-19 18:26:35 +0400",
        "id" : "ded5fe5d6b7603b848bc5d16baca96a4accae55b",
        "msg" : "Add model class for XapiSqlQueryResponse. Move report options into xapi module.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ReportAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportPeriod.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/Indicator.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ext/ReportQueryResultExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/ReportOptions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/detail/IndicatorDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/filteredit/ReportFilterEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/StatementReportRow.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/DefaultIndicators.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_XAPI_SQL_QUERY.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/ReportConditionFilterOptions.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportOptions.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportSeries.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "app-android/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Report.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/queryresponse/XapiSqlQueryResponse.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReportExtensions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/ReportPeriod.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/ReportSeries.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/list/IndicatorListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/IndicatorDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/filteredit/ReportFilterEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/report/DefaultIndicators.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DateGraphFormatter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/edit/ReportEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/StatementReportRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/graph/CombinedGraph.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/IndicatorDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Indicator.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportConditionFilterOptions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/MockRunReportUseCaseClientImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-test-resources/build.gradle.kts",
          "lib-cache-ipc-core/build.gradle.kts",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageData.kt",
          "lib-ipc-messagebridge/src/androidTest/java/org/openeel/lib/ipc/messagebridge/ExampleInstrumentedTest.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "respect-lib-xapi-ipc-client/build.gradle.kts",
          "lib-cache-ipc-core/.gitignore",
          "lib-ipc-messagebridge/src/main/keepRules/rules.keep",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt",
          "lib-ipc-messagebridge/README.md",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/MessageData.kt",
          "lib-cache-ipc-core/src/main/keepRules/rules.keep",
          "lib-ipc-messagebridge/consumer-rules.keep",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "lib-cache-ipc-core/src/main/AndroidManifest.xml",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcClientBuilder.kt",
          "lib-cache-ipc-core/src/androidTest/java/org/openeel/libcache/ipc/core/ExampleInstrumentedTest.kt",
          "lib-cache-ipc-core/src/test/java/org/openeel/libcache/ipc/core/ExampleUnitTest.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/MessageExt.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeTags.kt",
          "lib-cache-ipc-core/consumer-rules.keep",
          "respect-lib-xapi-ipc-server/build.gradle.kts",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeMessengerImpl.kt",
          "respect-lib-xapi-core/build.gradle.kts",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeWhatFlags.kt",
          "settings.gradle.kts",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/XapiMessageBridge.kt",
          "lib-ipc-messagebridge/.gitignore",
          "lib-ipc-messagebridge/build.gradle.kts",
          "lib-ipc-messagebridge/src/main/AndroidManifest.xml",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/ext/MessageExt.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeServiceConnectionImpl.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "lib-ipc-messagebridge/src/test/java/org/openeel/lib/ipc/messagebridge/ExampleUnitTest.kt",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/XapiMessageBridgeMessengerImpl.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridge.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt"
        ],
        "commitId" : "5069f82baddf1858ad45dc66247289c8660046fb",
        "timestamp" : 1787223862000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move message bridge into a separate module so it can be shared by both the xAPI IPC client and the cache IPC client.\u000a",
        "date" : "2026-08-20 15:04:22 +0400",
        "id" : "5069f82baddf1858ad45dc66247289c8660046fb",
        "msg" : "Move message bridge into a separate module so it can be shared by both the xAPI IPC client and the cache IPC client.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/consumer-rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/androidTest/java/org/openeel/lib/ipc/messagebridge/ExampleInstrumentedTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeTags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcClientBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeServiceConnectionImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-core/src/androidTest/java/org/openeel/libcache/ipc/core/ExampleInstrumentedTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcWhatFlags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/XapiMessageBridgeMessengerImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/MessageData.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/XapiMessageBridge.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcMessageBridgeServiceConnectionImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-core/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridge.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-core/consumer-rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-core/src/test/java/org/openeel/libcache/ipc/core/ExampleUnitTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/test/java/org/openeel/lib/ipc/messagebridge/ExampleUnitTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-core/.gitignore"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeWhatFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/ext/MessageExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/MessageExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-core/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiMessageBridgeMessengerImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test-resources/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-core/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/MessageData.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "1a12113da3450281ee572d9db700f65f3c6120c3",
        "timestamp" : 1787229886000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Rename playlists to collections in Maestro test flows\u000a",
        "date" : "2026-08-20 16:44:46 +0400",
        "id" : "1a12113da3450281ee572d9db700f65f3c6120c3",
        "msg" : "Rename playlists to collections in Maestro test flows",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-cache-ipc-shared/src/main/keepRules/rules.keep",
          "lib-cache-ipc-core/build.gradle.kts",
          "lib-cache-ipc-core/consumer-rules.keep",
          "lib-cache-ipc-shared/build.gradle.kts",
          "settings.gradle.kts",
          "lib-cache-ipc-shared/consumer-rules.keep",
          "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/RequestAdapterUnitTest.kt",
          "gradle/libs.versions.toml",
          "lib-cache-ipc-core/.gitignore",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt",
          "lib-cache-ipc-core/src/main/keepRules/rules.keep",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HeadersAdapter.kt",
          "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/HeadersAdapterUnitTest.kt",
          "lib-cache-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ExampleInstrumentedTest.kt",
          "lib-cache-ipc-core/src/main/AndroidManifest.xml",
          "lib-cache-ipc-core/src/androidTest/java/org/openeel/libcache/ipc/core/ExampleInstrumentedTest.kt",
          "lib-cache-ipc-core/src/test/java/org/openeel/libcache/ipc/core/ExampleUnitTest.kt",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/IpcHttpKeys.kt",
          "lib-cache-ipc-shared/src/main/AndroidManifest.xml",
          "lib-cache-ipc-shared/.gitignore"
        ],
        "commitId" : "bd96061dc91fc8aef598c4fb97d6bd4e9b253286",
        "timestamp" : 1787231784000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of converting an OKHttp Request to/from a bundle.\u000a",
        "date" : "2026-08-20 17:16:24 +0400",
        "id" : "bd96061dc91fc8aef598c4fb97d6bd4e9b253286",
        "msg" : "Initial implementation of converting an OKHttp Request to/from a bundle.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/RequestAdapterUnitTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-core/src/androidTest/java/org/openeel/libcache/ipc/core/ExampleInstrumentedTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-core/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-core/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/HeadersAdapterUnitTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-core/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-core/src/test/java/org/openeel/libcache/ipc/core/ExampleUnitTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/IpcHttpKeys.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-core/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/consumer-rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ExampleInstrumentedTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-core/consumer-rules.keep"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/IpcHttpKeys.kt",
          "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/ResponseAdapterUnitTest.kt",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt"
        ],
        "commitId" : "02dfe00a5629d3332074f18a21169137223d9b9e",
        "timestamp" : 1787248807000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of adapter to handle converting Response to/from Android Bundle\u000a",
        "date" : "2026-08-20 22:00:07 +0400",
        "id" : "02dfe00a5629d3332074f18a21169137223d9b9e",
        "msg" : "Initial implementation of adapter to handle converting Response to/from Android Bundle",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/IpcHttpKeys.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/ResponseAdapterUnitTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "ba2dfb7424848af4936b81a003a4d5f014748f98",
        "timestamp" : 1787301439000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro test flow to reflect collection copy-to-remix terminology changes\u000a",
        "date" : "2026-08-21 12:37:19 +0400",
        "id" : "ba2dfb7424848af4936b81a003a4d5f014748f98",
        "msg" : "Update Maestro test flow to reflect collection copy-to-remix terminology changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/ServiceConnectionMessengerProvider.kt",
          "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/InstrumentationTestRunner.kt",
          "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/IpcTestApplication.kt",
          "lib-cache-ipc-client/src/main/AndroidManifest.xml",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "lib-cache-ipc-client/.gitignore",
          "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/OkHttpClientProvider.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeMessengerImpl.kt",
          "lib-cache-ipc-server/src/main/keepRules/rules.keep",
          "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt",
          "lib-cache-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ExampleInstrumentedTest.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/ResponseAdapterUnitTest.kt",
          "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClient.kt",
          "lib-cache-ipc-server/src/main/AndroidManifest.xml",
          "lib-cache-ipc-server/build.gradle.kts",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/MessengerProvider.kt",
          "lib-cache-ipc-server/src/androidTest/AndroidManifest.xml",
          "lib-cache-ipc-shared/build.gradle.kts",
          "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt",
          "settings.gradle.kts",
          "lib-cache-ipc-client/consumer-rules.keep",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/XapiMessageBridge.kt",
          "lib-cache-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt",
          "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridge.kt",
          "lib-cache-ipc-client/src/main/keepRules/rules.keep",
          "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt",
          "lib-cache-ipc-server/.gitignore",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcIntent.kt",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeServiceConnectionImpl.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "lib-cache-ipc-server/consumer-rules.keep",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/XapiMessageBridgeMessengerImpl.kt",
          "lib-cache-ipc-client/build.gradle.kts"
        ],
        "commitId" : "eeea4bb4cb73957c34ec59a626212c52464f1e45",
        "timestamp" : 1787336515000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of IpcHttpClient with a very basic hello world test to make a real http call over IPC.\u000a",
        "date" : "2026-08-21 22:21:55 +0400",
        "id" : "eeea4bb4cb73957c34ec59a626212c52464f1e45",
        "msg" : "Initial implementation of IpcHttpClient with a very basic hello world test to make a real http call over IPC.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-client/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-client/consumer-rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-client/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/InstrumentationTestRunner.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeServiceConnectionImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/MessengerProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/OkHttpClientProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeMessengerImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-client/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcIntent.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/consumer-rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/ServiceConnectionMessengerProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/ResponseAdapterUnitTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/XapiMessageBridgeMessengerImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ExampleInstrumentedTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/src/androidTest/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/XapiMessageBridge.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridge.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-client/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcTags.kt",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/ServiceConnectionMessengerProvider.kt",
          "app-android/src/main/AndroidManifest.xml",
          "app-android/build.gradle.kts",
          "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt",
          "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/IpcTestApplication.kt",
          "lib-cache-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt",
          "app-android/src/main/kotlin/world/respect/RespectApp.kt",
          "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/OkHttpClientProvider.kt",
          "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt",
          "gradle.properties",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt"
        ],
        "commitId" : "44b9906f5d0a1e387227cb1768bfc21c88785605",
        "timestamp" : 1787406616000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "IpcHttpClient working with DemoLaunchableApp to send/receive http responses.\u000a",
        "date" : "2026-08-22 17:50:16 +0400",
        "id" : "44b9906f5d0a1e387227cb1768bfc21c88785605",
        "msg" : "IpcHttpClient working with DemoLaunchableApp to send/receive http responses.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/OkHttpClientProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcTags.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/ServiceConnectionMessengerProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "eb12348981b30281cf941954cb3930f8845c5a2a",
        "timestamp" : 1787549779000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update empty state message in collections flow to \"No collections yet\" in Maestro test\u000a",
        "date" : "2026-08-24 09:36:19 +0400",
        "id" : "eb12348981b30281cf941954cb3930f8845c5a2a",
        "msg" : "Update empty state message in collections flow to \"No collections yet\" in Maestro test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "bf39cab5ecd969e47fd006021c9b3bf93ea68e29",
        "timestamp" : 1787556754000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro test flow to reflect UI text changes for sections and items\u000a",
        "date" : "2026-08-24 11:32:34 +0400",
        "id" : "bf39cab5ecd969e47fd006021c9b3bf93ea68e29",
        "msg" : "Update Maestro test flow to reflect UI text changes for sections and items",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "2bc3b058abd54dcb32f58dd67d8e376f7201c46e",
        "timestamp" : 1787559604000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update Maestro user test flow (`002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml`) to fix navigation steps and screen assertions.\u000a",
        "date" : "2026-08-24 12:20:04 +0400",
        "id" : "2bc3b058abd54dcb32f58dd67d8e376f7201c46e",
        "msg" : "Update Maestro user test flow (`002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml`) to fix navigation steps and screen assertions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt",
          "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt",
          "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt",
          "gradle.properties"
        ],
        "commitId" : "43e756c013940cb3b35b2934d6c267a205aba495",
        "timestamp" : 1787567564000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update IpcHttpService to run outgoing http request asynchronously.\u000a",
        "date" : "2026-08-24 14:32:44 +0400",
        "id" : "43e756c013940cb3b35b2934d6c267a205aba495",
        "msg" : "Update IpcHttpService to run outgoing http request asynchronously.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HeadersAdapter.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt",
          "lib-http-ipc-server/build.gradle.kts",
          "app-android/build.gradle.kts",
          "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/InstrumentationTestRunner.kt",
          "lib-http-ipc-server/src/main/AndroidManifest.xml",
          "lib-http-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/HeadersAdapterUnitTest.kt",
          "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt",
          "lib-http-ipc-server/src/androidTest/AndroidManifest.xml",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/IpcHttpKeys.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcTags.kt",
          "lib-http-ipc-shared/consumer-rules.keep",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/IpcTestApplication.kt",
          "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClient.kt",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcTags.kt",
          "lib-cache-ipc-server/src/main/AndroidManifest.xml",
          "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/InstrumentationTestRunner.kt",
          "lib-cache-ipc-shared/consumer-rules.keep",
          "lib-http-ipc-client/build.gradle.kts",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClient.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/IpcHttpKeys.kt",
          "lib-http-ipc-shared/build.gradle.kts",
          "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt",
          "lib-cache-ipc-server/.gitignore",
          "lib-cache-ipc-client/src/main/keepRules/rules.keep",
          "lib-http-ipc-client/src/main/AndroidManifest.xml",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt",
          "lib-cache-ipc-server/consumer-rules.keep",
          "lib-http-ipc-server/.gitignore",
          "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/IpcTestApplication.kt",
          "lib-cache-ipc-client/src/main/AndroidManifest.xml",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcIntent.kt",
          "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/RequestAdapterUnitTest.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt",
          "lib-cache-ipc-client/.gitignore",
          "lib-http-ipc-server/consumer-rules.keep",
          "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/OkHttpClientProvider.kt",
          "lib-http-ipc-client/.gitignore",
          "lib-http-ipc-client/src/main/keepRules/rules.keep",
          "lib-http-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt",
          "lib-cache-ipc-server/src/main/keepRules/rules.keep",
          "lib-http-ipc-shared/src/main/AndroidManifest.xml",
          "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt",
          "lib-http-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/RequestAdapterUnitTest.kt",
          "lib-cache-ipc-shared/src/main/AndroidManifest.xml",
          "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/OkHttpClientProvider.kt",
          "lib-cache-ipc-shared/.gitignore",
          "lib-http-ipc-shared/src/main/keepRules/rules.keep",
          "lib-cache-ipc-shared/src/main/keepRules/rules.keep",
          "lib-cache-ipc-server/build.gradle.kts",
          "lib-cache-ipc-server/src/androidTest/AndroidManifest.xml",
          "lib-cache-ipc-shared/build.gradle.kts",
          "settings.gradle.kts",
          "lib-cache-ipc-client/consumer-rules.keep",
          "lib-cache-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt",
          "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt",
          "gradle.properties",
          "lib-http-ipc-server/src/main/keepRules/rules.keep",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcIntent.kt",
          "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HeadersAdapter.kt",
          "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/HeadersAdapterUnitTest.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt",
          "lib-http-ipc-shared/.gitignore",
          "lib-cache-ipc-client/build.gradle.kts",
          "lib-http-ipc-client/consumer-rules.keep"
        ],
        "commitId" : "22c69115ed7de726e828e155cdf169f5bf9079ec",
        "timestamp" : 1787579765000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change package names for http-ipc.\u000a\u000aHTTP-IPC is not really limited to caching: remove the word cache from the module names.\u000a",
        "date" : "2026-08-24 17:56:05 +0400",
        "id" : "22c69115ed7de726e828e155cdf169f5bf9079ec",
        "msg" : "Change package names for http-ipc.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/consumer-rules.keep"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/RequestAdapterUnitTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/InstrumentationTestRunner.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/androidTest/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/RequestAdapterUnitTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/HeadersAdapterUnitTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/consumer-rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-client/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/OkHttpClientProvider.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-client/consumer-rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/consumer-rules.keep"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/src/androidTest/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/IpcHttpKeys.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-client/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/InstrumentationTestRunner.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcTags.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HeadersAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcIntent.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/consumer-rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/HeadersAdapterUnitTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/IpcHttpKeys.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-client/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/main/keepRules/rules.keep"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcIntent.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-client/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcTags.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/OkHttpClientProvider.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "lib-cache-ipc-server/consumer-rules.keep"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt",
          "lib-http-ipc-server/build.gradle.kts",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt",
          "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/ext/ResponseBuilderExt.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClient.kt",
          "gradle.properties"
        ],
        "commitId" : "6371e2d38979f95450f57306e470a94b5faf911b",
        "timestamp" : 1787637218000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Use WeakReferences for calls in IpcHttpClientImpl\u000a\u000aReturns 502 gateway error response in case of call exception.\u000a\u000aMkae IpcHttpClient closeable.\u000a",
        "date" : "2026-08-25 09:53:38 +0400",
        "id" : "6371e2d38979f95450f57306e470a94b5faf911b",
        "msg" : "Use WeakReferences for calls in IpcHttpClientImpl",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/ext/ResponseBuilderExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "1dfff6a649700f53936df5761288c8ffe7cd35d9",
        "timestamp" : 1787638103000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update UI test expectations in `002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml` to match \"Edit collection\" text\u000a",
        "date" : "2026-08-25 10:08:23 +0400",
        "id" : "1dfff6a649700f53936df5761288c8ffe7cd35d9",
        "msg" : "Update UI test expectations in `002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml` to match \"Edit collection\" text",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt",
          "lib-http-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt"
        ],
        "commitId" : "745b7d07ba31d42f7a73d7eb044ce3ae9bccb774",
        "timestamp" : 1787643201000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Use ExecutorService instead of new thread creation when handling IPC http request/response bodies.\u000a",
        "date" : "2026-08-25 11:33:21 +0400",
        "id" : "745b7d07ba31d42f7a73d7eb044ce3ae9bccb774",
        "msg" : "Use ExecutorService instead of new thread creation when handling IPC http request/response bodies.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-test-resources/src/androidMain/assets/media/video.mp4",
          "lib-http-ipc-server/build.gradle.kts",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/MockWebServerAssetDispatcher.kt"
        ],
        "commitId" : "bdb503ef7365cf0ed42f234d04bd65604e172aa1",
        "timestamp" : 1787651892000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update HttpIpcIntegrationTest to use an asset dispatcher so other files types can be tested.\u000a",
        "date" : "2026-08-25 13:58:12 +0400",
        "id" : "bdb503ef7365cf0ed42f234d04bd65604e172aa1",
        "msg" : "Update HttpIpcIntegrationTest to use an asset dispatcher so other files types can be tested.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/MockWebServerAssetDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test-resources/src/androidMain/assets/media/video.mp4"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/MockWebServerAssetDispatcher.kt"
        ],
        "commitId" : "e6e6cf3cda977fb2f33d97b171cc9b44ee1a924d",
        "timestamp" : 1787652751000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add tests on HttpIpc error handling\u000a",
        "date" : "2026-08-25 14:12:31 +0400",
        "id" : "e6e6cf3cda977fb2f33d97b171cc9b44ee1a924d",
        "msg" : "Add tests on HttpIpc error handling",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/MockWebServerAssetDispatcher.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcKeys.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HeadersAdapter.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcWhat.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/adapters/HeadersAdapter.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/adapters/TimeoutAdapter.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/ext/MockResponseBuilderExt.kt",
          "lib-http-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/HeadersAdapterUnitTest.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/IpcHttpKeys.kt",
          "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt",
          "lib-http-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/MockWebServerAssetDispatcher.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/adapters/RequestAdapter.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt",
          "lib-http-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/RequestAdapterUnitTest.kt",
          "lib-http-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/RequestAdapterUnitTest.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/IpcTestApplication.kt",
          "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/adapters/ResponseAdapter.kt"
        ],
        "commitId" : "e2cd15e416d4595dd418d6cf6be2e88c3f7c2c71",
        "timestamp" : 1787665269000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improve HttpIpc error handling and timeout handling.\u000a",
        "date" : "2026-08-25 17:41:09 +0400",
        "id" : "e2cd15e416d4595dd418d6cf6be2e88c3f7c2c71",
        "msg" : "Improve HttpIpc error handling and timeout handling.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/IpcHttpKeys.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/RequestAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/adapters/HeadersAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/ResponseAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/adapters/ResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/RequestAdapterUnitTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcWhat.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-shared/src/androidTest/java/org/openeel/libcache/ipc/core/ResponseAdapterTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/HeadersAdapterUnitTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-http-ipc-shared/src/test/java/org/openeel/libcache/ipc/core/RequestAdapterUnitTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/MockWebServerAssetDispatcher.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/adapters/TimeoutAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/ext/MockResponseBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/adapters/RequestAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/src/main/kotlin/org/openeel/libcache/ipc/core/HttpIpcKeys.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcCall.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcClient.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcClientImpl.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClient.kt"
        ],
        "commitId" : "eb58287144981889207910613c05ee33117a7a75",
        "timestamp" : 1787728611000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add test of socket exception\u000a",
        "date" : "2026-08-26 11:16:51 +0400",
        "id" : "eb58287144981889207910613c05ee33117a7a75",
        "msg" : "Add test of socket exception",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcClientImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpCall.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/IpcHttpClientImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcCall.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcClientBuilder.kt",
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/ServiceConnectionMessengerProvider.kt",
          "lib-http-ipc-client/README.md",
          "lib-http-ipc-shared/README.md",
          "gradle.properties"
        ],
        "commitId" : "81a761a0c9c42868b6c5e5089e6f10eca70e3613",
        "timestamp" : 1787732935000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add HttpIpcClientBuilder and some related READMEs.\u000a",
        "date" : "2026-08-26 12:28:55 +0400",
        "id" : "81a761a0c9c42868b6c5e5089e6f10eca70e3613",
        "msg" : "Add HttpIpcClientBuilder and some related READMEs.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcClientBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-shared/README.md"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/README.md"
          },
          {
            "editType" : "edit",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/ServiceConnectionMessengerProvider.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt",
          "app-android/src/main/AndroidManifest.xml",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt",
          "lib-http-ipc-server/src/androidTest/AndroidManifest.xml",
          "app-android/build.gradle.kts",
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt",
          "lib-http-ipc-client/README.md",
          "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/HttpIpcService.kt"
        ],
        "commitId" : "d8b97c1de66010b77ce2b0a760155ebaf1c3b6c6",
        "timestamp" : 1787750012000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update naming on HttpIpcService. Add ready to uncomment code to allow for testing of HttpIpc using the WebViewActivity.\u000a",
        "date" : "2026-08-26 17:13:32 +0400",
        "id" : "d8b97c1de66010b77ce2b0a760155ebaf1c3b6c6",
        "msg" : "Update naming on HttpIpcService. Add ready to uncomment code to allow for testing of HttpIpc using the WebViewActivity.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/HttpIpcService.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/androidTest/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/src/androidTest/java/org/openeel/libcache/ipc/server/HttpIpcIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "lib-http-ipc-server/src/main/kotlin/org/openeel/libcache/ipc/server/IpcHttpService.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-client/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/interceptor/HttpIpcInterceptor.kt"
        ],
        "commitId" : "fc2efc33754007856ddf009ac1e2ed0845493a40",
        "timestamp" : 1787756454000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add OKHttp interceptor to use response from HttpIpc when already cached.\u000a",
        "date" : "2026-08-26 19:00:54 +0400",
        "id" : "fc2efc33754007856ddf009ac1e2ed0845493a40",
        "msg" : "Add OKHttp interceptor to use response from HttpIpc when already cached.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/interceptor/HttpIpcInterceptor.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/ServiceConnectionMessengerProvider.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcClientImpl.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt",
          "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcCall.kt",
          "gradle.properties"
        ],
        "commitId" : "e6851270e820de92048ffbc0faf424b1834e7e32",
        "timestamp" : 1787765587000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Tidyup HttpIpcCall. Update demo to include image.\u000a",
        "date" : "2026-08-26 21:33:07 +0400",
        "id" : "e6851270e820de92048ffbc0faf424b1834e7e32",
        "msg" : "Tidyup HttpIpcCall. Update demo to include image.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcClientImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/ServiceConnectionMessengerProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-client/src/main/kotlin/org/openeel/libcache/ipc/client/HttpIpcCall.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "e5afba98a323628471ef4eb2c414ad215be6210f",
        "timestamp" : 1787813603000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Clean up and streamline collection-related Maestro tests\u000a\u000a- Remove outdated and commented-out collection sharing and editing test steps.\u000a- Simplify collection remix flow assertions in the test script.\u000a- Remove commented assertion for Lesson 002.\u000a",
        "date" : "2026-08-27 10:53:23 +0400",
        "id" : "e5afba98a323628471ef4eb2c414ad215be6210f",
        "msg" : "Clean up and streamline collection-related Maestro tests",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle.properties"
        ],
        "commitId" : "876b1ab4ddae186dc0d801d77883c8c96b43b25d",
        "timestamp" : 1787814555000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version\u000a",
        "date" : "2026-08-27 11:09:15 +0400",
        "id" : "876b1ab4ddae186dc0d801d77883c8c96b43b25d",
        "msg" : "Bump version",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "app-android/src/main/AndroidManifest.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/XapiLaunchParams.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppTags.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/OpenEelIntent.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getlaunchoptionsforpublication/GetLaunchOptionsForPublicationUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt"
        ],
        "commitId" : "94fb283538e4668d8f7e0f1a8722e0b335e69c36",
        "timestamp" : 1787908657000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improve support for launching native apps using intent uri and custom action.\u000a\u000aIntent uri can be used by compatible apps to specify that a native app is required to open a publication. A specific action intent can be used to support dynamic domains (e.g. on apps where the user can specify their own server, making verified app links impossible).\u000a",
        "date" : "2026-08-28 13:17:37 +0400",
        "id" : "94fb283538e4668d8f7e0f1a8722e0b335e69c36",
        "msg" : "Improve support for launching native apps using intent uri and custom action.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/XapiLaunchParams.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppTags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getlaunchoptionsforpublication/GetLaunchOptionsForPublicationUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/OpenEelIntent.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/AndroidManifest.xml"
        ],
        "commitId" : "e6c78c1186adb61644e90402ca52deda4724d3fa",
        "timestamp" : 1787910703000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add non-https support to query for org.openeel.action.LAUNCH\u000a",
        "date" : "2026-08-28 13:51:43 +0400",
        "id" : "e6c78c1186adb61644e90402ca52deda4724d3fa",
        "msg" : "Add non-https support to query for org.openeel.action.LAUNCH",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "app-android/src/main/kotlin/world/respect/MainActivity.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt",
          "app-android/src/main/AndroidManifest.xml",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/SubmitActivityContextJobUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCaseAndroid.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/ReadiumLinkExt.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-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJobProcessor.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJob.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getlaunchoptionsforpublication/GetLaunchOptionsForPublicationUseCase.kt"
        ],
        "commitId" : "d10f9c64824de16973cd67b2548a978a5b26d5f4",
        "timestamp" : 1787925647000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add support to show app installation prompt.\u000a",
        "date" : "2026-08-28 18:00:47 +0400",
        "id" : "d10f9c64824de16973cd67b2548a978a5b26d5f4",
        "msg" : "Add support to show app installation prompt.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getlaunchoptionsforpublication/GetLaunchOptionsForPublicationUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCase.kt"
          },
          {
            "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"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/SubmitActivityContextJobUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJobProcessor.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJob.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_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/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCaseAndroid.kt"
        ],
        "commitId" : "382c3b245cb544ee8e01b89bd67c909a0a163f3a",
        "timestamp" : 1787927780000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add referrer parameter when directing users to an app store.\u000a",
        "date" : "2026-08-28 18:36:20 +0400",
        "id" : "382c3b245cb544ee8e01b89bd67c909a0a163f3a",
        "msg" : "Add referrer parameter when directing users to an app store.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCase.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-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCaseAndroid.kt"
        ],
        "commitId" : "4f9b0028accce4af732cbc094e632d6fa2c20d82",
        "timestamp" : 1787928409000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add referrer parameter when directing users to an app store.\u000a",
        "date" : "2026-08-28 18:46:49 +0400",
        "id" : "4f9b0028accce4af732cbc094e632d6fa2c20d82",
        "msg" : "Add referrer parameter when directing users to an app store.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/password/SavePasswordUseCaseProcessor.kt",
          "app-android/src/main/kotlin/world/respect/MainActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCase.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/password/SavePasswordUseCaseAndroidImpl.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/password/SavePasswordUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/SubmitActivityContextJobUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/EnqueueActivityContextJobUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJob.kt"
        ],
        "commitId" : "adb4fd184baff20a4069382ff26a6a57ab31ecb3",
        "timestamp" : 1788094820000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Rename install prompt to GoToAppStore.\u000a\u000aUpdate SavePasswordUseCase to use activity context processor.\u000a",
        "date" : "2026-08-30 17:00:20 +0400",
        "id" : "adb4fd184baff20a4069382ff26a6a57ab31ecb3",
        "msg" : "Rename install prompt to GoToAppStore.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/SubmitActivityContextJobUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/password/SavePasswordUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCaseAndroid.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/androidMain/kotlin/world/respect/credentials/password/SavePasswordUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/password/SavePasswordUseCaseProcessor.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJob.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/EnqueueActivityContextJobUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/installapp/ShowInstallAppPromptUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoConstants.kt"
        ],
        "commitId" : "db1f7b231d0caf93995bea64b72fbfecd5d2765e",
        "timestamp" : 1788096442000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add mobile only lessons to the demoapp catalog.\u000a",
        "date" : "2026-08-30 17:27:22 +0400",
        "id" : "db1f7b231d0caf93995bea64b72fbfecd5d2765e",
        "msg" : "Add mobile only lessons to the demoapp catalog.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoConstants.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt",
          "README_ADD_YOUR_APP.md"
        ],
        "commitId" : "8a654eaaf39c5ada415dc3289b329710cc1e08d5",
        "timestamp" : 1788097416000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update README_ADD_YOUR_APP.md to add guidance on handling publications that require a native app.\u000a",
        "date" : "2026-08-30 17:43:36 +0400",
        "id" : "8a654eaaf39c5ada415dc3289b329710cc1e08d5",
        "msg" : "Update README_ADD_YOUR_APP.md to add guidance on handling publications that require a native app.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_ADD_YOUR_APP.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README_ADD_YOUR_APP.md"
        ],
        "commitId" : "bdfeefc27719949eaf47dee0ddd2f2bbb1c9a169",
        "timestamp" : 1788106071000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update README_ADD_YOUR_APP.md to add guidance on intent filter.\u000a",
        "date" : "2026-08-30 20:07:51 +0400",
        "id" : "bdfeefc27719949eaf47dee0ddd2f2bbb1c9a169",
        "msg" : "Update README_ADD_YOUR_APP.md to add guidance on intent filter.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_ADD_YOUR_APP.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/DemoStringMaps.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoConstants.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/JsonObjectExt.kt",
          "respect-server/src/main/resources/demoapp/locales/fr-FR.json",
          "respect-server/src/main/resources/demoapp/locales/en-US.json",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
        ],
        "commitId" : "76a3f81564d1ca947cfb1665b7b53c04b62972e3",
        "timestamp" : 1788162043000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial language map for multilingual launchable app demo.\u000a",
        "date" : "2026-08-31 11:40:43 +0400",
        "id" : "76a3f81564d1ca947cfb1665b7b53c04b62972e3",
        "msg" : "Add initial language map for multilingual launchable app demo.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/JsonObjectExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/demoapp/locales/en-US.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/DemoStringMaps.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/demoapp/locales/fr-FR.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt",
          "respect-server/src/main/resources/demoapp/index.html",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/DemoStringMaps.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLearningUnitRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/StringExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt",
          "respect-server/src/main/resources/demoapp/locales/fr-FR.json",
          "respect-server/src/main/resources/demoapp/locales/en-US.json",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitHtmlUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
        ],
        "commitId" : "7a3da32354ec1188fbc09f228f562c409c5815d1",
        "timestamp" : 1788181028000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update demo app to show multiple language versions.\u000a",
        "date" : "2026-08-31 16:57:08 +0400",
        "id" : "7a3da32354ec1188fbc09f228f562c409c5815d1",
        "msg" : "Update demo app to show multiple language versions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/demoapp/index.html"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/demoapp/locales/en-US.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/DemoStringMaps.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitHtmlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/demoapp/locales/fr-FR.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLearningUnitRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/StringExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "README_ADD_YOUR_APP.md",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt",
          "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
        ],
        "commitId" : "ed81ce23b4e4d297704f361b7f7dc66bb31e0835",
        "timestamp" : 1788187739000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update demo app examples to include multiple languages.\u000a",
        "date" : "2026-08-31 18:48:59 +0400",
        "id" : "ed81ce23b4e4d297704f361b7f7dc66bb31e0835",
        "msg" : "Update demo app examples to include multiple languages.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_ADD_YOUR_APP.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/resources/demoapp/index.html"
        ],
        "commitId" : "a85c3071dcea57d0b8f5b8991ff83b8e95219bac",
        "timestamp" : 1788188325000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update demoapp index.html\u000a",
        "date" : "2026-08-31 18:58:45 +0400",
        "id" : "a85c3071dcea57d0b8f5b8991ff83b8e95219bac",
        "msg" : "Update demoapp index.html",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/resources/demoapp/index.html"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "contrib/language-names.ods",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReadiumLinkExt.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getlanguageendonym/GetLanguageEndonymUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/AlternativeLangLinks.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/lang_names.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "45162fda4d8ae2a78b1073cadbb6193a9fb70f31",
        "timestamp" : 1788261154000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add support to display alternative language versions for apps and learning units.\u000a",
        "date" : "2026-09-01 15:12:34 +0400",
        "id" : "45162fda4d8ae2a78b1073cadbb6193a9fb70f31",
        "msg" : "Add support to display alternative language versions for apps and learning units.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "contrib/language-names.ods"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/AlternativeLangLinks.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/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getlanguageendonym/GetLanguageEndonymUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/lang_names.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.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" : [
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
        ],
        "commitId" : "0c734ef1853f901413b6829b2339531eac50b9cb",
        "timestamp" : 1788263695000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update grade collection title.\u000a",
        "date" : "2026-09-01 15:54:55 +0400",
        "id" : "0c734ef1853f901413b6829b2339531eac50b9cb",
        "msg" : "Update grade collection title.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
        ],
        "commitId" : "b2f8a9f343fe8863b4d372dc809b614870d335a5",
        "timestamp" : 1788264635000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix OpdsRespectRepositoryIntegrationTest.kt compilation\u000a",
        "date" : "2026-09-01 16:10:35 +0400",
        "id" : "b2f8a9f343fe8863b4d372dc809b614870d335a5",
        "msg" : "Fix OpdsRespectRepositoryIntegrationTest.kt compilation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README_ADD_YOUR_APP.md"
        ],
        "commitId" : "5052d265d464808f675b60958901c2c3f96d979e",
        "timestamp" : 1788269163000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update README_ADD_YOUR_APP.md documentation on loading offline resources.\u000a",
        "date" : "2026-09-01 17:26:03 +0400",
        "id" : "5052d265d464808f675b60958901c2c3f96d979e",
        "msg" : "Update README_ADD_YOUR_APP.md documentation on loading offline resources.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_ADD_YOUR_APP.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "README_ADD_YOUR_APP.md"
        ],
        "commitId" : "8a60987a5b388511521bf52cb9fbf3ed29bd89fa",
        "timestamp" : 1788338743000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix README_ADD_YOUR_APP.md link to README_LAUNCHABLE_APP.md\u000a",
        "date" : "2026-09-02 12:45:43 +0400",
        "id" : "8a60987a5b388511521bf52cb9fbf3ed29bd89fa",
        "msg" : "Fix README_ADD_YOUR_APP.md link to README_LAUNCHABLE_APP.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README_ADD_YOUR_APP.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/AGENTS.md",
          "AGENTS.md"
        ],
        "commitId" : "abb85e6dbd78321176aca3bf9c5249d16722d1a8",
        "timestamp" : 1788547140000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update AGENTS.md for main project and respect-lib-shared.\u000a",
        "date" : "2026-09-04 22:39:00 +0400",
        "id" : "abb85e6dbd78321176aca3bf9c5249d16722d1a8",
        "msg" : "Update AGENTS.md for main project and respect-lib-shared.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "AGENTS.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/AGENTS.md",
          "respect-datalayer/AGENTS.md"
        ],
        "commitId" : "a0a4dd3ac37833343d14aa0112dd5e3e971d5b07",
        "timestamp" : 1788601024000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update AGENTS.md for respect-datalayer and respect-datalayer-db.\u000a",
        "date" : "2026-09-05 13:37:04 +0400",
        "id" : "a0a4dd3ac37833343d14aa0112dd5e3e971d5b07",
        "msg" : "Update AGENTS.md for respect-datalayer and respect-datalayer-db.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/AGENTS.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocumentByteArrayImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentEntity.kt",
          "respect-datalayer-db/AGENTS.md",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/SharedConverters.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt",
          "AGENTS.md",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/InstantAsTimestampString.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
        ],
        "commitId" : "dc559585e29f8e13215111b3b25763535378dcb9",
        "timestamp" : 1788625143000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of Activity Profile document storage using local database.\u000a",
        "date" : "2026-09-05 20:19:03 +0400",
        "id" : "dc559585e29f8e13215111b3b25763535378dcb9",
        "msg" : "Initial implementation of Activity Profile document storage using local database.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/InstantAsTimestampString.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocumentByteArrayImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/16.json"
        ],
        "commitId" : "4205e63579b8bbee151c447a65f486c1661e0dd7",
        "timestamp" : 1788625374000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of Activity Profile document storage using local database.\u000a",
        "date" : "2026-09-05 20:22:54 +0400",
        "id" : "4205e63579b8bbee151c447a65f486c1661e0dd7",
        "msg" : "Initial implementation of Activity Profile document storage using local database.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/16.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
        ],
        "commitId" : "577aee82bf7fedf9f84be8febb5b9d163a125af4",
        "timestamp" : 1788626077000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Rename DocumentParams and MultiDocParams.\u000a",
        "date" : "2026-09-05 20:34:37 +0400",
        "id" : "577aee82bf7fedf9f84be8febb5b9d163a125af4",
        "msg" : "Rename DocumentParams and MultiDocParams.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
        ],
        "commitId" : "45573cfef56405f2586ad4835917c3ff87571c4d",
        "timestamp" : 1788627046000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor XapiActivityProfileResource.kt to be a descendant of generic XapiDocumentResource.kt\u000a",
        "date" : "2026-09-05 20:50:46 +0400",
        "id" : "45573cfef56405f2586ad4835917c3ff87571c4d",
        "msg" : "Refactor XapiActivityProfileResource.kt to be a descendant of generic XapiDocumentResource.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiActivityProfileRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt",
          "respect-server/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "gradle/libs.versions.toml",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttp.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
        ],
        "commitId" : "251e4f854a3f454a080e2d8fbcf181948b981229",
        "timestamp" : 1788685088000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add xAPI Activity Profile route\u000a",
        "date" : "2026-09-06 12:58:08 +0400",
        "id" : "251e4f854a3f454a080e2d8fbcf181948b981229",
        "msg" : "Add xAPI Activity Profile route",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiActivityProfileRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttpClient.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasswordDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttp.kt",
          "respect-datalayer-http/AGENTS.md",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasskeyDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasswordDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasskeyDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt",
          "respect-datalayer-db/AGENTS.md",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttpClient.kt"
        ],
        "commitId" : "87e5948c6a605bf31d88772a68c3605305888583",
        "timestamp" : 1788687103000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update AGENTS.md guidance for datalayer-db and datalayer-http.\u000a\u000aRename http resource client suffix to HttpClient for clarity.\u000a",
        "date" : "2026-09-06 13:31:43 +0400",
        "id" : "87e5948c6a605bf31d88772a68c3605305888583",
        "msg" : "Update AGENTS.md guidance for datalayer-db and datalayer-http.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasskeyDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasswordDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasswordDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasskeyDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt",
          "respect-lib-xapi-core/build.gradle.kts",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt"
        ],
        "commitId" : "6cfea1d7f26a34ba1984f5d39149bf196666e9c2",
        "timestamp" : 1788714465000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add XapiActivityProfileResourceHttpClient implementation.\u000a",
        "date" : "2026-09-06 21:07:45 +0400",
        "id" : "6cfea1d7f26a34ba1984f5d39149bf196666e9c2",
        "msg" : "Add XapiActivityProfileResourceHttpClient implementation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
        ],
        "commitId" : "1e82740368b233000871a26f36af06dc49a6aa83",
        "timestamp" : 1788780599000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Enable assertions for \"Assignment Result Statement Demo\" app title in Maestro test flow\u000a",
        "date" : "2026-09-07 15:29:59 +0400",
        "id" : "1e82740368b233000871a26f36af06dc49a6aa83",
        "msg" : "Enable assertions for \"Assignment Result Statement Demo\" app title in Maestro test flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-datalayer-repository/AGENTS.md"
        ],
        "commitId" : "43a6e66b210e450437282cd6e416f17d7cb1ad73",
        "timestamp" : 1788853155000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress: add guidance on document APIs synchronizing deletions.\u000a",
        "date" : "2026-09-08 11:39:15 +0400",
        "id" : "43a6e66b210e450437282cd6e416f17d7cb1ad73",
        "msg" : "Work in progress: add guidance on document APIs synchronizing deletions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/AGENTS.md"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-ipc-server/src/main/AndroidManifest.xml",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcIntent.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocumentByteArrayImpl.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportPeriod.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/Indicator.kt",
          "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt",
          "respect-lib-xapi-nanohttpd/.gitignore",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt",
          "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiObjectType.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/rusticilaunch/model/TinCanXmlDocument.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/queryresponse/XapiSqlQueryResponse.kt",
          "lib-xapi-ipc-shared/.gitignore",
          "respect-lib-xapi-ipc-shared/build.gradle.kts",
          "lib-xapi-core/README.md",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/AndroidManifest.xml",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataReadyStateExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementObjectExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActorExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/StatementReportRow.kt",
          "lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt",
          "lib-xapi-core/README_CLASS_RECIPE.md",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "lib-xapi-core/README_ASSIGNMENT_RECIPE.md",
          "lib-xapi-ipc-server/proguard-rules.pro",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActorExt.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/InstrumentationTestRunner.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementObjectExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiConstants.kt",
          "lib-xapi-ipc-server/.gitignore",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAccount.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportConditionFilterOptions.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/queryresponse/XapiSqlQueryResponse.kt",
          "respect-lib-xapi-core/README_PERMISSION_RECIPE.md",
          "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt",
          "respect-lib-xapi-nanohttpd/build.gradle.kts",
          "lib-xapi-ipc-client/consumer-rules.pro",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/DefaultIndicators.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt",
          "respect-lib-xapi-ipc-server/consumer-rules.pro",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiContextExt.kt",
          "respect-lib-xapi-core/README_XAPI_OPDS.md",
          "app-android/build.gradle.kts",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataReadyStateExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiExceptionExt.kt",
          "respect-lib-xapi-ipc-client/build.gradle.kts",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt",
          "lib-xapi-core/src/jvmTest/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXmlDocumentTest.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiContextExt.kt",
          "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcClientBuilder.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiRequestHeaders.kt",
          "lib-xapi-ipc-shared/consumer-rules.pro",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcClientBuilder.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportConditionFilterOptions.kt",
          "respect-lib-xapi-core/README_APPLISTING_RECIPE.md",
          "lib-xapi-ipc-client/build.gradle.kts",
          "respect-lib-xapi-ipc-server/build.gradle.kts",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContext.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "respect-lib-xapi-core/build.gradle.kts",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt",
          "lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/InstrumentationTestRunner.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiResult.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAccount.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResourceProvider.kt",
          "lib-xapi-ipc-shared/README.md",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContextActivities.kt",
          "respect-lib-xapi-core/README_EXTENSION_PUBLICATION.md",
          "lib-xapi-ipc-server/build.gradle.kts",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiRequire.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiState.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt",
          "respect-lib-xapi-core/src/jvmTest/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXmlDocumentTest.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt",
          "respect-lib-xapi-ipc-shared/src/main/AndroidManifest.xml",
          "respect-lib-shared/build.gradle.kts",
          "lib-xapi-ipc-client/proguard-rules.pro",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocumentByteArrayImpl.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataLoadMetaInfoExt.kt",
          "respect-datalayer/build.gradle.kts",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/Indicator.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportOptions.kt",
          "respect-lib-xapi-ipc-client/.gitignore",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiAgentsResource.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAgent.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/rusticilaunch/model/TinCanXmlDocument.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt",
          "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/StringValuesExt.kt",
          "lib-xapi-ipc-shared/proguard-rules.pro",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentTaskProgress.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiRequire.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContextActivities.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiResult.kt",
          "lib-xapi-core/README_CLASSGROUPS_RECIPE.md",
          "lib-xapi-core/README_XAPI_OPDS.md",
          "respect-lib-xapi-ipc-shared/README.md",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportOptions.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResourceProvider.kt",
          "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiExceptionExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiActorAndAssignmentProgress.kt",
          "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleStringValues.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAttachment.kt",
          "lib-xapi-core/README_PERMISSION_RECIPE.md",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiInteractionTypeEnum.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt",
          "lib-xapi-core/README_XAPI_SQL_QUERY.md",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAgent.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiState.kt",
          "respect-lib-xapi-ipc-server/proguard-rules.pro",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/StringValuesExt.kt",
          "lib-xapi-ipc-client/src/main/AndroidManifest.xml",
          "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md",
          "lib-xapi-ipc-shared/build.gradle.kts",
          "lib-xapi-ipc-shared/src/main/AndroidManifest.xml",
          "respect-lib-xapi-core/README_CLASS_RECIPE.md",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt",
          "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt",
          "respect-lib-xapi-core/.gitignore",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiAgentsResource.kt",
          "respect-lib-xapi-ipc-shared/consumer-rules.pro",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentTaskProgress.kt",
          "respect-app-compose/build.gradle.kts",
          "lib-xapi-ipc-server/src/androidTest/AndroidManifest.xml",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportSeries.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiRequestHeaders.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivitiesResource.kt",
          "lib-xapi-nanohttpd/build.gradle.kts",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiConstants.kt",
          "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataLoadMetaInfoExt.kt",
          "lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt",
          "respect-lib-xapi-core/README.md",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt",
          "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-xapi-ipc-server/.gitignore",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt",
          "respect-lib-xapi-ipc-client/consumer-rules.pro",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/DefaultIndicators.kt",
          "respect-lib-xapi-ipc-client/proguard-rules.pro",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt",
          "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "lib-xapi-core/README_EXTENSION_PUBLICATION.md",
          "lib-xapi-core/README_APPLISTING_RECIPE.md",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/AssignmentAndProgress.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportPeriod.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiObjectType.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt",
          "lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAttachment.kt",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcTags.kt",
          "lib-xapi-nanohttpd/.gitignore",
          "respect-lib-xapi-core/README_CLASSGROUPS_RECIPE.md",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesBuilderExt.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResponseHeaders.kt",
          "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcTags.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContext.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiInteractionTypeEnum.kt",
          "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcIntent.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/StatementReportRow.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt",
          "respect-lib-xapi-ipc-client/src/main/AndroidManifest.xml",
          "lib-xapi-ipc-server/src/main/AndroidManifest.xml",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityExt.kt",
          "respect-lib-cache/build.gradle.kts",
          "lib-xapi-ipc-client/.gitignore",
          "lib-xapi-core/build.gradle.kts",
          "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt",
          "lib-xapi-core/.gitignore",
          "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleStringValues.kt",
          "respect-lib-xapi-ipc-shared/.gitignore",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiActorAndAssignmentProgress.kt",
          "respect-lib-xapi-core/README_XAPI_SQL_QUERY.md",
          "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt",
          "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivitiesResource.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesBuilderExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResponseHeaders.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/AssignmentAndProgress.kt",
          "settings.gradle.kts",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt",
          "respect-lib-xapi-ipc-shared/proguard-rules.pro",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt",
          "lib-xapi-ipc-server/consumer-rules.pro",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportSeries.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentResult.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentResult.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt",
          "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt"
        ],
        "commitId" : "c36bb3577bad1ef977ec836354220b2ba9d22dfc",
        "timestamp" : 1788853793000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update xapi module package names to follow new convention - just lib.\u000a",
        "date" : "2026-09-08 11:49:53 +0400",
        "id" : "c36bb3577bad1ef977ec836354220b2ba9d22dfc",
        "msg" : "Update xapi module package names to follow new convention - just lib.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcClientBuilder.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResponseHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-server/src/androidTest/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiInteractionTypeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README_EXTENSION_PUBLICATION.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesBuilderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-nanohttpd/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/README_EXTENSION_PUBLICATION.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocumentByteArrayImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleStringValues.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiResult.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivitiesResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentTaskProgress.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/README_XAPI_SQL_QUERY.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportConditionFilterOptions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAttachment.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportSeries.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README_PERMISSION_RECIPE.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResponseHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/Indicator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiRequestHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementObjectExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/consumer-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-server/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiContextExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/README_PERMISSION_RECIPE.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiActorAndAssignmentProgress.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcTags.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataReadyStateExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/README_CLASS_RECIPE.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/rusticilaunch/model/TinCanXmlDocument.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActorExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/Indicator.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiIpcClientBuilder.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportOptions.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README_XAPI_OPDS.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContext.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiActorAndAssignmentProgress.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/README_APPLISTING_RECIPE.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiExceptionExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcIntent.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiRequire.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcIntent.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiConstants.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAgent.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/DefaultIndicators.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/StatementReportRow.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/StringValuesExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/AssignmentAndProgress.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentResult.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/queryresponse/XapiSqlQueryResponse.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAccount.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiAgentsResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/README_CLASSGROUPS_RECIPE.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleStringValues.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiObjectType.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportPeriod.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README_XAPI_SQL_QUERY.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiObjectType.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiExceptionExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementObjectExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/StatementReportRow.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/rusticilaunch/model/TinCanXmlDocument.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/proguard-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-server/consumer-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiResourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiAgentsResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiAssignmentProgressExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportPeriod.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-client/consumer-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/consumer-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementRef.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-client/proguard-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataLoadMetaInfoExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/AssignmentSummary.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocumentByteArrayImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-server/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/MessageRequestSenderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/README_XAPI_OPDS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiContextActivities.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-client/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataReadyStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/StringValuesExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-server/proguard-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/InstrumentationTestRunner.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportSeries.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActorExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiResult.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiState.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActor.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivitiesResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/AssignmentAndProgress.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-client/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-client/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiContextExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/XapiRequestHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportConditionFilterOptions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README_APPLISTING_RECIPE.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcTags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiAttachment.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiState.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README_CLASSGROUPS_RECIPE.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/consumer-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/src/androidTest/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiInteractionTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/jvmTest/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXmlDocumentTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/InstrumentationTestRunner.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiRequire.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/DefaultIndicators.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataLoadMetaInfoExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README_CLASS_RECIPE.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-server/proguard-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-ipc-shared/consumer-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementObject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/queryresponse/XapiSqlQueryResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/extensions/reportoptions/ReportOptions.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/jvmTest/kotlin/world/respect/lib/xapi/rusticilaunch/TinCanXmlDocumentTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/composites/XapiAssignmentTaskProgress.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "lib-xapi-test/AGENTS.md",
          "settings.gradle.kts",
          "lib-xapi-test/README.md",
          "respect-datalayer-db/build.gradle.kts",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt",
          "lib-xapi-core/README.md",
          "lib-xapi-test/.gitignore",
          "gradle/libs.versions.toml",
          "lib-xapi-test/src/androidMain/AndroidManifest.xml",
          "build.gradle.kts",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiAssertions.kt",
          "lib-xapi-test/build.gradle.kts",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiStatementResourceAssertions.kt"
        ],
        "commitId" : "4b8356ac8edccff843d686ad757ccf47029c9b53",
        "timestamp" : 1788859439000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor xapi statement resource tests into lib-xapi-test\u000a",
        "date" : "2026-09-08 13:23:59 +0400",
        "id" : "4b8356ac8edccff843d686ad757ccf47029c9b53",
        "msg" : "Refactor xapi statement resource tests into lib-xapi-test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiAssertions.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiStatementResourceAssertions.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/AGENTS.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/.gitignore"
          },
          {
            "editType" : "edit",
            "file" : "build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "app-android/src/main/AndroidManifest.xml",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/URLProtocolExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt",
          "gradle.properties"
        ],
        "commitId" : "8f13aef35fa76a8a389d47f7aae91e610e324e6e",
        "timestamp" : 1788962068000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix AndroidManifest.xml query section for launchable apps to handle when query includes host and pathPrefix.\u000a\u000aFix PinPublicationPrepareUseCase to avoid attempting to download an intent url.\u000a",
        "date" : "2026-09-09 17:54:28 +0400",
        "id" : "8f13aef35fa76a8a389d47f7aae91e610e324e6e",
        "msg" : "Fix AndroidManifest.xml query section for launchable apps to handle when query includes host and pathPrefix.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/URLProtocolExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/resources/directories/default.properties",
          "app-android/src/main/AndroidManifest.xml",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt",
          "respect-lib-shared/src/androidMain/resources/directories/default.properties",
          "gradle.properties",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
        ],
        "commitId" : "56e0677bd714bc6e10e3dede68d664ca17970d21",
        "timestamp" : 1788972022000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update AndroidManifest.xml to include new testing server url.\u000aMove directories/default.properties data into commonMain\u000aUpdate Login screen to show server url and location.\u000aBump version.\u000a",
        "date" : "2026-09-09 20:40:22 +0400",
        "id" : "56e0677bd714bc6e10e3dede68d664ca17970d21",
        "msg" : "Update AndroidManifest.xml to include new testing server url.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/resources/directories/default.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/resources/directories/default.properties"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.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/manageuser/login/LoginScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/build.gradle.kts"
        ],
        "commitId" : "15024741e858b809e2c0f00024094886c11e4bb7",
        "timestamp" : 1788975563000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version number\u000a",
        "date" : "2026-09-09 21:39:23 +0400",
        "id" : "15024741e858b809e2c0f00024094886c11e4bb7",
        "msg" : "Bump version number",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-test-resources/build.gradle.kts",
          "respect-lib-test/build.gradle.kts",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.desktop.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt",
          "respect-datalayer-http/build.gradle.kts",
          "respect-server/build.gradle.kts",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/images/RespectImage.desktop.kt",
          "respect-lib-util/build.gradle.kts",
          "respect-datalayer/build.gradle.kts",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.desktop.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-lib-dataloadstate/build.gradle.kts",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.desktop.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/app/AppIcon.desktop.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.desktop.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.desktop.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/main.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/BasicWebView.desktop.kt",
          "respect-datalayer-db/build.gradle.kts",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt",
          "respect-lib-serializers/build.gradle.kts",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/app/AppIcon.desktop.kt",
          "respect-lib-opds-model/build.gradle.kts",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/BasicWebView.desktop.kt",
          "gradle.properties",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/images/RespectImage.desktop.kt",
          "respect-server/src/main/resources/openapi/openapi.yaml",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.desktop.kt",
          "respect-app-compose/src/jvmMain/resources/sample-feed.json",
          "respect-app-compose/src/desktopMain/resources/sample-feed.json",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/main.kt"
        ],
        "commitId" : "82241844fac122cf490228c6cdd1b4c4f8c8d97b",
        "timestamp" : 1789027836000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove gradle properties put there by previous AGP plugin upgrade assistants that are not needed.\u000a\u000aRemove most usage of deprecated by getting.\u000a",
        "date" : "2026-09-10 12:10:36 +0400",
        "id" : "82241844fac122cf490228c6cdd1b4c4f8c8d97b",
        "msg" : "Remove gradle properties put there by previous AGP plugin upgrade assistants that are not needed.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-serializers/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test-resources/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/app/AppIcon.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/app/AppIcon.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/resources/sample-feed.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/images/RespectImage.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-dataloadstate/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/BasicWebView.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/images/RespectImage.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/openapi/openapi.yaml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/jvmMain/resources/sample-feed.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/BasicWebView.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-opds-model/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/9.json"
        ],
        "commitId" : "13d5b5d8793a8b8513c3c73f7ab206c23964f6cf",
        "timestamp" : 1789027852000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add 9.json database schema.\u000a",
        "date" : "2026-09-10 12:10:52 +0400",
        "id" : "13d5b5d8793a8b8513c3c73f7ab206c23964f6cf",
        "msg" : "Add 9.json database schema.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/9.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle/libs.versions.toml",
          "settings.gradle.kts"
        ],
        "commitId" : "243a1fbac1da00f207bb1cd12bbb24101f206311",
        "timestamp" : 1789028840000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update to AGP9.4\u000a",
        "date" : "2026-09-10 12:27:20 +0400",
        "id" : "243a1fbac1da00f207bb1cd12bbb24101f206311",
        "msg" : "Update to AGP9.4",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "app-android/build.gradle.kts",
          "gradle.properties"
        ],
        "commitId" : "3e13e3586a326fede7494c10f15d257af2d99d74",
        "timestamp" : 1789039879000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix display of assignments list to ensure icon is shown even after other statements for activityid are received.\u000a",
        "date" : "2026-09-10 15:31:19 +0400",
        "id" : "3e13e3586a326fede7494c10f15d257af2d99d74",
        "msg" : "Fix display of assignments list to ensure icon is shown even after other statements for activityid are received.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xapi-core/README_ASSIGNMENT_RECIPE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/DurationExt.kt"
        ],
        "commitId" : "a0cda72277aa552c22f36d36d56fc8d6f512b377",
        "timestamp" : 1789041071000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix display of duration for StatementDetail.\u000a",
        "date" : "2026-09-10 15:51:11 +0400",
        "id" : "a0cda72277aa552c22f36d36d56fc8d6f512b377",
        "msg" : "Fix display of duration for StatementDetail.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/DurationExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/build.gradle.kts",
          "gradle.properties"
        ],
        "commitId" : "bac981ed8f6a77591d1587b958844d48efc761cf",
        "timestamp" : 1789041138000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version.\u000a",
        "date" : "2026-09-10 15:52:18 +0400",
        "id" : "bac981ed8f6a77591d1587b958844d48efc761cf",
        "msg" : "Bump version.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/build.gradle.kts",
          "app-android/proguard-rules.pro",
          "gradle.properties"
        ],
        "commitId" : "79deada44cd8d64b20be58b99fec2fb09bb003e2",
        "timestamp" : 1789044795000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix crash on QR code scanning screen caused by lack of proguard rules from MLKit transitive dependency.\u000a\u000aSee See https://github.com/googlesamples/mlkit/issues/1018\u000a",
        "date" : "2026-09-10 16:53:15 +0400",
        "id" : "79deada44cd8d64b20be58b99fec2fb09bb003e2",
        "msg" : "Fix crash on QR code scanning screen caused by lack of proguard rules from MLKit transitive dependency.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "app-android/proguard-rules.pro"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".github/ISSUE_TEMPLATE/add_app_to_default_catalog.MD"
        ],
        "commitId" : "ade6c5b9d2cf985a1d7a5a30db21f7b1c789b4b6",
        "timestamp" : 1789050579000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Update issue template label for app catalog request\u000a",
        "date" : "2026-09-10 18:29:39 +0400",
        "id" : "ade6c5b9d2cf985a1d7a5a30db21f7b1c789b4b6",
        "msg" : "Update issue template label for app catalog request",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".github/ISSUE_TEMPLATE/add_app_to_default_catalog.MD"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-core/AGENTS.md",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentResourceExt.kt",
          "lib-xapi-test/AGENTS.md",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonExt.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiActivityProfileResourceAssertions.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt"
        ],
        "commitId" : "e9d7fc0cad3d4ad8c180d9f17572c57c35ae4f52",
        "timestamp" : 1789125475000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor xapi activity profile resource tests into lib-xapi-test\u000a",
        "date" : "2026-09-11 15:17:55 +0400",
        "id" : "e9d7fc0cad3d4ad8c180d9f17572c57c35ae4f52",
        "msg" : "Refactor xapi activity profile resource tests into lib-xapi-test",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentResourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiActivityProfileResourceAssertions.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/WriteQueueItemEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/UnauthorizedException.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRoleEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntityPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer-repository/AGENTS.md",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/EnqueueDrainRemoteWriteQueueUseCaseAndroidImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityInteractionDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumSubjectEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/EnrollmentAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datalayer-db/AGENTS.md",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/XXHashUidNumberMapper.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/SystemPermissionDaoCommon.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/InviteEntityDao.kt",
          "respect-datalayer-http/README.md",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RepositoryOffsetLimitPagingSource2.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumSubjectEntity.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/PersonQrBadgeRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsGroupAdapter.kt",
          "lib-dataloadstate-ktor-server/.gitignore",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/ext/SchoolDirectoryEntryExt.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttpClient.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/headers/directives/DirectivesToMap.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedMetadataEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityObjectTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/LogPrefixFunction.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/11.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StateIdAndLastModified.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerParams.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryLangMapEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/4.json",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttpClient.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RemoteMediator2.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttpClient.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolConfigEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DateConstants.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/7.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolAppAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSummaryResultRow.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttpClient.kt",
          "app-android/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFacetAdapter.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer-http/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/GetAuthenticatedPersonUseCase.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueRunPullSyncUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasswordRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbLangMapEntryDao.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/EnqueueRunPullSyncUseCaseAndroidImpl.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserProfile.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt",
          "respect-lib-dataloadstate/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonAdapters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpRequestBuilderExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementContextActivityJoinDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt",
          "lib-dataloadstate-ktor-server/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PullSyncStatusEntityDao.kt",
          "lib-dataloadstate-ktor-server/src/commonMain/kotlin/world/respect/lib/dataloadstate/ktorserver/ApplicationCallExt.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolUrlHttpDataSourceExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/DummySchoolConfigSettingsDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentLearningResourceRefEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "lib-xapi-ipc-server/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/EnrollmentExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/InviteEntity.kt",
          "respect-lib-test/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFacetEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetPermissionLastModifiedUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterEnrollment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonRelatedPersonEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/pullsync/PullSyncTracker.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ReportDataSource.kt",
          "respect-datalayer-repository/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/MapPagingSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSourceLocal.kt",
          "lib-datalayer-http-server/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedMetadataEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiGroupMemberActorJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateEntityDao.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassPermissionEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonPasskey.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCaseImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ReportDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoin.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/1.json",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonPasskeyAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/DataLayerTags.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolConfigSettingDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/ModelWithTimesExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ReportAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/ExtendedDataSourceValidationHelper.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/ForbiddenException.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolConfigSetting.kt",
          "respect-lib-dataloadstate/.gitignore",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/WriteQueueItemEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassPermission.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasskeyDataSourceLocal.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/3.json",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttpClient.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/BuildFlags.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/DataBuilderExt.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttpClient.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/InstantAsTimestampString.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityExtensionEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt",
          "respect-datalayer-db/README.md",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonPasswordAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPermissionGrantEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/DeviceInfo.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/IndicatorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/SharedConverters.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/TestOpdsStorage.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkValidationInfo.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasskeyRoute.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/DoorOffsetLimitRemoteMediator.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/SessionTimeAndProgressInfo.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/DatalayerPagingUtil.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "lib-datalayer-http-server/.gitignore",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt",
          "respect-lib-shared-se/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ReportEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrollmentEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/AuthTokenProvider.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsParentType.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolConfigEntityDao.kt",
          "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiStatementsResourceRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrBadgeAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.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/networkvalidation/daos/NetworkValidationInfoEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/IndicatorDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/RemoteWriteQueue.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/ListExt.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncWorker.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/SchoolDirectoryEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/15.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrBadge.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolApp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AuthTokenEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGenderEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt",
          "respect-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/index.json",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadState.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/LangMapAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentAssigneeRefTypeEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonPassword.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/5.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonStatusEnum.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiAgentsResourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/entities/NetworkValidationInfoEntity.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/9.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentEntity.kt",
          "lib-xapi-core/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonGenderEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterOrgGUIDRef.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolUrlBasedDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnumExt.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/2.json",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttpClient.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttpClient.kt",
          "settings.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Report.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/LoadParamsExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDeleteCommand.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/StatusEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasswordDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteState.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClass.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/LangMapEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectUserDataSource.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolJsonRoute.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/RespectAppManifestExt.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiActivityProfileRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/2.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonRelatedPersonEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttpClient.kt",
          "respect-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/lesson001.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementResourceHttpClientTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/DateConstants.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryLangMapEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntityWithRoles.kt",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationRequestExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsGroupEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/FilterPagingSource.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/WorkerExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/EnrollmentRoleEnumExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/IntExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/AuthenticatedUserPrincipalId.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiTimes.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiSessionEntity.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "respect-server/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/IPagingSourceFactory.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserId.kt",
          "respect-datalayer/src/androidMain/AndroidManifest.xml",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntityTypeEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/model/RespectAppManifest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolPermissionGrantAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/ReportQueryResult.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/OrderOption.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterResourceGUIDRef.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ReportDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/InviteAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttpClient.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/ILangMapEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBaseStatusEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasswordEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/ILangMapEntityExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/EmptyPagingSourceFactory.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/shared/paging/OffsetLimitHttpPagingSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRole.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbLangMapEntry.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/LangMapEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/JsonObjectBuilderExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentsResourceDb.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/6.json",
          "respect-datalayer/.gitignore",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRole.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassInvteModeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntity.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/UuidExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumLinkEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsGroupEntity.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivitiesResourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueDrainRemoteWriteQueueUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/IndicatorDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/ILangMapEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/IndicatorEntityDao.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepository.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntryPropEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/GetPermissionLastModifiedUseCaseDbImpl.kt",
          "respect-datalayer/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/PagingSourceExt.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/ModelWithTimes.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AuthTokenAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonPasskeyAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt",
          "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolAppEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentProgressEntityRow.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasskeyEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityLangMapEntryDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolAppDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Enrollment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonRoleEntity.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/RepoWorkerConstants.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUser.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiEntityObjectTypeFlags.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/ListExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiSerializers.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiGroupMemberActorJoinDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectSchoolDirectory.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/LastModifiedAndETagDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/RepositoryModelDataSource.kt",
          "respect-datalayer-db/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AuthTokenEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserGUIDRef.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSourceLocal.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerHeaders.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonRoleEntityDao.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PagingSourceFactoryHolder.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt",
          "respect-datalayer-http/AGENTS.md",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/DelegatedInvalidationPagingSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasskeyDataSource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasskeyDataSourceHttpClient.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasswordDataSourceHttpClient.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolAppEntityDao.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/14.json",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttpClient.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/SchoolPermissionGrantExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntityWithPermissions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/WriteQueueItemAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt",
          "lib-xapi-nanohttpd/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumSubjectEntityAdapters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDeleteCommandDao.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectRealmDataSourceRepository.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/1.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/writequeue/RemoteWriteQueueDbImpl.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryEntryAdapter.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClassGUIDRef.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Person.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/StateIdAndLastModified.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/WritableDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivitiesResourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RepositoryPagingSourceFactory.kt",
          "respect-datalayer/README.md",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ReportQueryResult.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/UuidExt.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AuthToken.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeBadgeDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/ExtendedDataSourceValidationHelperImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/db/opds/adapters/lesson001.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/UidNumberMapper.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsPublicationEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/16.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/PersonPasskeyEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/composites/PersonListDetails.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttpClient.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/NewLocalDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleTypeEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/PermissionFlags.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt",
          "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/ValidationInfoAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ReportEntityDao.kt",
          "respect-datalayer/AGENTS.md",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/3.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonAdapter.kt",
          "respect-datalayer-repository/src/jvmTest/resources/logback.xml",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonPasswordEntityDao.kt",
          "respect-datalayer-repository/README.md",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ReportDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAssignmentResultRow.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActivityExt.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/8.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentLearningResourceRefEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/composites/ClazzListDetails.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/BaseDataSourceValidationHelper.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementsResourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGUIDRef.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectRealmDataSourceDb.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueWorker.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/InviteStatusEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumLinkEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/EmptyPagingSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/4.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateEntity.kt"
        ],
        "commitId" : "220452c3694c46f98aa1ba4efcbeadb3db84ebbd",
        "timestamp" : 1789138166000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor module names. Work in progress creation of dedicated httpclient test for xapi statement resource.\u000a",
        "date" : "2026-09-11 18:49:26 +0400",
        "id" : "220452c3694c46f98aa1ba4efcbeadb3db84ebbd",
        "msg" : "Refactor module names. Work in progress creation of dedicated httpclient test for xapi statement resource.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/SchoolPermissionGrantExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/DatalayerPagingUtil.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiGroupMemberActorJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RepositoryPagingSourceFactory.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/JsonObjectBuilderExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/PagingSourceExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiSerializers.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/DoorOffsetLimitRemoteMediator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate-ktor-server/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiEntityObjectTypeFlags.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActivityExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsGroupEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivitiesResourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-dataloadstate/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrollmentEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDeleteCommand.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerParams.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiTimes.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/2.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/LoadParamsExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PullSyncStatusEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/9.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryLangMapEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiStatementsResourceRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AuthTokenEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityInteractionDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/composites/ClazzListDetails.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsGroupEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonRoleEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/LastModifiedAndETagDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolAppEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/WriteQueueItemEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Enrollment.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnumExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiGroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrBadgeAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolConfigSetting.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/IPagingSourceFactory.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/WriteQueueItemAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasswordRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasswordDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/index.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonPasskey.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/daos/NetworkValidationInfoEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/OrderOption.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ReportQueryResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonPasswordEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentProgressEntityRow.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolPermissionGrantAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/EnqueueRunPullSyncUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/InviteStatusEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivitiesResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasskeyRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectSchoolDirectory.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectUserDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRoleEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGenderEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/11.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/7.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonGenderEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/entities/NetworkValidationInfoEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/SessionTimeAndProgressInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/RemoteWriteQueue.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/db/opds/adapters/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/3.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/WorkerExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/ILangMapEntityExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsGroupAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-dataloadstate/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/InstantAsTimestampString.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasskeyDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/WriteQueueItemEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterResourceGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterOrgGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/4.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/ext/SchoolDirectoryEntryExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/StatusEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AuthTokenAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntityTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueWorker.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFacetEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolApp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAssignmentResultRow.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/14.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/ModelWithTimesExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/headers/directives/DirectivesToMap.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/DeviceInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/InviteEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/BaseDataSourceValidationHelper.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryLangMapEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/EmptyPagingSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AuthToken.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementResourceHttpClientTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/15.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/DataBuilderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ReportDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolUrlBasedDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/writequeue/RemoteWriteQueueDbImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClass.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/GetPermissionLastModifiedUseCaseDbImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/pullsync/PullSyncTracker.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared-se/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiActivityProfileRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/model/RespectAppManifest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntityWithRoles.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserProfile.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/DateConstants.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/shared/paging/OffsetLimitHttpPagingSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityObjectTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRole.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/UuidExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/EmptyPagingSourceFactory.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolAppAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/16.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumSubjectEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/UidNumberMapper.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/StateIdAndLastModified.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiSessionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/ListExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolConfigEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassPermission.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasswordEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntryPropEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumSubjectEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DateConstants.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/EnrollmentExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ReportDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/IndicatorDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncWorker.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonAdapters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/DataLayerTags.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/UuidExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/SystemPermissionDaoCommon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ReportEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ReportDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectRealmDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/DummySchoolConfigSettingsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/PersonQrBadgeRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterEnrollment.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolAppEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonPasswordAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/IndicatorDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonPasskeyAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentLearningResourceRefEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryEntryAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/3.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentLearningResourceRefEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBaseStatusEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/8.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpRequestBuilderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/FilterPagingSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/TestOpdsStorage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueDrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectRealmDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/EnrollmentRoleEnumExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentAssigneeRefTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/LogPrefixFunction.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/resources/logback.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-server/.gitignore"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationRequestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiStatementsResourceRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsParentType.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolUrlHttpDataSourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/NewLocalDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolJsonRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/4.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ReportEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/InviteEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StateIdAndLastModified.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/ForbiddenException.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ReportDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/IndicatorEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/5.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasskeyEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonRoleEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/2.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSummaryResultRow.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeBadgeDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/PermissionFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-server/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Person.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoin.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/SchoolDirectoryEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/XXHashUidNumberMapper.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/IntExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbLangMapEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/EnrollmentAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonRelatedPersonEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/PersonPasskeyEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementsResourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Report.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/WritableDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/ExtendedDataSourceValidationHelperImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/RepoWorkerConstants.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RepositoryOffsetLimitPagingSource2.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/ExtendedDataSourceValidationHelper.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentsResourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiAgentsResourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueRunPullSyncUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/RespectAppManifestExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkValidationInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/InviteAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityExtensionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrBadge.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/RepositoryModelDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonPassword.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/1.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasswordDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PagingSourceFactoryHolder.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate-ktor-server/src/commonMain/kotlin/world/respect/lib/dataloadstate/ktorserver/ApplicationCallExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate-ktor-server/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/AuthenticatedUserPrincipalId.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/UnauthorizedException.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRole.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/1.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/ILangMapEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/LangMapEntityExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassInvteModeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntityWithPermissions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassPermissionEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonStatusEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/ListExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolConfigEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonRelatedPersonEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/ValidationInfoAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDeleteCommandDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClassGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/6.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AuthTokenEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUser.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserId.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFacetAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/BuildFlags.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonPasskeyAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/EnqueueDrainRemoteWriteQueueUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/MapPagingSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RemoteMediator2.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPermissionGrantEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolConfigSettingDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/composites/PersonListDetails.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/ModelWithTimes.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetPermissionLastModifiedUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasskeyDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasskeyDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/ILangMapEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbLangMapEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ReportAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/IndicatorEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/GetAuthenticatedPersonUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/DelegatedInvalidationPagingSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/ReportQueryResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/AuthTokenProvider.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkValidationInfo.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateEntityDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectRealmDataSourceDb.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSummaryResultRow.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/LangMapEntityExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/DeviceInfo.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepository.kt",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/TestOpdsStorage.kt",
          "lib-datalayer-repository/log/respect-server.log",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasskeyDataSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolConfigEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrBadgeAdapter.kt",
          "lib-xapi-test/build.gradle.kts",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiSessionEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/DatalayerPagingUtil.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDeleteCommand.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolAppEntity.kt",
          "lib-datalayer-repository/README.md",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/IndicatorEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt",
          "lib-datalayer/src/androidMain/AndroidManifest.xml",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/ILangMapEntityAdapter.kt",
          "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "lib-datalayer-http-client/README.md",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSource.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttpClient.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/ext/SchoolDirectoryEntryExt.kt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PullSyncStatusEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/ExtendedDataSourceValidationHelper.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/DoorOffsetLimitRemoteMediator.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectUserDataSource.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/StatusEnum.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ReportDataSourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/InviteStatusEnum.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueDrainRemoteWriteQueueUseCase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/LogPrefixFunction.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/16.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFacetEntity.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/1.json",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/1.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/WriteQueueItemAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectRealmDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonStatusEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasswordDataSourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryDataSourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/EnrollmentRoleEnumExt.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/2.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PagingSourceFactoryHolder.kt",
          "lib-datalayer-http-client/log/respect-server.log",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/entities/NetworkValidationInfoEntity.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/2.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserProfile.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolAppAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/WriteQueueItemEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/MapPagingSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/WriteQueueItemEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AuthToken.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/RepositoryModelDataSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/OrderOption.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/ILangMapEntityExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumSubjectEntityAdapters.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/ListExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryDataSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RemoteMediator2.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/9.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StateIdAndLastModified.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGenderEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttpClient.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityInteractionDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/res/SampleXapiStatement.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/DateConstants.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/headers/directives/DirectivesToMap.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Enrollment.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUser.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AuthTokenEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/pullsync/PullSyncTracker.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserGUIDRef.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumSubjectEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/IntExt.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt",
          "lib-xapi-test/src/androidMain/kotlin/org/openeel/libxapi/test/res/XapiSampleStatements.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttpClient.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/6.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonRoleEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDeleteCommandDao.kt",
          "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueWorker.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttpClient.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/8.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/UuidExt.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/IndicatorDataSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonPasskeyAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/PersonPasskeyEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectSchoolDirectory.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/PermissionFlags.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/15.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedMetadataEntityDao.kt",
          "lib-datalayer-http-client/AGENTS.md",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/ModelWithTimesExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/4.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/SchoolDirectoryEntry.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt",
          "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/WorkerExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntityDao.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsPublicationEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/PagingSourceExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassPermissionEntityDao.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ReportDataSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonRelatedPersonEntityDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsTypeConverters.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/DelegatedInvalidationPagingSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbLangMapEntry.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSource.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/UnauthorizedException.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonGenderEnum.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/IPagingSourceFactory.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/LangMapEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/writequeue/RemoteWriteQueueDbImpl.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryDataSourceDb.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/UuidExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonPasswordEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/BuildFlags.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerParams.kt",
          "lib-dataloadstate/build.gradle.kts",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsGroupAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/LangMapEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/ModelWithTimes.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnum.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolUrlHttpDataSourceExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt",
          "respect-lib-test-resources/src/commonMain/kotlin/world/respect/lib/test/res/SampleXapiStatement.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/4.json",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttpClient.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSource.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttpClient.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGUIDRef.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/composites/PersonListDetails.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttpClient.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt",
          "lib-datalayer-db/AGENTS.md",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiStatementResourceAssertions.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivitiesResourceDb.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonPasswordAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/RemoteWriteQueue.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStatementResourceTest.kt",
          "lib-datalayer-repository/build.gradle.kts",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt",
          "lib-xapi-test/src/jvmMain/kotlin/org/openeel/libxapi/test/res/XapiSampleStatements.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRoleEnum.kt",
          "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/EnqueueDrainRemoteWriteQueueUseCaseAndroidImpl.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRole.kt",
          "lib-datalayer-db/README.md",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/SharedConverters.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/SessionTimeAndProgressInfo.kt",
          "lib-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/index.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsGroupEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DateConstants.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsPublicationEntityDao.kt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryEntryAdapter.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasswordEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/InstantAsTimestampString.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttpClient.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrBadge.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassInvteModeEnum.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Report.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/ListExt.kt",
          "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/DataBuilderExt.kt",
          "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncWorker.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementResourceHttpClientTest.kt",
          "lib-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/lesson001.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetPermissionLastModifiedUseCase.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryAdapter.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/InviteAdapter.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasswordDataSourceHttpClient.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ReportEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentAssigneeRefTypeEnum.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserId.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/7.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiAgentsResourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolApp.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteState.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttpClient.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCaseImpl.kt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/IndicatorEntityDao.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/3.json",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiGroupMemberActorJoin.kt",
          "lib-dataloadstate/.gitignore",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiGroupMemberActorJoinDao.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiTimes.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/InviteEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDataSourceDb.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ReportDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAssignmentResultRow.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt",
          "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/RepoWorkerConstants.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/BaseDataSourceValidationHelper.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRole.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/ILangMapEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentsResourceDb.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerHeaders.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttpClient.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityObjectTypeEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonPasskey.kt",
          "lib-datalayer-repository/src/jvmTest/resources/logback.xml",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/XXHashUidNumberMapper.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntityWithPermissions.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/SystemPermissionDaoCommon.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonPasskeyAdapter.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/composites/ClazzListDetails.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementContextActivityJoinDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/UidNumberMapper.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/RespectAppManifestExt.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttpClient.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsGroupEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/ForbiddenException.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntryPropEnum.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/14.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryEntityDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityExtensionEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpRequestBuilderExt.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/GetPermissionLastModifiedUseCaseDbImpl.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/res/XapiStatementNameConstants.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiEntityObjectTypeFlags.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AuthTokenAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentLearningResourceRefEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueRunPullSyncUseCase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/StateIdAndLastModified.kt",
          "lib-datalayer-http-client/build.gradle.kts",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/shared/paging/OffsetLimitHttpPagingSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntityTypeEnum.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/3.json",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassPermission.kt",
          "lib-datalayer-db/build.gradle.kts",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolAppEntityDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasskeyEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ReportDataSourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/EmptyPagingSourceFactory.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentProgressEntityRow.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonAdapter.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/model/RespectAppManifest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/LoadParamsExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ReportAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryLangMapEntity.kt",
          "lib-datalayer/build.gradle.kts",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/ReportQueryResult.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/GetAuthenticatedPersonUseCase.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumLinkEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClass.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolConfigEntityDao.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json",
          "lib-datalayer/README.md",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/ValidationInfoAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/SchoolPermissionGrantExt.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RepositoryPagingSourceFactory.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/DummySchoolConfigSettingsDataSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolConfigSettingDataSource.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnumExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/daos/NetworkValidationInfoEntityDao.kt",
          "lib-datalayer/.gitignore",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoin.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntityWithRoles.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ReportEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivitiesResourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityLangMapEntryDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrollmentEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterOrgGUIDRef.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonPassword.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedMetadataEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolAppDataSourceDb.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/EnrollmentAdapter.kt",
          "lib-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt",
          "lib-datalayer-repository/AGENTS.md",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementsResourceLocal.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/db/opds/adapters/lesson001.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumLinkEntityDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumSubjectEntity.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsParentType.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolUrlBasedDataSource.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/EnrollmentExt.kt",
          "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasskeyDataSourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/JsonObjectBuilderExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/IndicatorDataSourceDb.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntityPropEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryLangMapEntityDao.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleTypeEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/DataLayerTags.kt",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/AuthTokenProvider.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/11.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadState.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/ExtendedDataSourceValidationHelperImpl.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClassGUIDRef.kt",
          "lib-datalayer/AGENTS.md",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiSerializers.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonAdapters.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSourceLocal.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttpClient.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolConfigSetting.kt",
          "respect-lib-test-resources/src/commonMain/kotlin/world/respect/lib/test/res/XapiStatementNameConstants.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/LastModifiedAndETagDb.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolPermissionGrantAdapter.kt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/group-statement.json",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasskeyDataSourceHttpClient.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/FilterPagingSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterResourceGUIDRef.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/AuthenticatedUserPrincipalId.kt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbLangMapEntryDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeBadgeDataSourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPermissionGrantEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ReportQueryResult.kt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt",
          "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/EnqueueRunPullSyncUseCaseAndroidImpl.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RepositoryOffsetLimitPagingSource2.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Person.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/EmptyPagingSource.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterEnrollment.kt",
          "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/WritableDataSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/LangMapAdapter.kt",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/5.json",
          "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/simple-statement.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFacetAdapter.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentLearningResourceRefEntityDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AuthTokenEntityDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBaseStatusEnum.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActivityExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonRelatedPersonEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonRoleEntityDao.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/InviteEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt"
        ],
        "commitId" : "1fdee8fd227baf98d3e35e3ba67052039ade1c06",
        "timestamp" : 1789231861000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor module names. Work in progress creation of dedicated httpclient test for xapi statement resource.\u000a",
        "date" : "2026-09-12 20:51:01 +0400",
        "id" : "1fdee8fd227baf98d3e35e3ba67052039ade1c06",
        "msg" : "Refactor module names. Work in progress creation of dedicated httpclient test for xapi statement resource.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/LastModifiedAndETagDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementsResourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/AuthenticatedUserPrincipalId.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentAssigneeRefTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrBadge.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityJson.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/7.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RepositoryPagingSourceFactory.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiSessionEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/IndicatorEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentLearningResourceRefEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntityPropEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActorEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterOrgGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementContextActivityJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrollmentEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiTimes.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/TestOpdsStorage.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/log/respect-server.log"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassInvteModeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/daos/NetworkValidationInfoEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerParams.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PullSyncStatusEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActivityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/kotlin/org/openeel/libxapi/test/res/XapiSampleStatements.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonPasswordEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/DatalayerPagingUtil.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ReportQueryResult.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonPasskeyAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/BaseDataSourceValidationHelper.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/index.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/OrderOption.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DateConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/2.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserId.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/LangMapEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/res/SampleXapiStatement.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Report.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasskeyEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/LogPrefixFunction.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolUrlBasedDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/WriteQueueItemEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/pullsync/PullSyncTracker.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/IndicatorEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/shared/paging/OffsetLimitHttpPagingSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterEnrollment.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolConfigEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/14.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryEntryAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/RepoWorkerConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/JsonObjectExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiGroupMemberActorJoinDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrBadgeAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolConfigSetting.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/RemoteWriteQueue.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/xapi/StoreActivitiesUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiStatementExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/InviteEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/SessionTimeAndProgressInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSubstatementAndVerbEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/9.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/WorkerExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/ExtendedDataSourceValidationHelper.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AuthToken.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/db/opds/adapters/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoinTypeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUser.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/commonMain/kotlin/world/respect/lib/test/res/XapiStatementNameConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/PersonPasskeyEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/SchoolPermissionGrantExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/8.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsGroupAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadState.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPermissionGrantEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/RepositoryModelDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/16.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AuthTokenEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueDrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonPassword.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/PagingSourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityExtensionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumSubjectEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasskeyDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/model/RespectAppManifest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/AGENTS.md"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiVerbAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterResourceGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectRealmDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeBadgeDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/XXHashUidNumberMapper.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/AuthTokenProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetPermissionLastModifiedUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGenderEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/JsonObjectBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolPermissionGrantAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/IndicatorDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsGroupEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsGroupEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStatementAndJsonEntities.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryLangMapEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/4.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ReportEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRoleEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/ILangMapEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassPermission.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/SystemPermissionDaoCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/ModelWithTimesExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ReportAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/IPagingSourceFactory.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFacetEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkValidationInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ReportDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RepositoryOffsetLimitPagingSource2.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/ModelWithTimes.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-substatement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/resources/logback.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonPasskeyAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRole.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueRunPullSyncUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/WritableDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/DoorOffsetLimitRemoteMediator.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolAppEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/2.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityLangMapEntryPropEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentsResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/ValidationInfoAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/commonMain/kotlin/world/respect/lib/test/res/SampleXapiStatement.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAssignmentResultRow.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStatementResourceTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/res/XapiStatementNameConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleTypeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbLangMapEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/true-false-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolConfigSettingDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ReportDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/entities/NetworkValidationInfoEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/InviteAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/IntExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiGroupMemberActorJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryLangMapEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/AGENTS.md"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/3.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/EnqueueDrainRemoteWriteQueueUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonGenderEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/11.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/AGENTS.md"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/GetAuthenticatedPersonUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityInteractionDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/EnrollmentExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntityWithPermissions.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsParentType.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/StatusEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonPasswordAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBaseStatusEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/ForbiddenException.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonRoleEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/EmptyPagingSourceFactory.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/appendix-a-long-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolAppDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityInteractionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/StatementEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/UnauthorizedException.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/kotlin/org/openeel/libxapi/test/res/XapiSampleStatements.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StatementEntityAndVerb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AuthTokenAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ReportDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDeleteCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/StateIdAndLastModified.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueWorker.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/DataBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectRealmDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFacetAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/1.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/InviteStatusEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/ListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/1.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/writequeue/RemoteWriteQueueDbImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiSummaryResultRow.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiSessionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/ReportQueryResult.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/ILangMapEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/IndicatorDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/InviteEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonRoleEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiAgentsResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/UuidExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/UidNumberMapper.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassPermissionEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/ListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentLearningResourceRefEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRole.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolApp.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/ActivityInteractionEntityPropEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiVerbLangMapEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonRelatedPersonEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentProgressEntityRow.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolAppAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncWorker.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/DataLayerTags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/DummySchoolConfigSettingsDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonStatusEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/shared/paging/RemoteMediator2.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ReportDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntityObjectTypeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/FilterPagingSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementsResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasswordDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/RespectAppManifestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiStatementResourceAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementResourceHttpClientTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/ExtendedDataSourceValidationHelperImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonPasskey.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/DeviceInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAssignmentResultRowAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PagingSourceFactoryHolder.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserProfile.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/ext/UuidExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/simple-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/WriteQueueItemAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActorEntityTypeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiEntityObjectTypeFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/EnrollmentAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ReportEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/ext/SchoolDirectoryEntryExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivitiesResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasskeyDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/15.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-statementref.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolAppEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/schooldirectory/SchoolDirectoryEntryDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/composites/PersonListDetails.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonPasswordEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsPublicationDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/WriteQueueItemEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/LoadParamsExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/log/respect-server.log"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonAdapters.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementContextActivityJoin.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsPublicationDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/EnrollmentRoleEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpRequestBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/PermissionFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/Readme.txt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/MapPagingSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/composite/xapi/StateIdAndLastModified.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/SchoolDirectoryEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLayerHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolUrlHttpDataSourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDeleteCommandDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/InstantAsTimestampString.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityLangMapEntryPropEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/resources/world/respect/datalayer/school/xapi/model/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolConfigEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/DelegatedInvalidationPagingSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/composites/ClazzListDetails.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/group-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/GetPermissionLastModifiedUseCaseDbImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/DateConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/ext/OpdsPublicationExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivitiesResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasskeyDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/12.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonRelatedPersonEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiSerializers.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityExtensionEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClass.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/headers/directives/DirectivesToMap.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/ListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/4.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/ReadiumSubjectEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStatementObjectAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiVerbEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/jvmMain/resources/world/respect/datalayer/school/xapi/model/multi-choice-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Enrollment.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/5.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonPasswordDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/6.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/3.json"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AuthTokenEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectUserDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/BuildFlags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClassGUIDRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteState.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectSchoolDirectory.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntityWithRoles.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Person.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/EmptyPagingSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/ILangMapEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/EnqueueRunPullSyncUseCaseAndroidImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/ForbiddenException.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/passkey/GetAllActivePasskeysRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/passkey/VerifySignInWithPasskeyRoute.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/UnauthorizedException.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/passkey/VerifySignInWithPasskeyUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/passkey/RevokePasskeyRoute.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/throwable/ExceptionWithHttpStatusCode.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/throwable/ExceptionWithHttpStatusCode.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/throwable/HttpErrorResponseException.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/username/UsernameSuggestionRoute.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementResourceHttpClientTest.kt",
          "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticatePasswordUseCaseDbImpl.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStatementResourceTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/username/UsernameSuggestionUseCaseServer.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/throwable/ForbiddenException.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt",
          "lib-dataloadstate-ktor-server/build.gradle.kts",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/throwable/ForbiddenException.kt",
          "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt",
          "lib-dataloadstate-ktor-server/src/commonMain/kotlin/world/respect/lib/dataloadstate/ktorserver/ApplicationCallExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteInfoRoute.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/username/checkusernameunique/CheckUsernameUniqueRoute.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
        ],
        "commitId" : "a3f4579af9bd67e6a157b1002b3e0b7790f6fb81",
        "timestamp" : 1789234052000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor XapiStatementResourceTest to use a single abstract test for multiple implementations.\u000a",
        "date" : "2026-09-12 21:27:32 +0400",
        "id" : "a3f4579af9bd67e6a157b1002b3e0b7790f6fb81",
        "msg" : "Refactor XapiStatementResourceTest to use a single abstract test for multiple implementations.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/throwable/ExceptionWithHttpStatusCode.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/throwable/HttpErrorResponseException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticatePasswordUseCaseDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/username/UsernameSuggestionRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/passkey/VerifySignInWithPasskeyUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate-ktor-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/passkey/VerifySignInWithPasskeyRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/throwable/ForbiddenException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteInfoRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/UnauthorizedException.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate-ktor-server/src/commonMain/kotlin/world/respect/lib/dataloadstate/ktorserver/ApplicationCallExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/passkey/GetAllActivePasskeysRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/username/checkusernameunique/CheckUsernameUniqueRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/username/UsernameSuggestionUseCaseServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStatementResourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/passkey/RevokePasskeyRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/throwable/ForbiddenException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/ForbiddenException.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementResourceHttpClientTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/throwable/ExceptionWithHttpStatusCode.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-http-client/log/respect-server.log"
        ],
        "commitId" : "a4be79ea8447a78e29d16546cda7a1005fa910da",
        "timestamp" : 1789234392000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove test server log.\u000a",
        "date" : "2026-09-12 21:33:12 +0400",
        "id" : "a4be79ea8447a78e29d16546cda7a1005fa910da",
        "msg" : "Remove test server log.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "lib-datalayer-http-client/log/respect-server.log"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-substatement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement-multiple-responses.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/appendix-a-long-statement.json",
          "lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement-invalid-response.json",
          "lib-datalayer-repository/build.gradle.kts",
          "respect-lib-test-resources/src/androidMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/sequencing-response-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-actor.json",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt",
          "lib-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt",
          "lib-datalayer/build.gradle.kts",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/Readme.txt",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/matching-response-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/group-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/likert-response-statement.json",
          "lib-xapi-ipc-server/build.gradle.kts",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/true-false-response-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/simple-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/performance-response-statement.json",
          "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-statementref.json"
        ],
        "commitId" : "32f939cfb5f2d87aa51b99430ae7022ac672402f",
        "timestamp" : 1789235528000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix compilation/build\u000a",
        "date" : "2026-09-12 21:52:08 +0400",
        "id" : "32f939cfb5f2d87aa51b99430ae7022ac672402f",
        "msg" : "Fix compilation/build",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-xapi-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/likert-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/matching-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/simple-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-substatement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/kotlin/world/respect/lib/test/res/XapiSampleStatements.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/true-false-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/appendix-a-long-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/performance-response-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-actor.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/statement-with-object-statementref.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/sequencing-response-statement.json"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/jvmTest/kotlin/world/respect/datalayer/school/xapi/model/XapiStatementSerializationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/group-statement.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-test-resources/src/androidMain/assets/xapistatements/Readme.txt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-test/src/androidMain/assets/xapistatements/statement-with-object-statementref.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/multi-choice-statement-multiple-responses.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/true-false-response-statement.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/simple-statement.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/matching-response-statement.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/multi-choice-statement-invalid-response.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/sequencing-response-statement.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/appendix-a-long-statement.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/Readme.txt",
          "lib-xapi-test/src/androidMain/assets/xapistatements/statement-with-object-substatement.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/group-statement.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/likert-response-statement.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/performance-response-statement.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/multi-choice-statement.json",
          "lib-xapi-test/src/androidMain/assets/xapistatements/statement-with-object-actor.json"
        ],
        "commitId" : "d562f7340895f9011ec5a6583f99ef71189ba4ce",
        "timestamp" : 1789235780000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix compilation/build\u000a",
        "date" : "2026-09-12 21:56:20 +0400",
        "id" : "d562f7340895f9011ec5a6583f99ef71189ba4ce",
        "msg" : "Fix compilation/build",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/statement-with-object-actor.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/likert-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/sequencing-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/Readme.txt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/multi-choice-statement-multiple-responses.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/multi-choice-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/appendix-a-long-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/simple-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/statement-with-object-statementref.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/group-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/performance-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/true-false-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/matching-response-statement.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/multi-choice-statement-invalid-response.json"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/androidMain/assets/xapistatements/statement-with-object-substatement.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiActivityProfileRoute.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonExt.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/datetime/GMTDateExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocumentByteArrayImpl.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiActivityProfileResourceAssertions.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/ext/HttpResponseExt.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentResourceExt.kt",
          "lib-datalayer/README.md",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/datetime/InstantExt.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/ext/HttpRequestBuilderExt.kt",
          "lib-dataloadstate/src/commonTest/kotlin/world/respect/lib/dataloadstate/datetime/NowInEpochSecondsTest.kt",
          "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiActivityProfileResourceRoute.kt",
          "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/ext/ApplicationCallExt.kt",
          "lib-datalayer-http-client/AGENTS.md"
        ],
        "commitId" : "0dcf23d2e6eacfaaa14a4952afd985449f3dbcc2",
        "timestamp" : 1789303701000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Use GMTDate for xAPI document timestamps and refactor activity profile HTTP routes\u000a\u000aRefactor to using a shared AbstractXapiActivityProfileTest that tests both the database and http client/server implementation.\u000a",
        "date" : "2026-09-13 16:48:21 +0400",
        "id" : "0dcf23d2e6eacfaaa14a4952afd985449f3dbcc2",
        "msg" : "Use GMTDate for xAPI document timestamps and refactor activity profile HTTP routes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActivityProfileDocumentAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/AGENTS.md"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/datetime/InstantExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/datetime/GMTDateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/xapi/XapiActivityProfileRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/ext/HttpResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonTest/kotlin/world/respect/lib/dataloadstate/datetime/NowInEpochSecondsTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentResourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocumentByteArrayImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/ext/HttpRequestBuilderExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/JsonExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiActivityProfileResourceRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/ext/ApplicationCallExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiActivityProfileResourceAssertions.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".gitignore"
        ],
        "commitId" : "fa76edcd0b7c47438331555e261a2542817047a5",
        "timestamp" : 1789303752000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update gitignore to ignore logs generated by unit tests running in modules.\u000a",
        "date" : "2026-09-13 16:49:12 +0400",
        "id" : "fa76edcd0b7c47438331555e261a2542817047a5",
        "msg" : "Update gitignore to ignore logs generated by unit tests running in modules.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".gitignore"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementResourceHttpClientTest.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStatementResourceTest.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/WithEmbeddedDataSourceServer.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/NewLocalDataSource.kt"
        ],
        "commitId" : "d454d5fe47aad4d78094d63af5e0f11e4d5ebb62",
        "timestamp" : 1789314120000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add embedded data source server helper and refactor xAPI HTTP client tests\u000a",
        "date" : "2026-09-13 19:42:00 +0400",
        "id" : "d454d5fe47aad4d78094d63af5e0f11e4d5ebb62",
        "msg" : "Add embedded data source server helper and refactor xAPI HTTP client tests",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementResourceHttpClientTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStatementResourceTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/WithEmbeddedDataSourceServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/NewLocalDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/WithEmbeddedDataSourceServer.kt"
        ],
        "commitId" : "05b241602e4a58a0ccdc1e00ac60e42f58996499",
        "timestamp" : 1789314234000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove extra time logging in WithEmbeddedDataSourceServer.kt\u000a",
        "date" : "2026-09-13 19:43:54 +0400",
        "id" : "05b241602e4a58a0ccdc1e00ac60e42f58996499",
        "msg" : "Remove extra time logging in WithEmbeddedDataSourceServer.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/WithEmbeddedDataSourceServer.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".github/ISSUE_TEMPLATE/add_app_to_default_catalog.MD"
        ],
        "commitId" : "258efbc61c11e29cd50493ce504f1bf34fe6d55c",
        "timestamp" : 1789382805000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Clarify app manifest URL requirements in issue template\u000a\u000aUpdated the template to clarify the requirement for the launchable app manifest URL and corrected the reference to the integration guide.\u000a",
        "date" : "2026-09-14 14:46:45 +0400",
        "id" : "258efbc61c11e29cd50493ce504f1bf34fe6d55c",
        "msg" : "Clarify app manifest URL requirements in issue template",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".github/ISSUE_TEMPLATE/add_app_to_default_catalog.MD"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ETagAndLastModifiedAsStrings.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ETagAndLastModified.kt",
          "lib-dataloadstate-ktor-server/src/commonMain/kotlin/world/respect/lib/dataloadstate/ktorserver/ApplicationCallExt.kt",
          "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiActivityProfileResourceRoute.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/HeadersExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt"
        ],
        "commitId" : "e424bad5d6cc8e45475203496f0e3a00e3757134",
        "timestamp" : 1789464579000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add conditional if-modified-since GET support for xAPI activity profile resources\u000a",
        "date" : "2026-09-15 13:29:39 +0400",
        "id" : "e424bad5d6cc8e45475203496f0e3a00e3757134",
        "msg" : "Add conditional if-modified-since GET support for xAPI activity profile resources",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ETagAndLastModifiedAsStrings.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiActivityProfileResourceRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ETagAndLastModified.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate-ktor-server/src/commonMain/kotlin/world/respect/lib/dataloadstate/ktorserver/ApplicationCallExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiDocument.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/HeadersExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/16.json",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiActivityProfileResourceAssertions.kt",
          "lib-dataloadstate-ktor-server/src/commonMain/kotlin/world/respect/lib/dataloadstate/ktorserver/ApplicationCallExt.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/HeadersExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentShaEntity.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiActivityProfileDocumentAndShaEntities.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentShaDao.kt"
        ],
        "commitId" : "c1c136ac127a8991dc153daf8689c73e7f199b2a",
        "timestamp" : 1789476714000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Support ETag validation and SHA-1 caching for xAPI activity profile documents.\u000a",
        "date" : "2026-09-15 16:51:54 +0400",
        "id" : "c1c136ac127a8991dc153daf8689c73e7f199b2a",
        "msg" : "Support ETag validation and SHA-1 caching for xAPI activity profile documents.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/HeadersExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentShaDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiActivityProfileResourceAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate-ktor-server/src/commonMain/kotlin/world/respect/lib/dataloadstate/ktorserver/ApplicationCallExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/16.json"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentShaEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiActivityProfileDocumentAndShaEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiAgentsResourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivitiesResourceLocal.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/WithEmbeddedDataSourceServer.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/XapiRemoteWriteQueue.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/util/FileExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/EnqueueDrainXapiRemoteWriteQueueUseCase.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/WithEmbeddedDataSourceServer.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiActivityProfileResourceLocal.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiStatementsResourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentsResourceDb.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementsResourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/WithEmbeddedServerAndRepoClients.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiResourceLocal.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/XapiRemoteWriteQueueItem.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivitiesResourceDb.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementResourceHttpClientTest.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiActivitiesResourceLocal.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiAgentsResourceLocal.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/EnqueueDrainRemoteWriteQueueUseCaseChannel.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueXapiUseCase.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
        ],
        "commitId" : "afab3fd1f76c527cfce39689a35b0a7e57c91405",
        "timestamp" : 1789557692000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add XAPI remote write queue interfaces and move local xAPI resource interfaces to lib-xapi-core\u000a",
        "date" : "2026-09-16 15:21:32 +0400",
        "id" : "afab3fd1f76c527cfce39689a35b0a7e57c91405",
        "msg" : "Add XAPI remote write queue interfaces and move local xAPI resource interfaces to lib-xapi-core",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiStatementsResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiStatementsResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStatementResourceHttpClientTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/WithEmbeddedServerAndRepoClients.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueXapiUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/EnqueueDrainRemoteWriteQueueUseCaseChannel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/WithEmbeddedDataSourceServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/XapiRemoteWriteQueue.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentsResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/EnqueueDrainXapiRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivitiesResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiActivitiesResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiAgentsResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiAgentsResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiResourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiActivityProfileResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/WithEmbeddedDataSourceServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/XapiRemoteWriteQueueItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/XapiResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/StringValuesExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/util/FileExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiActivityProfileResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivitiesResourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/writequeue/XapiRemoteWriteQueueDbImpl.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/EnqueueDrainXapiRemoteWriteQueueUseCase.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiActivityProfileResourceAssertions.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiRemoteWriteQueueItemEntity.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/WithEmbeddedServerAndRepoClients.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/XapiRemoteWriteQueueItem.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiRemoteWriteQueueItemEntityDao.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiRemoteWriteQueueItemAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentExt.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueXapiUseCase.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/ext/DataLoadParamsExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
        ],
        "commitId" : "d013c6b8ed231d55e0cfc53a31ce94cc93ce98c4",
        "timestamp" : 1789575164000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement XapiRemoteWriteQueue database storage and repository integration\u000a",
        "date" : "2026-09-16 20:12:44 +0400",
        "id" : "d013c6b8ed231d55e0cfc53a31ce94cc93ce98c4",
        "msg" : "Implement XapiRemoteWriteQueue database storage and repository integration",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/writequeue/XapiRemoteWriteQueueDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiActivityProfileResourceAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiRemoteWriteQueueItemEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiRemoteWriteQueueItemEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/EnqueueDrainXapiRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/ext/DataLoadParamsExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueXapiUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/XapiRemoteWriteQueueItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiRemoteWriteQueueItemAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/WithEmbeddedServerAndRepoClients.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolTypeConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/16.json",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/WithEmbeddedServerAndRepoClients.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
        ],
        "commitId" : "2d04d961dc60a83d4dfc89c007f2c065af919f93",
        "timestamp" : 1789577713000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update XapiStatementRepositoryIntegrationTest to use embedded server and repo clients\u000a",
        "date" : "2026-09-16 20:55:13 +0400",
        "id" : "2d04d961dc60a83d4dfc89c007f2c065af919f93",
        "msg" : "Update XapiStatementRepositoryIntegrationTest to use embedded server and repo clients",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/16.json"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/WithEmbeddedServerAndRepoClients.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt"
        ],
        "commitId" : "660d9c447d17a594d894a0ae82299feb2c23cbf7",
        "timestamp" : 1789579142000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial working implementation of XapiActivityProfileResourceRepository.\u000a",
        "date" : "2026-09-16 21:19:02 +0400",
        "id" : "660d9c447d17a594d894a0ae82299feb2c23cbf7",
        "msg" : "Initial working implementation of XapiActivityProfileResourceRepository.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainXapiRemoteWriteQueueWorker.kt",
          "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/EnqueueDrainXapiRemoteWriteQueueUseCaseAndroidImpl.kt"
        ],
        "commitId" : "0260997a7fbac331cc4f6cc797ecbe6425bee694",
        "timestamp" : 1789631928000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add Android worker and Koin bindings for draining xAPI remote write queue\u000a",
        "date" : "2026-09-17 11:58:48 +0400",
        "id" : "0260997a7fbac331cc4f6cc797ecbe6425bee694",
        "msg" : "Add Android worker and Koin bindings for draining xAPI remote write queue",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/EnqueueDrainXapiRemoteWriteQueueUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainXapiRemoteWriteQueueWorker.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/README.md",
          "app-android/README.md",
          "README.md"
        ],
        "commitId" : "c139595ee01b99703afe3d056b9330ddd58d35ce",
        "timestamp" : 1789634063000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update readme references that used to point to respect-app-compose to point to app-android.\u000a",
        "date" : "2026-09-17 12:34:23 +0400",
        "id" : "c139595ee01b99703afe3d056b9330ddd58d35ce",
        "msg" : "Update readme references that used to point to respect-app-compose to point to app-android.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/README.md"
          },
          {
            "editType" : "edit",
            "file" : "app-android/README.md"
          },
          {
            "editType" : "edit",
            "file" : "README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/doc/run-config-settings.png",
          "app-android/doc/app-config-dropdown.png",
          "respect-app-compose/doc/run-config-settings.png",
          "respect-app-compose/doc/app-config-dropdown.png"
        ],
        "commitId" : "d7108c8ff014fd19318491a409268e87e8f53357",
        "timestamp" : 1789634242000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move Android Studio screenshots to app-android\u000a",
        "date" : "2026-09-17 12:37:22 +0400",
        "id" : "d7108c8ff014fd19318491a409268e87e8f53357",
        "msg" : "Move Android Studio screenshots to app-android",
        "paths" : [
          {
            "editType" : "add",
            "file" : "app-android/doc/app-config-dropdown.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/doc/run-config-settings.png"
          },
          {
            "editType" : "add",
            "file" : "app-android/doc/run-config-settings.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/doc/app-config-dropdown.png"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/doc/run-config-settings.png",
          "app-android/doc/app-config-dropdown.png"
        ],
        "commitId" : "ef9c679b3c4763267422ff4acb4c9eb6eca06d25",
        "timestamp" : 1789635473000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update screenshots\u000a",
        "date" : "2026-09-17 12:57:53 +0400",
        "id" : "ef9c679b3c4763267422ff4acb4c9eb6eca06d25",
        "msg" : "Update screenshots",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app-android/doc/app-config-dropdown.png"
          },
          {
            "editType" : "edit",
            "file" : "app-android/doc/run-config-settings.png"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/doc/run-config-settings.png",
          "app-android/doc/app-config-dropdown.png"
        ],
        "commitId" : "a684966bdd27dc61aed963dc8972d3340a2163cb",
        "timestamp" : 1789635567000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update screenshots\u000a",
        "date" : "2026-09-17 12:59:27 +0400",
        "id" : "a684966bdd27dc61aed963dc8972d3340a2163cb",
        "msg" : "Update screenshots",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app-android/doc/app-config-dropdown.png"
          },
          {
            "editType" : "edit",
            "file" : "app-android/doc/run-config-settings.png"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-core/README_OPDS_COLLECTIONS_ACTIVITY_PROFILE.md",
          "lib-xapi-core/README_COLLECTIONS_LISTING_RECIPE.md"
        ],
        "commitId" : "b5cba62c8accf3ddaac5a46d65ddac1acaa25b7c",
        "timestamp" : 1789636894000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add profile id doc for storing and retrieving an OPDS collection.\u000aAdd recipe for pinning collections.\u000a",
        "date" : "2026-09-17 13:21:34 +0400",
        "id" : "b5cba62c8accf3ddaac5a46d65ddac1acaa25b7c",
        "msg" : "Add profile id doc for storing and retrieving an OPDS collection.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README_COLLECTIONS_LISTING_RECIPE.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/README_OPDS_COLLECTIONS_ACTIVITY_PROFILE.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt",
          "respect-lib-cache/src/jvmTest/resources/publication/lesson001/lesson001.json",
          "app-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js",
          "respect-server/src/main/kotlin/world/respect/server/util/SchoolUrlVerificationManager.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryMode.kt",
          "respect-lib-ihttp-okhttp/.gitignore",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt",
          "respect-app-compose/src/androidMain/res/values/tags.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectBasicAlertDialog.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getdeviceinfo/GetDeviceInfoUseCaseAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/MutableStateExt.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCase.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/RequestExt.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/tincan.xml",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/otheroption/OtherOptionsScreen.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCaseAndroid.kt",
          "lib-shared/src/commonMain/composeResources/drawable/ic_google_play_badge.png",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RememberCountryFlagEmoji.kt",
          "app-server/src/main/kotlin/world/respect/server/logging/LogbackAntilog.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/StringBuilderExt.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/ext/FileExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/IHttpResponse.kt",
          "respect-app-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetActivePersonPasskeysUseCaseClient.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiTextGetString.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePathsProvider.kt",
          "respect-lib-cache/.gitignore",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidateLinkUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/UstadCacheLogger.kt",
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/17.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/LangMapExt.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessChecker.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/DownloadJobItemDao.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCaseWorker.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/OfflineStorageOption.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/RespectSchoolJsonRoute.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelperExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/UstadCacheDbExt.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddSchoolDirectoryCallback.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/NapierLoggingAdapter.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/EncodeUserHandleUseCaseImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/ReportViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/setpassword/EncryptPersonPasswordUseCase.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/CacheResponse.kt",
          "respect-credentials/src/main/AndroidManifest.xml",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMap.kt",
          "lib-appui-compose/src/androidMain/res/drawable/digital_library.png",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/DemoStringMaps.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/JsonObjectExt.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreProgressListener.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/CreatePublicKeyCredentialCreationOptionsJsonUseCase.kt",
          "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasswordRoute.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/SchoolDirectoryEntryScopeId.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/EnrollmentRoute.kt",
          "respect-lib-serializers/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/onboarding/ShouldShowOnboardingUseCase.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/partial/ContentRangeTest.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/URLProtocolExt.kt",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/InstantISO8601Serializer.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadAbstractWebViewClient.kt",
          "respect-server/src/main/resources/application.conf",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/script.js",
          "lib-opds-model/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ClearNeighborsCallback.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/RespectAccountExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NewCacheEntryDao.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithTextBody.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityChecker.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentStatusFilter.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemCommonExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/AbstractCacheInterceptorTest.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/passkeylist/PasskeyListViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePacket.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/StringExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMapping.kt",
          "lib-credentials/proguard-rules.pro",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HeaderOverrideHttpResponse.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetAndroidSdCardDirUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/AlternativeLangLinks.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCase.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/CoroutineWorkerExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/howpasskeywork/HowPasskeyWorksViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/CouponHeader.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchShareLinkAndroid.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getlaunchoptionsforpublication/GetLaunchOptionsForPublicationUseCase.kt",
          "app-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLearningUnitRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/InputStreamExt.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/ContentRange.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt",
          "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/ByteArrayExt.kt",
          "lib-cache/README.md",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntries.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          "app-server/src/main/resources/demoapp/learning_unit_xapi.js",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/effects/NavControllerLogEffect.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/exception/ExceptionWithUiText.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NextAfterScan.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getdeviceinfo/DeviceInfoExt.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheEntryDao.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/filterusername/FilterUsernameUseCase.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationResponseJSON.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPersonAvatar.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/DatabaseExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/RangeRequestNotSatisfiableException.kt",
          "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/HttpRequestOkHttpAdapter.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectPasskeySignInFasterCard.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/RunReportResultAndFormatters.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/directives/DirectivesToMap.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLinkProperties.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNeighborDiscoveryListener.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCaseAndroidImpl.kt",
          "lib-cache/src/jvmTest/resources/testfile1.png",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/schooldirectory/edit/SchoolDirectoryEditScreen.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectDateField.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/usagereporting/SetUsageReportingEnabledUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/username/checkusernameunique/CheckUsernameUniqueRoute.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/FileMimeTypeHelperImpl.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/JsonObjectExt.kt",
          "lib-appui-compose/src/androidMain/res/values/asset_statements.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPhoneNumberTextField.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetActivePersonPasskeysUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectFilterChipsHeader.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/DefaultCacheCompressionFilter.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/schooldirectory/edit/SchoolDirectoryEditScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesFromPropertiesUseCase.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialParameters.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/EnrollmentRoleEnumExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalTimeField.kt",
          "respect-server/src/main/resources/demoapp/xapi_module.js",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheConstants.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/qrcode/InviteQrScreen.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/OkCallExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt",
          "lib-cache/src/jvmTest/resources/childrens-literature.epub",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/ClassRoute.kt",
          "respect-app-compose/src/androidMain/res/drawable/data_reporting.png",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RetentionLockDao.kt",
          "respect-app-compose/src/androidMain/res/xml/backup_rules.xml",
          "lib-ihttp-core/README.md",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeader.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/SchoolDataSourceLocalProvider.kt",
          "respect-lib-cache/src/jvmTest/resources/testfile2.png",
          "lib-shared/build.gradle.kts",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/icon.png",
          "lib-appui-compose/src/androidMain/res/xml/data_extraction_rules.xml",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/LoadingUiState.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheEntryToStore.kt",
          "lib-cache/build.gradle.kts",
          "lib-shared/src/commonMain/composeResources/values/lang_names.xml",
          "respect-lib-shared/src/commonTest/resources/invalid-catalog.json",
          "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/PrimaryKeyGenerator.kt",
          "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.desktop.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/AppUiStateExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/onboarding/OnboardingViewModel.kt",
          "README.md",
          "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/LocalDateOrDateTime.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/usagereporting/SetUsageReportingEnabledUseCaseAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterinvitecode/EnterInviteCodeViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/tincan.xml",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadAbstractWebViewClient.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ChannelExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryExtraHeadersDao.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumberAndroid.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RequestedEntryDao.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMapExt.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/ReadiumLinkExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/usagereporting/GetUsageReportingEnabledUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateField.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/MockRunReportUseCaseClientImpl.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorMessage.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImplTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiTextGetString.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/LoadAaguidJsonUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/OpenEelIntent.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedTime.android.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt",
          "lib-datalayer-repository/build.gradle.kts",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCase.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/app/components/BasicWebView.android.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/directory/RespectDirectoryServersConfig.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/devmode/SetDevModeEnabledUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicense.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCase.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/PinnedPublication.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/RequestExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ext/ReportQueryResultExt.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/OpenExternalLinkUseCaseAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCase.kt",
          "respect-lib-cache/src/jvmTest/resources/publication/lesson001/video.mp4",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/video.mp4",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/SingleItemToListTransformerSerializer.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/graph/CombinedGraph.kt",
          "respect-app-compose/src/androidMain/res/values/themes.xml",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheTrimmer.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarSearchUiState.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/usagereporting/GetUsageReportingEnabledUseCaseAndroid.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPagingItems.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/signup/SignupCredential.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeadersImpl.kt",
          "lib-opds-model/src/jvmTest/resources/lesson001.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterinvitecode/EnterInviteCodeViewModel.kt",
          "respect-server/well-known/assetlinks.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ListAndPrintlnValidatorReporter.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/DecodeUserHandleUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/FilterChipsOption.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CachedResponseStatus.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/AccountDepComponent.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt",
          "lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/NullOutputStream.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/index.html",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ExceptionExtensions.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolLinkRoute.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadJobItemStatusUpdater.kt",
          "respect-credentials/proguard-rules.pro",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCaseAndroid.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HeadersBuilderExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RespectRedeemInviteRequest.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonRoleEnumExt.kt",
          "app-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSession.kt",
          "app-server/src/main/kotlin/world/respect/server/demoapp/DemoConstants.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthProcessor.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/StatementDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDb.kt",
          "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarSearchUiState.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNeighborDiscoveryListener.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/UstadCacheLogger.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onaccountcreated/NavigateOnAccountCreatedUseCase.kt",
          "lib-appui-compose/src/androidMain/res/xml/backup_rules.xml",
          "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/EncodeUserHandleUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/E2EArtifactUploadActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/InstantAsISO8601Extensions.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ChannelExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/respectappmanifest/model/RespectSite.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/MakeSchoolPathDirUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/validateusername/ValidateUsernameUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/onboarding/OnboardingScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/RespectSchoolPath.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectOfflineItemStatusIcon.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitor.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/RevokePasskeyUseCaseClient.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/passkey/RevokePasskeyRoute.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSection.kt",
          "lib-cache/src/jvmTest/resources/publication/lesson001/lesson001.json",
          "lib-credentials/build.gradle.kts",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumber.kt",
          "lib-credentials/.gitignore",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/AddNewEntryTriggerCallback.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppActionButton.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadJobItemStatusUpdater.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectLazyItems.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DurationGraphFormatter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSection.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/ModifierExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/AddBookmarkUseCase.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/AuthRoute.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/devmode/GetDevModeEnabledUseCase.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityChecker.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeaderListExt.kt",
          "lib-ihttp-core/build.gradle.kts",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/StringResourceExt.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/CreatePublicKeyCredentialRequestOptionsJsonUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectSortHeader.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentNameCell.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitor.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/index.html",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/CreatePublicKeyCredentialRequestOptionsJsonUseCase.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt",
          "lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdResponseAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicenseList.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectCredential.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/CacheResponse.kt",
          "respect-app-compose/src/commonMain/kotlin/theme/Theme.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/DevModeClickable.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/ClientDataJSON.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLink.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/OkHttpRequestAdapter.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IAsYouTypeFormatter.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/onboarding/OnboardingViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/ext/DemoAppUrlExt.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/AbstractEnqueuePinPublicationPrepareUseCase.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectCredential.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectTokenManager.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/usagereporting/GetUsageReportingEnabledUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/UsernameSuggestionUseCase.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/downloader/DownloadIntegrationTest.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/util/StringExt.android.kt",
          "respect-lib-primarykeygen/src/androidMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.android.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/AlternativeLangLinks.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt",
          "lib-appui-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/SortOrderOption.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseClient.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListItem.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/unit.json",
          "app-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/DevModeClickable.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/otheroption/OtherOptionsScreen.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/account/passkey/LoadAaguidJsonUseCaseAndroid.kt",
          "lib-ihttp-okhttp/src/commonMain/AndroidManifest.xml",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderImpl.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/RedeemInviteRoute.kt",
          "lib-cache/src/jvmTest/resources/publication/lesson001/video.mp4",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImpl.kt",
          "lib-ihttp-nanohttpd/.gitignore",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5Digest.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticatorAssertionResponseJSON.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearch.kt",
          "lib-appui-compose/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/integrity/Sha256Integrity.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geticonforxapiactivity/GetPublicationForXapiActivityUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSession.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/ic_google_play_badge.png",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.android.kt",
          "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/InstantAsISO8601Extensions.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/DbTypeConverters.kt",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringOrObjectSerializer.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolValidationRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/OnClickPhoneNumUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/RevokePasskeyUseCase.kt",
          "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/OkHttpRequestAdapter.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CachedResponseStatus.kt",
          "app-server/src/dist/systemd/respect-server.service",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectQuickActionButton.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/password/SavePasswordUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidImpl.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/passkey/VerifySignInWithPasskeyRoute.kt",
          "respect-lib-ihttp-iostreams/.gitignore",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "lib-shared/src/commonMain/composeResources/drawable/fingerprint.png",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetAndroidSdCardDirUseCase.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelperExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/LongExtCommon.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCase.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.android.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/RememberDayOrDate.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.desktop.kt",
          "respect-lib-ihttp-iostreams/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RequestedEntryDao.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/authenticatepassword/AuthenticateQrBadgeUseCase.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberDateTimeFormat.android.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumContributorObject.kt",
          "respect-app-compose/src/commonMain/kotlin/theme/Color.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/fingerprint.png",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.android.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StringExt.kt",
          "lib-appui-compose/src/jvmMain/resources/sample-feed.json",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/IHttpHeadersAsOkHttpHeadersAdapter.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheEntryToStore.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialRpEntity.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CountGraphFormatter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberDateTimeFormat.kt",
          "app-server/well-known/assetlinks.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/DurationExt.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheConstants.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeadersExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/detail/IndicatorDetailViewModel.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/DecodeUserHandleUseCaseImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/composites/NeighborCacheEntryAndNeighborCache.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/UrlParser.kt",
          "lib-cache/src/androidMain/AndroidManifest.xml",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationExtensionsPRFOutputsJSON.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/MakeSchoolPathDirUseCaseAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt",
          "lib-ihttp-nanohttpd/build.gradle.kts",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturnerImpl.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/SortOrderOptionExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/UriStringSerializer.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/lesson001/lesson001.html",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationResponseExt.kt",
          "app-cli/src/main/java/world/respect/clitools/RespectCLI.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/app.html",
          "respect-server/src/main/kotlin/world/respect/server/routes/username/checkusernameunique/CheckUsernameUniqueRoute.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectLongVersionInfoItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createlink/CreateInviteLinkUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/ext/AppStateIconExtensions.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsBelongsTo.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/clipboard/SetClipboardStringUseCase.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryExtraHeaders.kt",
          "lib-shared/AGENTS.md",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/SnackBarDispatcher.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/StringBuilderExt.kt",
          "respect-server/src/main/resources/demoapp/credits.txt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/copycode/CopyInviteCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/StringResourceExt.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePacket.kt",
          "respect-lib-ihttp-core/README.md",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/changepassword/ChangePasswordScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/LicenseLabelEntry.kt",
          "respect-app-compose/src/androidMain/res/drawable/spix_logo.webp",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashCacheEntry.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LocalAppLocale.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/ByteArrayResponse.kt",
          "respect-app-compose/src/androidMain/res/drawable/ic_launcher.xml",
          "app-server/src/main/resources/http/respect-ds/native_demo/index.json",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthProcessor.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/audio.ogg",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppStateIcon.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/InviteExt.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.html",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithTextBody.kt",
          "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.desktop.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RememberAppVersionInfo.kt",
          "app-server/src/main/kotlin/world/respect/server/util/ext/ParametersExt.kt",
          "app-server/well-known/terms.html",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ByteArrayExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/detail/ReportDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/PublicationListItem.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/MockRunReportUseCaseClientImpl.kt",
          "lib-appui-compose/src/androidMain/res/drawable/baseline_close_24.xml",
          "respect-app-compose/src/androidMain/res/xml/data_extraction_rules.xml",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/DownloadJobItemDao.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/FabUiState.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/E2EArtifactUploadActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/DemoStringMaps.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCaseJvm.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolAppRoute.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/passkey/GetAllActivePasskeysRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/DownloadJobItem.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/icon.png",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RememberAppVersionInfo.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/EnqueueActivityContextJobUseCase.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedDate.android.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCase.kt",
          "lib-shared/src/commonMain/composeResources/drawable/empty.png",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateauth/ValidateAuthorizationUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumContributorObject.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GraphFormatter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/StringExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/RespectAccountScopeId.kt",
          "app-android/build.gradle.kts",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/clipboard/SetClipboardStringUseCaseAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/usagereporting/SetUsageReportingEnabledUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDateField.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialRequestOptionsJSON.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/LoadAaguidJsonUseCase.kt",
          "respect-server/src/main/resources/http/respect-ds/native_demo/appmanifest.json",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/downloader/DownloadIntegrationTest.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/VerifyDomainUseCase.kt",
          "respect-cli/build.gradle.kts",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFacet.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/AuthResponse.kt",
          "respect-lib-ihttp-okhttp/proguard-rules.pro",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/copycode/CopyInviteCodeViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/username/UsernameSuggestionRoute.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCase.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/lang_names.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectGenderExposedDropDownMenuField.kt",
          "lib-dataloadstate-ktor-server/build.gradle.kts",
          "lib-ihttp-core/src/jsMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.js.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/OpenExternalLinkUseCaseAndroid.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCase.kt",
          "respect-app-compose/src/androidMain/res/drawable/ic_launcher_background.xml",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePong.kt",
          "lib-appui-compose/src/androidMain/res/layout/activity_web_view.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/SchoolDataSourceLocalProvider.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCase.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/GetPasskeyProviderInfoUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deferreddeeplink/GetDeferredDeepLinkUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/RemoveBookmarkUseCase.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/VerifyDomainUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/LongExtCommon.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/ByteArrayResponse.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationResponseJSON.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt",
          "respect-app-compose/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "lib-appui-compose/src/androidMain/res/drawable/data_reporting.png",
          "app-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectShortVersionInfoText.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/icon.png",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js",
          "respect-lib-ihttp-okhttp/consumer-rules.pro",
          "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/IHttpHeadersAsOkHttpHeadersAdapter.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectUserHandle.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseAndroidChannelHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/filterusername/FilterUsernameUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/CustomDeepLinkToUrlUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt",
          "lib-opds-model/src/jvmTest/kotlin/world/respect/lib/opds/model/OpdsSerializerTest.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ClearNeighborsCallback.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCaseAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/ReportViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentListScreenFilter.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/waitingforapproval/WaitingForApprovalScreen.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentNameCell.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/ext/IntExt.kt",
          "app-server/src/main/resources/http/respect-ds/manifestlist.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/RespectAccountScopeId.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/DurationExt.kt",
          "respect-app-compose/src/androidMain/res/values/asset_statements.xml",
          "respect-lib-opds-model/src/jvmTest/resources/lesson001.json",
          "app-server/src/main/kotlin/world/respect/server/routes/e2etestartifactsroute/E2ETestArtifactsRoute.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolDbPath.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSectionLink.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetPasskeyProviderInfoUseCaseImpl.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseDatabaseImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ActionBarButtonUiState.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/copycode.png",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/DateFormatterExt.kt",
          "app-server/src/main/resources/http/respect-ds/native_demo/Lesson-manifest.json",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasskeyRoute.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitHtmlUseCase.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePing.kt",
          "respect-lib-cache/README.md",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/PhoneNumberVisualTransformation.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ClazzExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetActivePersonPasskeysUseCaseClient.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/LangMapTextField.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectPhoneNumberTextField.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCase.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteInfoRoute.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/LifeCycleOwnerDistributedCacheInit.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/StatementDetailScreen.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/launchable-app.json",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasskeyRoute.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/icon.png",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsGroup.kt",
          "lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdRequestAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLinkProperties.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GraphFormatter.kt",
          "app-cli/.gitignore",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/IHeaderExt.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.desktop.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/qrcode/PersonQrBadgeRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/XapiLaunchParams.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithByteBody.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/DayOfWeekExt.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialRpEntity.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validateemail/ValidateEmailUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/verify/VerifySchoolUrlPointsToThisServerUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/ByteArrayResponse.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumValidatorAndroid.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/ExpandableFab.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/passkey/GetAllActivePasskeysRoute.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/BasicWebView.android.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/passkey/VerifySignInWithPasskeyRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/theme/CommonColor.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/devmode/SetDevModeEnabledUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt",
          "respect-lib-shared/src/commonTest/resources/opds-io-home.json",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessChecker.kt",
          "lib-opds-model/README_LAUNCHABLE_APP.md",
          "respect-lib-ihttp-okhttp/src/commonMain/AndroidManifest.xml",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateField.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/StringResponse.kt",
          "lib-dataloadstate/build.gradle.kts",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCaseClient.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js",
          "lib-appui-compose/src/androidMain/res/xml/file_paths.xml",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ResourcesDispatcher.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/effects/NavControllerLogEffect.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/15.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/qrcode/InviteQrViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorReporter.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/clipboard/SetClipboardStringUseCase.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPrice.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntries.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtilExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/FabUiState.kt",
          "lib-shared/src/commonMain/composeResources/drawable/compose-multiplatform.xml",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/password/SavePasswordUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectShortVersionInfoText.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntriesTest.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/otheroptionsignup/OtherOptionsSignupScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/SortOrderOption.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCase.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/StringExt.kt",
          "app-server/src/main/kotlin/world/respect/server/util/ext/ApplicationResponseExt.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/CoroutineWorkerExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NavCommandExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/ModifierExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/MapExt.kt",
          "respect-lib-opds-model/README.md",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectPersonAvatar.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturner.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsAcquisition.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/BaseHttpRequest.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/cover.png",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/AuthRoute.kt",
          "lib-datalayer-db/README.md",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolJsonRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/exception/ExceptionWithUiText.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/validator/HttpClientExt.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/directory/RespectDirectoryServersConfig.kt",
          "lib-appui-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png",
          "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/OkHttpHeadersAdapter.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendSmsAndroid.kt",
          "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeedMetadata.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/DecodeUserHandleUseCaseImpl.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublication.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReportExtensions.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedTime.android.kt",
          "respect-app-compose/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/UrlNormalizeForNoVarySearch.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt",
          "respect-lib-shared-se/README.md",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/DownloadJob.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/TransferJobItemStatus.kt",
          "app-server/src/main/resources/application.conf",
          "respect-server/src/main/resources/http/respect-ds/case_valid/index.json",
          "app-server/src/main/resources/demoapp/index.html",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImplTest.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RouteWithResultDest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesFromPropertiesUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/Platform.kt",
          "app-server/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseValidityChecker.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/URLProtocolExt.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCaseAndroid.kt",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringListSerializer.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/RevokePasskeyUseCase.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NewCacheEntryDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/AuthResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/StringResponse.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJob.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif",
          "respect-lib-ihttp-nanohttpd/.gitignore",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/LearningUnitSelection.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/RememberDayOrDate.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-serializers/README.md",
          "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/NullOutputStream.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeadersImpl.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateauth/ValidateAuthorizationUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/OfflineStorageOption.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiResourceProviderAndroid.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialCreationOptionsJSON.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectBottomSheetOption.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ByteBufferExt.kt",
          "lib-shared-se/build.gradle.kts",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/AppUiStateExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/OutputStreamExt.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonRoute.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelper.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/password/SavePasswordUseCaseAndroidImpl.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/IHttpResponse.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/XXStringHasherExt.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectOfflineItemStatusIcon.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/audio.ogg",
          "respect-app-compose/src/androidMain/res/values/strings.xml",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/otheroptionsignup/OtherOptionsSignupScreen.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheStorageCompressionFilter.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryMode.kt",
          "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdRequestAdapter.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getfavicons/GetFavIconUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "lib-appui-compose/src/androidMain/res/menu/menu_webview.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AvatarColorForName.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/RespectAccountExt.kt",
          "respect-app-compose/src/androidMain/res/menu/menu_webview.xml",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/Greeting.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/setpassword/EncryptPersonPasswordUseCaseImpl.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtilExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImplTest.kt",
          "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCase.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/enrollment/list/EnrollmentListScreen.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/index.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/OkHttpResponseAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarColors.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeedMetadata.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/launchable-app.json",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/DistributedCacheInterceptor.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/howpasskeywork/HowPasskeyWorksScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtil.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/ReadiumLinkExt.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCaseAndroid.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/CreateAccountSetPasswordScreen.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLinkPropertiesEncrypted.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/AppIcon.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NapierLogInit.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/bookmark/BookmarkListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCaseClient.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageSettingUseCase.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/PinnedPublication.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLink.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemExt.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicenseList.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/schooldirectory/list/SchoolDirectoryListScreen.kt",
          "lib-appui-compose/src/androidMain/res/drawable/respect_logo.webp",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseClient.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/clipboard/SetClipboardStringUseCaseAndroid.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/CacheEntryExt.kt",
          "lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/ext/InstantExt.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/RangeInputStream.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/app/AppIcon.desktop.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeader.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublication.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt",
          "app-server/src/main/kotlin/world/respect/server/account/invite/username/checkusernameunique/CheckUsernameUniqueUseCaseServer.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/date/ParseHttpDate.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageSettingUseCase.kt",
          "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/SingleItemToListTransformerSerializer.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/SchoolDirectoryEntryScopeId.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailHeaderCell.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getwarnings/GetWarningsUseCase.kt",
          "lib-primarykeygen/src/jvmTest/kotlin/world/respect/lib/primarykeygen/DoorPrimaryKeyGeneratorTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GenderGraphFormatter.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/respectaccount/list/RespectAccountListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectQrBadgeInfoBox.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/DateFormatterExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ResourcesDispatcher.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/SourceExt.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/OnClickPhoneNumberUseCaseAndroid.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getwarnings/GetWarningsUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getfavicons/GetFavIconUseCase.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLinkPropertiesEncrypted.kt",
          "respect-lib-shared/src/commonMain/resources/directories/default.properties",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/VerifyDomainUseCaseImpl.kt",
          "respect-lib-primarykeygen/src/jvmTest/kotlin/world/respect/lib/primarykeygen/DoorPrimaryKeyGeneratorTest.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCacheWhatWithIdAndPayload.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationExtensionsClientOutputsJSON.kt",
          "lib-datalayer/AGENTS.md",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialDescriptorJSON.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/DurationAsISO8601Serializer.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CompressionType.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/edit/ReportEditScreen.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/replace.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/BaseHttpRequest.kt",
          "respect-credentials/.gitignore",
          "respect-server/src/main/resources/demoapp/locales/fr-FR.json",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/detail/ReportDetailScreen.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/ClassRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.kt",
          "app-server/src/main/kotlin/world/respect/server/demoapp/ext/DemoAppUrlExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/CurriculumMappingAdapter.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/verify/VerifySchoolUrlPointsToThisServerUseCase.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/KtorIHeadersAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/icon.webp",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectBottomSheetOption.kt",
          "respect-server/well-known/terms.html",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCase.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialDescriptorJSON.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt",
          "respect-app-compose/src/androidMain/res/drawable/works_offline.png",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/composites/NeighborCacheEntryAndNeighborCache.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonGenderEnumExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/enrollments/UpdateClazzStudentXapiGroupUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getwarnings/GetWarningsUseCaseAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/changepassword/ChangePasswordScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/filteredit/ReportFilterEditViewModel.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheTrimmer.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/TransferJobItemStatus.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json",
          "lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/PrimaryKeyGenerator.kt",
          "app-server/src/main/kotlin/world/respect/server/SchoolConfig.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetPasskeyProviderInfoUseCaseImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/DownloadJobItem.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deferreddeeplink/GetDeferredDeepLinkUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturner.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/undraw_qr_code_scan_bewe.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCaseClient.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseValidityChecker.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/Validator.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StringExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDataLoadHost.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/Platform.android.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/LaunchDebouncer.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtilAndroid.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddServerManagedDirectoryCallback.kt",
          "lib-cache/src/jvmTest/resources/ustadmobile-epub.js",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/OnClickPhoneNumUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/UsernameSuggestionUseCase.kt",
          "respect-lib-cache/src/jvmTest/resources/publication/lesson001/cover.png",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validateemail/ValidateEmailUseCase.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaders.kt",
          "lib-appui-compose/src/androidMain/res/drawable/ic_launcher.xml",
          "lib-opds-model/README.md",
          "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesMigration.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseProcessor.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IAsYouTypeFormatter.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticatorAssertionResponseJSON.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/CouponHeader.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/setpassword/EncryptPersonPasswordUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/MakeSchoolPathDirUseCaseAndroid.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarColors.kt",
          "lib-appui-compose/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml",
          "respect-lib-ihttp-iostreams/README.md",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/PersonQrBadgeRoute.kt",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsFeedExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/ext/AppStateIconExtensions.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCase.kt",
          "lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/15.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/passkeylist/PasskeyListViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseClient.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/SnackBarDispatcherUseCaseExt.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePathsProvider.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/StatementDetailScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "app-server/src/main/resources/http/respect-ds/index.html",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/replace.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/XapiLaunchParams.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePing.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/FileAssert.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReportExtensions.kt",
          "lib-cache/.gitignore",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/RouteWithResultDestExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RespectRedeemInviteRequest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt",
          "app-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deferreddeeplink/GetDeferredDeepLinkUseCaseAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-server/src/main/kotlin/world/respect/server/SchoolConfig.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorJvm.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/toPerson.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialParameters.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumberAndroid.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/devmode/GetDevModeEnabledUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/AccountDepComponent.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/DownloadJob.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "lib-cache/src/jvmTest/resources/testfile2.png",
          "lib-appui-compose/src/commonMain/kotlin/theme/CommonColor.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ListAndPrintlnValidatorReporter.kt",
          "respect-app-compose/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/RunReportResultAndFormatters.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/util/StringExt.kt",
          "lib-appui-compose/src/androidMain/res/values/themes.xml",
          "respect-app-compose/src/jvmMain/resources/sample-feed.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateTimeField.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectFilterChipsHeader.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/enterinvitecode/EnterInviteCodeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt",
          "lib-appui-compose/src/androidMain/res/drawable/assignments.png",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MergedHeaders.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCase.kt",
          "lib-credentials/src/main/AndroidManifest.xml",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/EnrollmentRoleEnumExt.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html",
          "respect-app-compose/src/androidMain/res/xml/file_paths.xml",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/IAsYouTypeFormatterAdapterAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ActionBarButtonUiState.kt",
          "respect-server/src/main/resources/http/respect-ds/native_demo/Lesson-manifest.json",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/AddChildAccountRoute.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheStorageCompressionFilter.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithFormUrlEncodedData.kt",
          "respect-app-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/username/UsernameSuggestionUseCaseServer.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/CreateAccountSetPasswordScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/RespectSchoolPath.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberDateTimeFormat.android.kt",
          "app-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectQuickActionButton.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/RawStatementScreen.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/ValidatedEntry.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/AppConfigExt.kt",
          "respect-lib-shared/src/commonMain/resources/about-credits-common.html",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturnerImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/ContentRange.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectSortOptionsBottomSheet.kt",
          "lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createclass/CreateClassUseCase.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapTextField.kt",
          "lib-ihttp-okhttp/consumer-rules.pro",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/Snack.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/util/StringExt.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCaseWorker.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RememberCountryFlagEmoji.kt",
          "respect-lib-cache/src/jvmTest/resources/testfile1.png",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCaseAndroid.kt",
          "respect-app-compose/src/androidMain/res/values-night/themes.xml",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/edit/ReportEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/ExpandableFab.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreResult.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectBasicAlertDialog.kt",
          "lib-datalayer-http-client/AGENTS.md",
          "respect-app-compose/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCaseImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/RangeRequestNotSatisfiableException.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/RequestCacheControlHeader.kt",
          "respect-app-compose/src/androidMain/res/values-v23/themes.xml",
          "lib-cache/src/jvmTest/resources/publication/lesson001/cover.png",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/HttpRequestOkHttpAdapter.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumSubject.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PasskeyVerifyResult.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/passkey/RevokePasskeyRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectEmptyListComponent.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/FileAssert.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/OkHttpResponseAdapter.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ConcurrentSafeMapOf.kt",
          "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getlaunchoptionsforpublication/GetLaunchOptionsForPublicationUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/AddBookmarkUseCase.kt",
          "lib-shared/src/commonMain/resources/about-credits-common.html",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/StringResponse.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/openexternallink/OpenExternalLinkUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/StringExt.android.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderNormalizeForNoVarySearch.kt",
          "lib-shared-se/README.md",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImplTest.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/VerifyPasskeyUseCase.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/EncodeUserHandleUseCase.kt",
          "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolAppRoute.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif",
          "app-server/src/main/kotlin/world/respect/server/util/SchoolUrlVerificationManager.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/integrity/Sha256Integrity.kt",
          "lib-shared/src/commonTest/resources/invalid-catalog.json",
          "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringValue.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectGenderExposedDropDownMenuField.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/KClassStringSerializer.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/CacheEntryExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ParametersExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearch.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/DecodeUserHandleUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/SortOrderOptionExt.kt",
          "respect-server/src/main/resources/demoapp/grade.jpg",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountSchoolScopeLink.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderExt.kt",
          "app-server/src/main/resources/http/respect-ds/base.json",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/DbTypeConverters.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getlanguageendonym/GetLanguageEndonymUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLongVersionInfoItem.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumMetadata.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePaths.kt",
          "lib-ihttp-core/.gitignore",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/validator/HttpClientExt.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/UrlBuilderApplyNoVarySearchTest.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html",
          "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/LocalAppLocale.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ByteArrayExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsFeedExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/RangeInputStream.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCase.kt",
          "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorJvm.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorReporter.kt",
          "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/InstantISO8601Serializer.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseAndroidImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HeaderOverrideHttpResponse.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestJvm.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturnerExt.kt",
          "app-server/src/main/kotlin/world/respect/server/account/invite/CreateInviteUseCaseServer.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PasskeyVerifyResult.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSectionLink.kt",
          "app-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerAppMain.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppTags.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/MakeSchoolPathDirUseCase.kt",
          "lib-datalayer-db/AGENTS.md",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/app/AppIcon.desktop.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendSmsAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/Platform.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadStatusUpdate.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HeadersExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolDbPath.kt",
          "app-server/src/main/resources/demoapp/locales/fr-FR.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppActionButton.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialRequestOptionsJSON.kt",
          "respect-lib-opds-model/build.gradle.kts",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/LaunchDebouncer.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolValidationRoute.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNsdAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/Platform.android.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCaseClient.kt",
          "lib-cache/src/jvmTest/resources/publication/lesson001/lesson001.html",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonGenderEnumExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/authenticatepassword/AuthenticateQrBadgeUseCase.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/CustomDeepLinkToUrlUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-primarykeygen/build.gradle.kts",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiResourceProviderAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCaseClient.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationExtensionsClientOutputsJSON.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt",
          "lib-primarykeygen/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/BasicWebView.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/compose-multiplatform.xml",
          "app-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/OkHttpHeadersAdapter.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/AddNewEntryTriggerCallback.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/onboarding/OnboardingScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/openexternallink/OpenExternalLinkUseCase.kt",
          "respect-lib-ihttp-core/src/jvmMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.jvm.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/IAsYouTypeFormatterAdapterAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getlanguageendonym/GetLanguageEndonymUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationRequestExt.kt",
          "respect-app-compose/src/androidMain/res/drawable/digital_library.png",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLearningUnitRoute.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/launchable-app.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberDateTimeFormat.kt",
          "respect-server/src/main/resources/demoapp/locales/en-US.json",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.android.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountSchoolScopeLink.kt",
          "lib-appui-compose/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt",
          "respect-server/build.gradle.kts",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeaderListExt.kt",
          "app-server/src/main/resources/demoapp/credits.txt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/createaccount/CreateAccountScreen.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/NapierLoggingAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/Greeting.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/DownloadJobDao.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCase.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/script.js",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt",
          "lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/ByteArrayExt.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolLinkRoute.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/ClientDataJSON.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectPasswordField.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryExtraHeadersDao.kt",
          "respect-app-compose/README.md",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoConstants.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt",
          "respect-lib-ihttp-core/src/jsMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.js.kt",
          "respect-server/src/main/resources/demoapp/app_icon.png",
          "app-server/src/main/resources/http/respect-ds/case_valid/index.json",
          "respect-lib-ihttp-core/.gitignore",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/copycode/CopyInviteCodeScreen.kt",
          "app-server/src/main/kotlin/world/respect/server/util/ext/ApplicationRequestExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClassPendingPersonListItem.kt",
          "lib-ihttp-okhttp/build.gradle.kts",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/UrlParser.kt",
          "app-server/README.md",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/UriStringSerializer.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/StringExt.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/icon.webp",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectSortOptionsBottomSheet.kt",
          "respect-lib-opds-model/README_LAUNCHABLE_APP.md",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMapExt.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearchTest.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailHeaderCell.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/CachePathsProviderAndroid.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearchTest.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AaguidProviderInfo.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectRememberPager.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLazyItems.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/LearningUnitSelection.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MappedHttpHeaders.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt",
          "lib-serializers/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringValue.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/index.html",
          "app-server/src/main/resources/demoapp/books.png",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/UrlToCustomDeepLinkUseCase.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/DefaultCacheCompressionFilter.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/StringExt.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/EnqueueRunDownloadJobUseCaseAndroid.kt",
          "lib-datalayer-http-client/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RouteWithResultDest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "lib-datalayer-db/build.gradle.kts",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/images/RespectImage.desktop.kt",
          "lib-appui-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCaseAndroid.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/CachePathsProviderAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedDate.kt",
          "lib-ihttp-okhttp/.gitignore",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJob.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt",
          "app-server/src/main/resources/demoapp/xapi_module.js",
          "lib-appui-compose/README.md",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCaseWorker.kt",
          "respect-lib-cache/src/androidMain/AndroidManifest.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsSeries.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt",
          "app-server/src/main/resources/demoapp/locales/en-US.json",
          "respect-lib-opds-model/src/jvmTest/kotlin/world/respect/lib/opds/model/OpdsSerializerTest.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheDao.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/authenticatepassword/AuthenticatePasswordUseCase.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/ByteArrayResponse.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/password/SavePasswordUseCaseAndroidImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ext/ReportQueryResultExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumValidatorUseCase.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntriesTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt",
          "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringListSerializer.kt",
          "lib-datalayer/README.md",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createlink/CreateInviteLinkUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/RouteWithResultDestExt.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicense.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/signup/SignupCredential.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/BasicWebView.desktop.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/icon.png",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt",
          "lib-appui-compose/src/androidMain/res/drawable/spix_logo.webp",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectEmptyListComponent.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/RequestBuilder.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtilAndroid.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LaunchNoVarySearchConstants.kt",
          "respect-lib-ihttp-nanohttpd/build.gradle.kts",
          "lib-datalayer-repository/AGENTS.md",
          "lib-appui-compose/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt",
          "app-server/src/main/resources/http/respect-ds/native_demo/appmanifest.json",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/LogTags.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/no_bookmark.xml",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt",
          "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdResponseAdapter.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiText.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/RemoveBookmarkUseCase.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getdeviceinfo/GetDeviceInfoUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/UrlNormalizeForNoVarySearch.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/video.mp4",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/Snack.kt",
          "respect-lib-cache/src/jvmTest/resources/publication/lesson001/script.js",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCaseAndroid.kt",
          "respect-server/src/dist/systemd/respect-server.service",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/LocalDateOrDateTime.kt",
          "respect-server/src/main/kotlin/world/respect/server/logging/LogbackAntilog.kt",
          "respect-server/src/main/resources/http/respect-ds/native_demo/index.json",
          "respect-lib-ihttp-core/build.gradle.kts",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/io/RangeInputStreamTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/username/checkusernameunique/CheckUsernameUniqueUseCaseServer.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/PinnedPublicationDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheDao.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt",
          "respect-lib-shared/AGENTS.md",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/partial/ContentRangeTest.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/LifeCycleOwnerDistributedCacheInit.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ConcurrentSafeMapOf.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/list/IndicatorListScreen.kt",
          "respect-server/src/main/resources/http/respect-ds/chimple.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/detail/IndicatorDetailViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ExpandableFabUiState.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashCacheEntry.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/AbstractEnqueuePinPublicationPrepareUseCase.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequest.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/OpenEelIntent.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendSmsUseCase.kt",
          "lib-shared/src/commonMain/composeResources/drawable/feedback_sent.xml",
          "ci-run-test-server.sh",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/howpasskeywork/HowPasskeyWorksViewModel.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/FileMimeTypeHelperImpl.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitHtmlUseCase.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json",
          "respect-lib-cache/src/jvmTest/resources/publication/lesson001/lesson001.html",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LaunchNoVarySearchConstants.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/HttpLinkHeader.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumMetadata.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequest.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsGroup.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReadiumLinkExt.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationExtensionsPRFOutputsJSON.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/SubmitRedeemInviteRequestUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/authenticatepassword/AuthenticatePasswordUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaders.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsAcquisition.kt",
          "app-server/src/main/resources/demoapp/app_icon.png",
          "respect-server/src/main/resources/http/respect-ds/base.json",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/validateusername/ValidateUsernameUseCase.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthJob.kt",
          "lib-ihttp-iostreams/README.md",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/list/CurriculumMappingListScreen.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadDbDiscoveryListener.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/ValidatedEntry.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCaseAndroid.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/util/ext/FileExt.kt",
          "respect-server/src/main/resources/logback.xml",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMap.kt",
          "app-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectDetailField.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/VerifyDomainUseCaseImpl.kt",
          "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/ext/InstantExt.kt",
          "lib-cache/src/jvmTest/resources/publication/lesson001/script.js",
          "lib-shared/src/commonMain/composeResources/drawable/no_bookmark.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/UsernameSuggestionUseCaseClient.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialUserEntityJSON.kt",
          "respect-app-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCaseProcessor.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/HttpLinkHeader.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getdeviceinfo/DeviceInfoExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/StringResponse.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalTimeField.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectQrBadgeInfoBox.kt",
          "lib-primarykeygen/src/androidMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.android.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchShareLinkAndroid.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt",
          "lib-shared/src/androidMain/assets/aaguid.json",
          "lib-ihttp-core/src/androidMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.android.kt",
          "lib-appui-compose/src/androidMain/res/values-night/themes.xml",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCaseAndroid.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePaths.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.kt",
          "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringOrObjectSerializer.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "lib-appui-compose/src/androidMain/res/values/tags.xml",
          "respect-app-compose/src/androidMain/res/drawable/assignments.png",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/icon.png",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchShareLinkUseCase.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json",
          "respect-lib-cache/src/jvmTest/resources/childrens-literature.epub",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/UrlToCustomDeepLinkUseCase.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectUserHandle.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/UsernameSuggestionUseCaseClient.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/StatementDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/waitingforapproval/WaitingForApprovalScreen.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.android.kt",
          "lib-ihttp-iostreams/.gitignore",
          "lib-appui-compose/src/commonMain/kotlin/theme/Theme.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/CommonSortOptions.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasswordRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendSmsUseCase.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/DatabaseExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getdeviceinfo/GetDeviceInfoUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/RawStatementScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DurationGraphFormatter.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/DownloadJobDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/MutableStateExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validatepassword/ValidatePasswordUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/BasicWebView.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/SnackBarFlowDispatcher.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/account/passkey/LoadAaguidJsonUseCaseAndroid.kt",
          "lib-ihttp-iostreams/build.gradle.kts",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCaseWorker.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDetailField.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/toPerson.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/callback/AddSchoolDirectoryCallback.kt",
          "app-server/.gitignore",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/VerifyPasskeyUseCase.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/filteredit/ReportFilterEditScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetActivePersonPasskeysUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/SignupScreenModeEnum.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/app.html",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/OkCallExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpResponseExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/LoadingUiState.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorMessage.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validatepassword/ValidatePasswordUseCase.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/StringExt.kt",
          "respect-lib-ihttp-core/src/androidMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.android.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/onboarding/ShouldShowOnboardingUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/PublicationListItem.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticatorSelectionCriteria.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReadiumLinkExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.android.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/XXStringHasherExt.kt",
          "respect-lib-shared/src/androidMain/assets/aaguid.json",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectTokenManager.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonRoleEnumExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/UrlBuilderApplyNoVarySearchTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResult.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt",
          "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt",
          "lib-appui-compose/src/androidMain/res/drawable/works_offline.png",
          "respect-server/.gitignore",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RetentionLockDao.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseAndroidChannelHost.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCaseImpl.kt",
          "respect-lib-ihttp-okhttp/build.gradle.kts",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedTime.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/AddChildAccountRoute.kt",
          "lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticatePasswordUseCaseDbImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseClientImpl.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onappstart/NavigateOnAppStartUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/EnqueueActivityContextJobUseCase.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/MapExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/e2etestartifactsroute/E2ETestArtifactsRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCase.kt",
          "lib-shared/src/commonMain/composeResources/drawable/copycode.png",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ByteBufferExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFacet.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MapHttpHeadersAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidateLinkUseCase.kt",
          "lib-appui-compose/src/androidMain/res/drawable/ic_launcher_background.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/SignupScreenModeEnum.kt",
          "respect-lib-cache/src/jvmTest/resources/ustadmobile-epub.js",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/KClassStringSerializer.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJobProcessor.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "lib-shared/src/commonMain/composeResources/drawable/undraw_qr_code_scan_bewe.xml",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/directives/DirectivesToMap.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCaseImpl.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchShareLinkUseCase.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/enterpasswordsignup/EnterPasswordSignUpScreen.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/date/ParseHttpDate.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialCreationOptionsJSON.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/username/UsernameSuggestionRoute.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onaccountcreated/NavigateOnAccountCreatedUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/LangMapExt.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadDbDiscoveryListener.kt",
          "app-server/src/main/resources/http/respect-ds/chimple.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DateGraphFormatter.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/add/AddServerManagedDirectoryCallback.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NextAfterScan.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolPrimaryKeyGenerator.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/usagereporting/GetUsageReportingEnabledUseCase.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/PhoneNumberVisualTransformation.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/CountryCodeTransformation.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/respectappmanifest/model/RespectSite.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/default-catalog.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedDate.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolPrimaryKeyGenerator.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseClientImpl.kt",
          "gradle.properties",
          "respect-lib-shared-se/build.gradle.kts",
          "lib-appui-compose/src/jvmMain/kotlin/world/respect/images/RespectImage.desktop.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/PinnedPublicationDao.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppIcon.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlDirectivesUtil.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/list/CurriculumMappingListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedTime.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getwarnings/GetWarningsUseCase.kt",
          "app-cli/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadStatusUpdate.kt",
          "lib-http-ipc-server/build.gradle.kts",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/Validator.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MapHttpHeadersAdapter.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ClazzExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPasskeySignInFasterCard.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onappstart/NavigateOnAppStartUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryCodeToFlagEmoji.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CommonSortOptions.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseClient.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/Lesson-manifest.json",
          "respect-server/src/main/resources/demoapp/learning_unit_xapi.js",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/EnrollmentRoute.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/CreatePublicKeyCredentialCreationOptionsJsonUseCase.kt",
          "app-server/src/main/resources/logback.xml",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/copycode/CopyInviteCodeViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/SnackBarDispatcherUseCaseExt.kt",
          "lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/17.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/StringExt.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HeadersBuilderExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/list/CurriculumMappingListViewModel.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseAndroidImpl.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseCacheabilityCheckerExt.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/empty.png",
          "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/DurationAsISO8601Serializer.kt",
          "respect-app-compose/src/androidMain/res/raw/license_label_json",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/EnqueueRunDownloadJobUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadProgressUpdate.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/RequestBuilder.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt",
          "lib-appui-compose/src/commonMain/kotlin/theme/Color.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DateGraphFormatter.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-server/src/main/resources/demoapp/books.png",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHeadersBuilder.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeadersExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt",
          "app-server/src/main/kotlin/world/respect/server/account/invite/username/UsernameSuggestionUseCaseServer.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GenderGraphFormatter.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonListDetailsExt.kt",
          "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticatePasswordUseCaseDbImpl.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/ext/IntExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCase.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithFormUrlEncodedData.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonListDetailsExt.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCaseAndroidImpl.kt",
          "app-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCaseAndroid.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/KtorIHeadersAdapter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCase.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/SourceExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deferreddeeplink/GetDeferredDeepLinkUseCase.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsSeries.kt",
          "lib-cache/src/jvmTest/resources/publication/lesson001/audio.ogg",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/OutputStreamExt.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml",
          "app-server/src/main/resources/http/respect-ds/case_valid/Lesson-manifest.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-server/README.md",
          "app-server/src/main/resources/http/respect-ds/native_demo/Lesson",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheControlHeader.kt",
          "app-server/src/main/kotlin/world/respect/server/AppConfigExt.kt",
          "lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt",
          "respect-cli/src/main/java/world/respect/clitools/RespectCLI.kt",
          "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/enterpasswordsignup/EnterPasswordSignUpScreen.kt",
          "lib-appui-compose/src/jvmMain/kotlin/world/respect/main.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticatorSelectionCriteria.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumSubject.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/default-catalog.json",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/DistributedCacheInterceptor.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt",
          "lib-appui-compose/build.gradle.kts",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MappedHttpHeaders.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumValidatorUseCase.kt",
          "lib-appui-compose/src/androidMain/res/values-v23/themes.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geticonforxapiactivity/GetPublicationForXapiActivityUseCase.kt",
          "app-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePong.kt",
          "respect-server/src/main/resources/http/respect-ds/manifestlist.json",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppTags.kt",
          "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPrice.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/list/IndicatorListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/createaccount/CreateAccountScreen.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadProgressUpdate.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/list/CurriculumMappingListScreen.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MergedHeaders.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtil.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCaseImpl.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNsdAndroid.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJobProcessor.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseDatabaseImpl.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/enterinvitecode/EnterInviteCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCase.kt",
          "app-server/src/main/kotlin/world/respect/server/util/ext/ExceptionExtensions.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentStatusFilter.kt",
          "respect-cli/.gitignore",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheControlHeader.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedDate.android.kt",
          "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsBelongsTo.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppStateIcon.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.desktop.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/io/RangeInputStreamTest.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCase.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/usagereporting/SetUsageReportingEnabledUseCaseAndroid.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderNormalizeForNoVarySearch.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/UstadCacheDbExt.kt",
          "lib-appui-compose/src/androidMain/res/raw/license_label_json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/SubmitRedeemInviteRequestUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResult.kt",
          "lib-ihttp-okhttp/proguard-rules.pro",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteInfoRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/EncodeUserHandleUseCaseImpl.kt",
          "respect-lib-cache/src/jvmTest/resources/publication/lesson001/audio.ogg",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AaguidProviderInfo.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemCommonExt.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCaseAndroid.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/filteredit/ReportFilterEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/graph/CombinedGraph.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCase.kt",
          "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestJvm.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlDirectivesUtil.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NavCommandExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt",
          "respect-app-compose/src/androidMain/res/drawable/respect_logo.webp",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/RedeemInviteRoute.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/InviteExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithByteBody.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/OnClickPhoneNumberUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentListScreenFilter.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelper.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPasswordField.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCaseAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/AvatarColorForName.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectPagingItems.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/EnqueueRunDownloadJobUseCase.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CompressionType.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/CreateInviteUseCaseServer.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/StringExt.kt",
          "app-server/src/main/resources/demoapp/grade.jpg",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpResponseExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NapierLogInit.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/feedback_sent.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/howpasskeywork/HowPasskeyWorksScreen.kt",
          "lib-shared/src/commonTest/resources/opds-io-home.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumber.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCase.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateTimeField.kt",
          "lib-primarykeygen/src/jvmMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.jvm.kt",
          "lib-datalayer/build.gradle.kts",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HeadersExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialUserEntityJSON.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/LicenseLabelEntry.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/CountryCodeTransformation.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createclass/CreateClassUseCase.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCase.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/FilterChipsOption.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/LogTags.kt",
          "respect-server/src/main/resources/demoapp/index.html",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreProgressListener.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCaseClient.kt",
          "lib-ihttp-core/src/jvmMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.jvm.kt",
          "respect-lib-primarykeygen/src/jvmMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.jvm.kt",
          "respect-app-compose/src/jvmMain/kotlin/world/respect/main.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/DayOfWeekExt.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/qrcode/InviteQrScreen.kt",
          "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/AbstractCacheInterceptorTest.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/setpassword/EncryptPersonPasswordUseCaseImpl.kt",
          "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/components/BasicWebView.desktop.kt",
          "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumValidatorAndroid.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClassPendingPersonListItem.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseProcessor.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseCacheabilityCheckerExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/respectaccount/list/RespectAccountListViewModel.kt",
          "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.desktop.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/SnackBarFlowDispatcher.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/SnackBarDispatcher.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryCodeToFlagEmoji.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ExpandableFabUiState.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/unit.json",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesMigration.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5Digest.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthJob.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/InputStreamExt.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/RevokePasskeyUseCaseClient.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiText.kt",
          "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/GetPasskeyProviderInfoUseCase.kt",
          "app-server/src/main/kotlin/world/respect/server/ServerAppMain.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/enrollments/UpdateClazzStudentXapiGroupUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMapping.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/bookmark/BookmarkListScreen.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/EnqueueRunDownloadJobUseCaseAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/qrcode/InviteQrViewModel.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImpl.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonRoute.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCase.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-credentials/build.gradle.kts",
          "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCaseProcessor.kt",
          "respect-server/src/main/resources/http/respect-ds/native_demo/Lesson",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt",
          "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreResult.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturnerExt.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/schooldirectory/list/SchoolDirectoryListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/IHeaderExt.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/filteredit/ReportFilterEditViewModel.kt",
          "respect-lib-cache/build.gradle.kts",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/launchable-app.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectDataLoadHost.kt",
          "lib-appui-compose/src/androidMain/res/values/strings.xml",
          "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryExtraHeaders.kt",
          "lib-shared/src/commonMain/resources/directories/default.properties",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/CurriculumMappingAdapter.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCacheWhatWithIdAndPayload.kt",
          "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCaseJvm.kt",
          "respect-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png",
          "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHeadersBuilder.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getdeviceinfo/GetDeviceInfoUseCaseAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt",
          "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt",
          "app-android/README.md",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectRememberPager.kt",
          "respect-app-compose/src/androidMain/res/drawable/baseline_close_24.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectSortHeader.kt",
          "lib-serializers/README.md",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/RequestCacheControlHeader.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CountGraphFormatter.kt"
        ],
        "commitId" : "dbe60749389bc418284e0690884eee431ca51bd9",
        "timestamp" : 1789646998000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update module naming convention.\u000a",
        "date" : "2026-09-17 16:09:58 +0400",
        "id" : "dbe60749389bc418284e0690884eee431ca51bd9",
        "msg" : "Update module naming convention.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/demoapp/grade.jpg"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectEmptyListComponent.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationResponseJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/setpassword/EncryptPersonPasswordUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/ContentRange.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithTextBody.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NextAfterScan.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/RevokePasskeyUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/signup/SignupCredential.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/AppConfigExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/BaseHttpRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlDirectivesUtil.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HeadersBuilderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/passkey/RevokePasskeyRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RetentionLockDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/theme/CommonColor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/changepassword/ChangePasswordScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPasskeySignInFasterCard.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/usagereporting/GetUsageReportingEnabledUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/components/BasicWebView.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLinkPropertiesEncrypted.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/LocalDateOrDateTime.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GraphFormatter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialUserEntityJSON.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/howpasskeywork/HowPasskeyWorksViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MergedHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialCreationOptionsJSON.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCaseWorker.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/CustomDeepLinkToUrlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/UstadCacheLogger.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/demoapp/index.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterinvitecode/EnterInviteCodeViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHeadersBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/InputStreamExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/ext/DemoAppUrlExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/ValidatedEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ClearNeighborsCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPrice.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/manifestlist.json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectPasswordField.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/filteredit/ReportFilterEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "app-cli/src/main/java/world/respect/clitools/RespectCLI.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/FabUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getdeviceinfo/GetDeviceInfoUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/icon.png"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/otheroption/OtherOptionsScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/OkCallExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectEmptyListComponent.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelperExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumber.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonRoleEnumExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/well-known/terms.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/setpassword/EncryptPersonPasswordUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/CreateInviteUseCaseServer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadJobItemStatusUpdater.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createlink/CreateInviteLinkUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/EnqueueRunDownloadJobUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/InstantISO8601Serializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/add/AddServerManagedDirectoryCallback.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/password/SavePasswordUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageSettingUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/PublicationListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/layout/activity_web_view.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NapierLogInit.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/createaccount/CreateAccountScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CompressionType.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsSeries.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePong.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/usagereporting/SetUsageReportingEnabledUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/RespectSchoolJsonRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/icon.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/icon.webp"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/RunReportResultAndFormatters.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/RespectAccountExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/DateFormatterExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/KtorIHeadersAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/XapiLaunchParams.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/LocalAppLocale.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelper.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadAbstractWebViewClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/AuthRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RememberAppVersionInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ExceptionExtensions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/StringBuilderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/app/AppIcon.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCaseWorker.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/account/passkey/LoadAaguidJsonUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/TransferJobItemStatus.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/demoapp/DemoConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedTime.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheConstants.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5Digest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearch.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticatePasswordUseCaseDbImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/SchoolDataSourceLocalProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/FabUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJobProcessor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/AppUiStateExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/DbTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublication.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectQrBadgeInfoBox.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/demoapp/xapi_module.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiResourceProviderAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/AccountDepComponent.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geticonforxapiactivity/GetPublicationForXapiActivityUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/account/invite/CreateInviteUseCaseServer.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/17.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/EnqueueActivityContextJobUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMapExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPhoneNumberTextField.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectShortVersionInfoText.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtilExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deferreddeeplink/GetDeferredDeepLinkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/RedeemInviteRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/ext/AppStateIconExtensions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/drawable/ic_launcher.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/values-v23/themes.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/authenticatepassword/AuthenticateQrBadgeUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/NullOutputStream.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MergedHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/icon.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/consumer-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorReporter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/OutputStreamExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/util/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/downloader/DownloadIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/copycode/CopyInviteCodeViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/proguard-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/index.html"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/consumer-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/filteredit/ReportFilterEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/Validator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/ext/AppStateIconExtensions.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/demoapp/locales/en-US.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/launchable-app.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ConcurrentSafeMapOf.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePacket.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/RevokePasskeyUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/DownloadJobDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseAndroidChannelHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NavCommandExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumberAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImplTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetPasskeyProviderInfoUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberDateTimeFormat.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/values/themes.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePing.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/launchable-app.json"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/xml/file_paths.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntries.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ByteArrayExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/OfflineStorageOption.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/values/tags.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/proguard-rules.pro"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/demoapp/learning_unit_xapi.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolValidationRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCaseWorker.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/NapierLoggingAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/drawable/respect_logo.webp"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/XapiLaunchParams.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/date/ParseHttpDate.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringValue.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MappedHttpHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/RouteWithResultDestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/ServerAppMain.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticatorAssertionResponseJSON.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddServerManagedDirectoryCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/ByteArrayExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/IHeaderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/CreatePublicKeyCredentialCreationOptionsJsonUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectSortOptionsBottomSheet.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/SingleItemToListTransformerSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiTextGetString.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppStateIcon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheTrimmer.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/RequestCacheControlHeader.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/ContentRange.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/jvmTest/kotlin/world/respect/lib/opds/model/OpdsSerializerTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CountGraphFormatter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/ext/InstantExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/UriStringSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getfavicons/GetFavIconUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/OfflineStorageOption.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle.properties"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/KClassStringSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/ByteArrayResponse.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/DownloadJobDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/DownloadJobItemDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AvatarColorForName.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/RespectSchoolPath.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/CreateAccountSetPasswordScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/CreatePublicKeyCredentialRequestOptionsJsonUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable/ic_launcher_background.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/GetPasskeyProviderInfoUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/MutableStateExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/xml/data_extraction_rules.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountSchoolScopeLink.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetActivePersonPasskeysUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/application.conf"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/AppUiStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/RespectAccountScopeId.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/qrcode/InviteQrScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasskeyRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/UstadCacheDbExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/drawable/assignments.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPagingItems.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LocalAppLocale.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RetentionLockDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemCommonExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DateGraphFormatter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/AlternativeLangLinks.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/EnrollmentRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectOfflineItemStatusIcon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/StringResourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable/data_reporting.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/index.html"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/AbstractCacheInterceptorTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DurationGraphFormatter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFacet.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithByteBody.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectGenderExposedDropDownMenuField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/index.json"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationExtensionsPRFOutputsJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ClazzExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFacet.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/demoapp/grade.jpg"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/app/AppIcon.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/IHttpHeadersAsOkHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/bookmark/BookmarkListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/SnackBarFlowDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/AbstractCacheInterceptorTest.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitHtmlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtil.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialParameters.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppTags.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/DownloadJobItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/edit/ReportEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumValidatorAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/DecodeUserHandleUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IAsYouTypeFormatter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReportExtensions.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/detail/IndicatorDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppStateIcon.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-iostreams/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberDateTimeFormat.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared-se/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/KClassStringSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getwarnings/GetWarningsUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesMigration.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/date/ParseHttpDate.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/xml/file_paths.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/resources/publication/lesson001/video.mp4"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ListAndPrintlnValidatorReporter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberDateTimeFormat.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryCodeToFlagEmoji.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelper.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthJob.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/username/UsernameSuggestionUseCaseServer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/values/tags.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/DatabaseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadDbDiscoveryListener.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/raw/license_label_json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/RangeInputStream.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/resources/childrens-literature.epub"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorJvm.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesMigration.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/replace.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/JsonObjectExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticatorSelectionCriteria.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/audio.ogg"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/howpasskeywork/HowPasskeyWorksViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationExtensionsPRFOutputsJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/DateFormatterExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/PinnedPublication.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonListDetailsExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialCreationOptionsJSON.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/native_demo/index.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsBelongsTo.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/jvmTest/resources/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/LicenseLabelEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/app.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumValidatorAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectFilterChipsHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/StatementDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/devmode/GetDevModeEnabledUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorMessage.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/AlternativeLangLinks.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/OkHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/LocalDateOrDateTime.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryExtraHeadersDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtilAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/well-known/assetlinks.json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/enterpasswordsignup/EnterPasswordSignUpScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntriesTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/SingleItemToListTransformerSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturnerImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectDetailField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ConcurrentSafeMapOf.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/util/ext/ApplicationRequestExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtilExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/composites/NeighborCacheEntryAndNeighborCache.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/howpasskeywork/HowPasskeyWorksScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/MakeSchoolPathDirUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getdeviceinfo/GetDeviceInfoUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getdeviceinfo/GetDeviceInfoUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitTinCanXmlUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/CountryCodeToFlagEmoji.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/OutputStreamExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ext/ReportQueryResultExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validatepassword/ValidatePasswordUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validateemail/ValidateEmailUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/CommonSortOptions.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onaccountcreated/NavigateOnAccountCreatedUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/drawable/ic_launcher_background.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPasswordField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/UsernameSuggestionUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolAppRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLinkProperties.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/account/invite/username/UsernameSuggestionUseCaseServer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/replace.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-nanohttpd/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/AppConfigExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/EnrollmentRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetActivePersonPasskeysUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/authenticatepassword/AuthenticateQrBadgeUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/RequestCacheControlHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/demoapp/locales/fr-FR.json"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/validateusername/ValidateUsernameUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CountGraphFormatter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringListSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/EnrollmentRoleEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/IAsYouTypeFormatterAdapterAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-primarykeygen/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendSmsUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonRoleEnumExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDetailField.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/integrity/Sha256Integrity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeadersExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/enrollments/UpdateClazzStudentXapiGroupUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/createaccount/CreateAccountScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialRpEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/TransferJobItemStatus.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/OkHttpHeadersAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/DefaultCacheCompressionFilter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/Snack.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/URLProtocolExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable/respect_logo.webp"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseCacheabilityCheckerExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ActionBarButtonUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderNormalizeForNoVarySearch.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/IHttpResponse.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/InstantAsISO8601Extensions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/SchoolUrlVerificationManager.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiText.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiTextGetString.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/UrlNormalizeForNoVarySearch.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/assets/aaguid.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/resources/ustadmobile-epub.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/LogTags.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/base.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-iostreams/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/CountryCodeTransformation.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationResponseJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/SnackBarDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/VerifyDomainUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/AGENTS.md"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/manifestlist.json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCaseProcessor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringValue.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImplTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DurationGraphFormatter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/jvmMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCacheWhatWithIdAndPayload.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ChannelExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getlaunchoptionsforpublication/GetLaunchOptionsForPublicationUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteInfoRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreProgressListener.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticatorSelectionCriteria.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithByteBody.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/resources/testfile2.png"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/resources/publication/lesson001/video.mp4"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectUserHandle.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/OnClickPhoneNumberUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/account/invite/username/checkusernameunique/CheckUsernameUniqueUseCaseServer.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/README_LAUNCHABLE_APP.md"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetActivePersonPasskeysUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicense.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticatorAssertionResponseJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/RouteWithResultDestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/respectappmanifest/model/RespectSite.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLinkProperties.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/StringExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/LearningUnitSelection.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringListSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSection.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/15.json"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheEntryToStore.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/resources/publication/lesson001/script.js"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/usagereporting/GetUsageReportingEnabledUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/SnackBarDispatcherUseCaseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/ClassRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/UrlBuilderApplyNoVarySearchTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/otheroptionsignup/OtherOptionsSignupScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetActivePersonPasskeysUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/edit/ReportEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/VerifyDomainUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringOrObjectSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountSchoolScopeLink.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CompressionType.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/OnClickPhoneNumberUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/openexternallink/OpenExternalLinkUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturner.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/xml/backup_rules.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/BasicWebView.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarColors.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorMessage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CachedResponseStatus.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/IHeaderExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/MapExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturner.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/detail/IndicatorDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectShortVersionInfoText.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/onboarding/OnboardingScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/demoapp/locales/en-US.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/RequestExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdRequestAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePathsProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/VerifyPasskeyUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumContributorObject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/jvmMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.jvm.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/launchable-app.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreProgressListener.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/authenticatepassword/AuthenticatePasswordUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MappedHttpHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/partial/ContentRangeTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/README.md"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialDescriptorJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-cli/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/filterusername/FilterUsernameUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/OpenEelIntent.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarSearchUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/resources/testfile1.png"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/lang_names.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationRequestExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadStatusUpdate.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/demoapp/locales/fr-FR.json"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/video.mp4"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/password/SavePasswordUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppIcon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadProgressUpdate.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumSubject.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/NullOutputStream.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/drawable/digital_library.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-iostreams/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/logback.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/DayOfWeekExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/BasicWebView.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/PhoneNumberVisualTransformation.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsGroup.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetAndroidSdCardDirUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/RememberDayOrDate.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/username/UsernameSuggestionRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/FilterChipsOption.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalTimeField.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/PinnedPublicationDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/index.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/E2EArtifactUploadActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseCacheabilityCheckerExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/passkey/VerifySignInWithPasskeyRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/undraw_qr_code_scan_bewe.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getlaunchoptionsforpublication/GetLaunchOptionsForPublicationUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsAcquisition.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createclass/CreateClassUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/username/UsernameSuggestionRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GenderGraphFormatter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryMode.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/onboarding/OnboardingViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolValidationRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RouteWithResultDest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/AvatarColorForName.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/assets/aaguid.json"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasswordRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ParametersExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/launchable-app.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/SnackBarDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePaths.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/17.json"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/LifeCycleOwnerDistributedCacheInit.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/clipboard/SetClipboardStringUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/PhoneNumberVisualTransformation.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/usagereporting/SetUsageReportingEnabledUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/DecodeUserHandleUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared-se/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLink.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/AppIcon.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/DefaultCacheCompressionFilter.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/ClassRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumValidatorUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthProcessor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/setpassword/EncryptPersonPasswordUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/tincan.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseProcessor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/devmode/SetDevModeEnabledUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/passkeylist/PasskeyListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/otheroptionsignup/OtherOptionsSignupScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumSubject.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/resources/publication/lesson001/audio.ogg"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/util/SchoolUrlVerificationManager.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadDbDiscoveryListener.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/DbTypeConverters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolPrimaryKeyGenerator.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeedMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthProcessor.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/CachePathsProviderAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterinvitecode/EnterInviteCodeViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/filterusername/FilterUsernameUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/PinnedPublication.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/EncodeUserHandleUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/CurriculumMappingAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/drawable/baseline_close_24.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/SnackBarFlowDispatcher.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/exception/ExceptionWithUiText.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/appmanifest.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/StringResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/SchoolConfig.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/RespectSchoolPath.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/passkey/GetAllActivePasskeysRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getwarnings/GetWarningsUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/drawable/feedback_sent.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ResourcesDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/jvmMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.jvm.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePaths.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadAbstractWebViewClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/raw/license_label_json"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/xml/backup_rules.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/PublicationListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsFeedExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/LangMapTextField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeaderListExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-primarykeygen/src/jvmTest/kotlin/world/respect/lib/primarykeygen/DoorPrimaryKeyGeneratorTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/io/RangeInputStreamTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/directives/DirectivesToMap.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/UstadCacheLogger.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/UrlParser.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/CustomDeepLinkToUrlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/MakeSchoolPathDirUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ClearNeighborsCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedDate.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/images/RespectImage.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deferreddeeplink/GetDeferredDeepLinkUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/application.conf"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryMode.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/DownloadJob.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolAppRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectSortHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/native_demo/Lesson"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/util/StringExt.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeadersImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheEntryToStore.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/demoapp/xapi_module.js"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarColors.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/filteredit/ReportFilterEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ChannelExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/changepassword/ChangePasswordScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NextAfterScan.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapTextField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/setpassword/EncryptPersonPasswordUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetAndroidSdCardDirUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/add/RegisterSchoolUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiResourceProviderAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheStorageCompressionFilter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithFormUrlEncodedData.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/demoapp/index.html"
          },
          {
            "editType" : "add",
            "file" : "lib-primarykeygen/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/GetPasskeyProviderInfoUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/ic_google_play_badge.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectPagingItems.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RespectRedeemInviteRequest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseClientImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/Snack.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntriesTest.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/index.json"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/SourceExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/theme/Color.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearchTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicenseList.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/logging/LogbackAntilog.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedDate.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/RemoveBookmarkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/SortOrderOption.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/values/themes.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsAcquisition.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/demoapp/ext/DemoAppUrlExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/onboarding/ShouldShowOnboardingUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/EncodeUserHandleUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailHeaderCell.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/RawStatementScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/VerifyDomainUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationExtensionsClientOutputsJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdRequestAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseValidityChecker.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedDate.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/bookmark/BookmarkListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesFromPropertiesUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.html"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/drawable/no_bookmark.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/video.mp4"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/OnClickPhoneNumUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/UsernameSuggestionUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/Greeting.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/ext/IntExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/SchoolDataSourceLocalProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/CreateAccountSetPasswordScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/16.json"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/GetPasskeyProviderInfoUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMapping.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/UrlParser.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/StringExt.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable/spix_logo.webp"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/DemoStringMaps.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/LearningUnitSelection.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/copycode/CopyInviteCodeViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJobProcessor.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/OkCallExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestJvm.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMapExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/directory/RespectDirectoryServersConfig.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/DownloadJobItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/devmode/SetDevModeEnabledUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturnerExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HeaderOverrideHttpResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/qrcode/PersonQrBadgeRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumberAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validateemail/ValidateEmailUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentListScreenFilter.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HeadersExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GraphFormatter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/Platform.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCaseProcessor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/qrcode/InviteQrScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchShareLinkAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/NapierLoggingAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getdeviceinfo/DeviceInfoExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/URLBuilderNormalizeForNoVarySearch.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/theme/Color.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/list/StatementListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentNameCell.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectUserHandle.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/RevokePasskeyUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PasskeyVerifyResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppManifestRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/respectaccount/list/RespectAccountListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/schooldirectory/edit/SchoolDirectoryEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNsdAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCacheWhatWithIdAndPayload.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/ByteArrayExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentListScreenFilter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/resources/publication/lesson001/script.js"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestJvm.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMap.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/UriStringSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/CacheEntryExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/PrimaryKeyGenerator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/JsonObjectExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/StringExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/XXStringHasherExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/Greeting.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/clipboard/SetClipboardStringUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/StatementDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RememberAppVersionInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNeighborDiscoveryListener.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/graph/CombinedGraph.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/schooldirectory/edit/SchoolDirectoryEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolPrimaryKeyGenerator.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/usagereporting/GetUsageReportingEnabledUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/theme/Theme.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getfavicons/GetFavIconUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/AuthRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/InviteExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/ModifierExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/util/ext/ApplicationResponseExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RespectRedeemInviteRequest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/PhoneNumValidatorUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/OkHttpRequestAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/MutableStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/Validator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/15.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/jvmTest/kotlin/world/respect/lib/opds/model/OpdsSerializerTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/SchoolConfig.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/DistributedCacheInterceptor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendSmsAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectQrBadgeInfoBox.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/LongExtCommon.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePathsProvider.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/icon.webp"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-primarykeygen/src/androidMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarSearchUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/LaunchCustomTabUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/DevModeClickable.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/username/checkusernameunique/CheckUsernameUniqueUseCaseServer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable/works_offline.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateauth/ValidateAuthorizationUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NewCacheEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPrice.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-iostreams/README.md"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/demoapp/books.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/EnqueueRunDownloadJobUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/connectivitymonitor/ConnectivityMonitorJvm.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLink.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/filteredit/ReportFilterEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublication.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/list/IndicatorListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/LangMap.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RequestedEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/openexternallink/OpenExternalLinkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectRememberPager.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IAsYouTypeFormatter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/AddNewEntryTriggerCallback.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/util/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/resources/directories/default.properties"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/howpasskeywork/HowPasskeyWorksScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onappstart/NavigateOnAppStartUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-cli/src/main/java/world/respect/clitools/RespectCLI.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectBasicAlertDialog.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/list/IndicatorListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitHtmlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/InviteExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheControlHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/UrlBuilderApplyNoVarySearchTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/values/asset_statements.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/ClientDataJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolRegistrationRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/RequestBuilder.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryExtraHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/username/checkusernameunique/CheckUsernameUniqueRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/index.json"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/downloader/DownloadIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/chimple.json"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/RangeInputStream.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/DecodeUserHandleUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/DownloadJobItemDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchShareLinkUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/effects/NavControllerLogEffect.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/LaunchDebouncer.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/VerifyDomainUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/RespectAccountScopeId.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/ByteArrayResponse.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/OpenExternalLinkUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-primarykeygen/src/androidMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/AddBookmarkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/qrcode/InviteQrViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/jvmMain/resources/sample-feed.json"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithFormUrlEncodedData.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/io/RangeInputStreamTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/BasicWebView.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/callback/AddSchoolDirectoryCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/schooldirectory/list/SchoolDirectoryListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-nanohttpd/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumber.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeadersExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/StatementDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/values-night/themes.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/EncodeUserHandleUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/resources/testfile2.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GenderGraphFormatter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/StringResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/jsMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.js.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/effects/NavControllerLogEffect.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MapHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/clipboard/SetClipboardStringUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/onboarding/OnboardingViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectQuickActionButton.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/RangeRequestNotSatisfiableException.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/jvmTest/resources/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/Lesson-manifest.json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/StringBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/sharefeedback/ShareFeedbackViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared-se/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/FileMimeTypeHelperImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/OkHttpResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/icon.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/OpenExternalLinkUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonListDetailsExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/icon.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/partial/ContentRangeTest.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/native_demo/Lesson-manifest.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AaguidProviderInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/HttpLinkHeader.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadStatusUpdate.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImplTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdResponseAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/resources/testfile1.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJob.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectFilterChipsHeader.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/StringResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumLinkPropertiesEncrypted.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/XXStringHasherExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createclass/CreateClassUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicense.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/resources/publication/lesson001/lesson001.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/clipboard/SetClipboardStringUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/list/CurriculumMappingListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/ext/InstantExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/SortOrderOptionExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/drawable/copycode.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/RespectSchoolDirectoryRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchShareLinkAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/ModifierExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/RedeemInviteRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/StatementDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseValidityChecker.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/LogTags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearchTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonTest/resources/invalid-catalog.json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/GetDbFilesForE2EArtifactUploadUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/SortOrderOption.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/no_bookmark.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/passkeylist/PasskeyListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCaseClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/app/domain/e2eartifactupload/E2EArtifactUploadActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectLongVersionInfoItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/CachePathsProviderAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/getxapiactivityid/GetXapiActivityForPublicationUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/LoadingUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/LoadingUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/InstantISO8601Serializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerAppMain.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/empty.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectGenderExposedDropDownMenuField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheTrimmer.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/script.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectQuickActionButton.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/VerifyPasskeyUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/migrations/UstadCacheDbMigrations.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppActionButton.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/CreatePublicKeyCredentialRequestOptionsJsonUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/copycode/CopyInviteCodeScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNsdAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectBottomSheetOption.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedTime.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/DownloadJob.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/usagereporting/SetUsageReportingEnabledUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberDateTimeFormat.android.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/RemoveBookmarkUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/resources/about-credits-common.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/RangeRequestNotSatisfiableException.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/demoapp/credits.txt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RouteWithResultDest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/NoVarySearch.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/detail/ReportDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-primarykeygen/src/jvmTest/kotlin/world/respect/lib/primarykeygen/DoorPrimaryKeyGeneratorTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/gotoappstore/GoToAppStoreUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectOfflineItemStatusIcon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-cli/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedTime.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialRpEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/RememberDayOrDate.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialParameters.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/util/ext/ParametersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/report/detail/ReportDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/RequestExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/account/passkey/LoadAaguidJsonUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectDateField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/UsernameSuggestionUseCaseClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemCommonExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate-ktor-server/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/detail/RawStatementScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/src/commonMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/dist/systemd/respect-server.service"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/verify/VerifySchoolUrlPointsToThisServerUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/tincan.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/fingerprint.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSession.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/DurationExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/PinnedPublicationDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/CouponHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/MockRunReportUseCaseClientImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDateField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePacket.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/drawable/works_offline.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClassPendingPersonListItem.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/index.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/onboarding/OnboardingScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonTest/resources/opds-io-home.json"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/drawable/ic_google_play_badge.png"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ReadiumContributorObject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/waitingforapproval/WaitingForApprovalScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicenseList.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/validator/HttpClientExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/demoapp/books.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNeighborDiscoveryListener.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/jvmMain/resources/sample-feed.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/copycode/CopyInviteCodeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/passkey/GetAllActivePasskeysRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ExpandableFabUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/UsernameSuggestionUseCaseClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/AuthResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/drawable/spix_logo.webp"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/androidMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/qrcode/InviteQrViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/SortOrderOptionExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/AccountDepComponent.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deferreddeeplink/GetDeferredDeepLinkUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentStatusFilter.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ByteBufferExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/passkey/RevokePasskeyRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-iostreams/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ResourcesDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/sharefeedback/ShareFeedbackScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/enterpasswordsignup/EnterPasswordSignUpScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationResponseExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/AddChildAccountRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/MakeSchoolPathDirUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithTextBody.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtilAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/GuessCountryCode.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/androidMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/SubmitRedeemInviteRequestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSectionLink.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/FilterChipsOption.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/StringResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/passkey/VerifySignInWithPasskeyRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/school/MakeSchoolPathDirUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSectionLink.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/unit.json"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/OkHttpResponseAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/unit.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonTest/resources/opds-io-home.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/theme/CommonColor.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-primarykeygen/src/jvmMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.jvm.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/CoroutineWorkerExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasskeyRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/verify/VerifySchoolUrlPointsToThisServerUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/README_LAUNCHABLE_APP.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseAndroidChannelHost.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchers/LaunchSendWhatsAppUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectPersonAvatar.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/HttpRequestOkHttpAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/StringExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/CacheResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/AuthResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/drawable/fingerprint.png"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheStorageCompressionFilter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/OpenEelIntent.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonGenderEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCaseProcessor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectTokenManager.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onaccountcreated/NavigateOnAccountCreatedUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectDataLoadHost.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/toPerson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/RunReportResultAndFormatters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/GetCredentialUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/RevokePasskeyUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/RespectSchoolJsonRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/resources/ustadmobile-epub.js"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/drawable/data_reporting.png"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RememberCountryFlagEmoji.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectPhoneNumberTextField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/RequestBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/menu/menu_webview.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppCollectionUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/default-catalog.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/resources/publication/lesson001/cover.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/onboarding/ShouldShowOnboardingUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ExpandableFabUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/validateusername/ValidateUsernameUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/HttpRequestOkHttpAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelperExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HeaderOverrideHttpResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentProgressCell.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/integrity/Sha256Integrity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedTime.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/toPerson.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/resources/directories/default.properties"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateTimeField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validatepassword/ValidatePasswordUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/enterinvitecode/EnterInviteCodeScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/ExpandableFab.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/ExpandableFab.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/FileMimeTypeHelperImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthJob.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-iostreams/README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/ClientDataJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppTags.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/SnackBarDispatcherUseCaseExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryExtraHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HeadersBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/drawable/undraw_qr_code_scan_bewe.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeedMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticatePasswordUseCaseDbImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendSmsAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/base.json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLongVersionInfoItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/schooldirectory/list/SchoolDirectoryListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidateLinkUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturnerExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/e2etestartifactsroute/E2ETestArtifactsRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/feedback_sent.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectRememberPager.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getwarnings/GetWarningsUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/ActivityContextJob.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/theme/Theme.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImplTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/default-catalog.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/values-night/themes.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadProgressUpdate.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/CoroutineWorkerExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiText.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaders.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/ByteArrayResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/Platform.android.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ReportExtensions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsGroup.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/SignupScreenModeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/values/asset_statements.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/IPhoneNumberUtil.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/app.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/StringOrObjectSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/activitycontextjobprocessor/EnqueueActivityContextJobUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/SignupScreenModeEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/util/ext/ExceptionExtensions.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/InstantAsISO8601Extensions.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5Digest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/bookmark/BookmarkListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/DatabaseExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/SaveDemoAppToStaticFilesUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolDbPath.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/IHttpHeadersAsOkHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsBelongsTo.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntries.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getlanguageendonym/GetLanguageEndonymUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MapHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/URLProtocolExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/PinPublicationPrepareUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DateGraphFormatter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/username/checkusernameunique/CheckUsernameUniqueRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/DownloadJobItemStatusUpdater.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/DurationExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/xml/data_extraction_rules.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/FileAssert.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/Platform.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/compose-multiplatform.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerAccountScopeManager.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/directives/DirectivesToMap.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/demoapp/app_icon.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/credentials/password/SavePasswordUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StringExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/SubmitRedeemInviteRequestUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonTest/resources/invalid-catalog.json"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/CommonSortOptions.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/novarysearch/UrlNormalizeForNoVarySearch.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CachedResponseStatus.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/resources/about-credits-common.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/EnqueueRunDownloadJobUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/ReadiumLinkExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/authenticatepassword/AuthenticatePasswordUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/respectappmanifest/model/RespectSite.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/util/ext/FileExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/dist/systemd/respect-server.service"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonGenderEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClassPendingPersonListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ByteBufferExt.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/Lesson-manifest.json"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/testing/SendDbToServerScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getdeviceinfo/GetDeviceInfoUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/AddNewEntryTriggerCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMappingSection.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDataLoadHost.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/FileAssert.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ByteArrayExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHeadersBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectSortHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/RunDownloadJobUseCaseWorker.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlDirectivesUtil.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLearningUnitRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deferreddeeplink/GetDeferredDeepLinkUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/AssignmentStatusFilter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/AddChildAccountRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppLearningUnitManifestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/CurriculumMappingAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/jvmMain/kotlin/world/respect/images/RespectImage.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AaguidProviderInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/DecodeUserHandleUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/audio.ogg"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/e2etestartifactsroute/E2ETestArtifactsRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/demoapp/learning_unit_xapi.js"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePing.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/CacheEntryExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashCacheEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/DistributedCacheInterceptor.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getlanguageendonym/GetLanguageEndonymUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/devmode/GetDevModeEnabledUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageSettingUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/ext/IntExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/drawable/compose-multiplatform.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/resources/childrens-literature.epub"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeadersImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "ci-run-test-server.sh"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/PersonQrBadgeRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectCredential.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/ext/FileExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/signup/SignupCredential.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/BaseHttpRequest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/well-known/assetlinks.json"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/ValidatedEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectLazyItems.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppManifestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheControlHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/drawable/empty.png"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectBottomSheetOption.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getdeviceinfo/DeviceInfoExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePong.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/index.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/ReportViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/values/lang_names.xml"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppCollectionsRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/demoapp/MakeDemoAppGradeCollectionsUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdResponseAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NavCommandExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/DayOfWeekExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/statement/detail/RawStatementViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/script.js"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreResult.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectPasskeySignInFasterCard.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/KtorIHeadersAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable/ic_launcher.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/UrlToCustomDeepLinkUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchShareLinkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-primarykeygen/src/jvmMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.jvm.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseClientImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/otheroption/OtherOptionsScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/callback/AddSchoolDirectoryCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/SchoolDirectoryEntryScopeId.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/logback.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendSmsUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/DurationAsISO8601Serializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/DurationAsISO8601Serializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseDatabaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/AGENTS.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorReporter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/resources/publication/lesson001/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/LongExtCommon.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable/assignments.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/callback/AddDirectoriesFromPropertiesUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getxapilaunchparams/GetXapiLaunchParamsUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/Lesson-manifest.json"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/AbstractEnqueuePinPublicationPrepareUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialRequestOptionsJSON.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/graph/CombinedGraph.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppActionButton.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryExtraHeadersDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geolookup/GetCountryForUrlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialDescriptorJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/resources/publication/lesson001/cover.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/LifeCycleOwnerDistributedCacheInit.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/jvmMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared-se/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/demoapp/credits.txt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ActionBarButtonUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/LangMapExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectSortOptionsBottomSheet.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSession.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/UrlToCustomDeepLinkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/phonenumber/OnClickPhoneNumUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/demoapp/app_icon.png"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/waitingforapproval/WaitingForApprovalScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteInfoRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/BasicWebView.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/jsMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.js.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/shared/domain/license/GetLicenseLabelUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/PersonPasswordRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/ReportViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/Platform.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/copycode.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/statement/list/StatementListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/resources/publication/lesson001/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolLinkRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/model/CurriculumMapping.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/SourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PasskeyVerifyResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/ByteArrayResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/phonenumber/IAsYouTypeFormatterAdapterAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/native_demo/appmanifest.json"
          },
          {
            "editType" : "add",
            "file" : "app-cli/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable/digital_library.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/directory/RespectDirectoryServersConfig.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/list/CurriculumMappingListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/geticonforxapiactivity/GetPublicationForXapiActivityUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalTimeField.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/respectaccount/list/RespectAccountListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/password/SavePasswordUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/icon.png"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/demoapp/DemoLaunchableAppLearningUnitRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/usagereporting/SetUsageReportingEnabledUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateauth/ValidateAuthorizationUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LaunchNoVarySearchConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/EnrollmentRoleEnumExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/DevModeClickable.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/appversioninfo/GetAppVersionInfoUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/MockRunReportUseCaseClientImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolDbPath.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateTimeField.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/OkHttpRequestAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialRequestOptionsJSON.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/usagereporting/GetUsageReportingEnabledUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onappstart/NavigateOnAppStartUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/downloader/EnqueueRunDownloadJobUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/bookmark/AddBookmarkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/composites/NeighborCacheEntryAndNeighborCache.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/list/CurriculumMappingListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPersonAvatar.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/PublicKeyCredentialUserEntityJSON.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/IHttpResponse.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/native_demo/Lesson"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/menu/menu_webview.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/LangMapExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/RespectBasicAlertDialog.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/model/AuthenticationExtensionsClientOutputsJSON.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/jvmMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailStudentNameCell.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/resources/publication/lesson001/lesson001.html"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCaseJvm.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/enrollments/UpdateClazzStudentXapiGroupUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/well-known/terms.html"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/InputStreamExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectTokenManager.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedDate.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/LoadAaguidJsonUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLazyItems.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ListAndPrintlnValidatorReporter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidateLinkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/res/values-v23/themes.xml"
          },
          {
            "editType" : "add",
            "file" : "lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/PrimaryKeyGenerator.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/list/CurriculumMappingListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/CountryCodeTransformation.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/ClazzExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LaunchNoVarySearchConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ext/ReportQueryResultExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResultReturnerImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolLinkRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/RespectAccountExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectCredential.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/di/SchoolDirectoryEntryScopeId.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/list/SchoolDirectoryListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAppListingExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/exception/ExceptionWithUiText.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/HttpLinkHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/MapExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/CouponHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-okhttp/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsSeries.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/LaunchDebouncer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/chimple.json"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createlink/CreateInviteLinkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/license/LicenseLabelEntry.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/resources/publication/lesson001/audio.ogg"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/LoadAaguidJsonUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCaseClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RememberCountryFlagEmoji.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/downloader/EnqueuePinPublicationPrepareUseCaseJvm.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailHeaderCell.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/validator/HttpClientExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseDatabaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/CacheResponse.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable/baseline_close_24.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-cli/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/demoapp/DemoStringMaps.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/CreatePasskeyUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/logging/LogbackAntilog.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NewCacheEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ext/UstadCacheDbExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeaderListExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/enterinvitecode/EnterInviteCodeScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RequestedEntryDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NapierLogInit.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/StringResourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavResult.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/passkey/EncodeUserHandleUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/downloader/AbstractEnqueuePinPublicationPrepareUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-http-ipc-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/app/components/BasicWebView.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getwarnings/GetWarningsUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/request/CreatePublicKeyCredentialCreationOptionsJsonUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/e2eartifactupload/E2EArtifactUploadUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/cover.png"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt"
          },
          {
            "editType" : "add",
            "file" : "app-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png"
          },
          {
            "editType" : "add",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/util/phonenum/PhoneUtils.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js"
          },
          {
            "editType" : "add",
            "file" : "lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-server/src/dist/systemd/respect-server.service"
        ],
        "commitId" : "78c9a20922e2d10d126600ae9c292ed9624179d2",
        "timestamp" : 1789647047000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update respect-server.service template.\u000a",
        "date" : "2026-09-17 16:10:47 +0400",
        "id" : "78c9a20922e2d10d126600ae9c292ed9624179d2",
        "msg" : "Update respect-server.service template.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app-server/src/dist/systemd/respect-server.service"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/data/http___10_40_49_70_8098_/http___10_40_49_70_8098_.lck",
          "respect-server/data/http___10_40_49_70_8098_/http___10_40_49_70_8098_-wal",
          "respect-server/data/respect-app.db-wal",
          "respect-server/data/dir-admin.txt",
          "respect-server/data/respect-app.db",
          "respect-server/data/respect-app.db-shm",
          "respect-server/data/http___10_40_49_70_8098_/http___10_40_49_70_8098_",
          "respect-server/data/server.properties",
          "respect-server/data/respect-app.db.lck",
          "respect-server/data/http___10_40_49_70_8098_/http___10_40_49_70_8098_-shm"
        ],
        "commitId" : "6ee350d7644c81636bdd7c6e9467caa765aed61a",
        "timestamp" : 1789648642000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove test data no longer covered by gitignore.\u000a",
        "date" : "2026-09-17 16:37:22 +0400",
        "id" : "6ee350d7644c81636bdd7c6e9467caa765aed61a",
        "msg" : "Remove test data no longer covered by gitignore.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-server/data/dir-admin.txt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/data/respect-app.db-wal"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/data/http___10_40_49_70_8098_/http___10_40_49_70_8098_"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/data/respect-app.db-shm"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/data/http___10_40_49_70_8098_/http___10_40_49_70_8098_-wal"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/data/respect-app.db"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/data/http___10_40_49_70_8098_/http___10_40_49_70_8098_-shm"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/data/respect-app.db.lck"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/data/server.properties"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/data/http___10_40_49_70_8098_/http___10_40_49_70_8098_.lck"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".gitignore"
        ],
        "commitId" : "f08fc738eef4c41b036ccc7f98df2ad18a42b8d2",
        "timestamp" : 1789648790000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update gitignore to reflect module renaming and avoid accidental commit of old server data.\u000a",
        "date" : "2026-09-17 16:39:50 +0400",
        "id" : "f08fc738eef4c41b036ccc7f98df2ad18a42b8d2",
        "msg" : "Update gitignore to reflect module renaming and avoid accidental commit of old server data.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".gitignore"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/desktopMain/resources/img/spix_logo.png",
          "composeApp/src/desktopMain/resources/img/respect_logo.png",
          ".gitignore"
        ],
        "commitId" : "01b27dd486b9ca5d02af0f4eb3ce41ec0deb606c",
        "timestamp" : 1789648861000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove obsolete old composeApp directory.\u000a",
        "date" : "2026-09-17 16:41:01 +0400",
        "id" : "01b27dd486b9ca5d02af0f4eb3ce41ec0deb606c",
        "msg" : "Remove obsolete old composeApp directory.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/desktopMain/resources/img/respect_logo.png"
          },
          {
            "editType" : "edit",
            "file" : ".gitignore"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/desktopMain/resources/img/spix_logo.png"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-server/README.md",
          "AGENTS.md"
        ],
        "commitId" : "5461c3e7ef70a4307f6868bed4093e414b7312ff",
        "timestamp" : 1789649231000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix links in AGENTS.md and README.md\u000a",
        "date" : "2026-09-17 16:47:11 +0400",
        "id" : "5461c3e7ef70a4307f6868bed4093e414b7312ff",
        "msg" : "Fix links in AGENTS.md and README.md",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "app-server/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/17.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSourceLocal.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolAppEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolApp.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolAppEntity.kt",
          "app-server/src/main/kotlin/world/respect/server/Application.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttpClient.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolAppDataSourceDb.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolAppRoute.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttpClient.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolAppAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
        ],
        "commitId" : "c8116d249abc5dd79fbbff973fb1c13cc2645e7e",
        "timestamp" : 1789653548000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove obsolete SchoolApp datasource.\u000a",
        "date" : "2026-09-17 17:59:08 +0400",
        "id" : "c8116d249abc5dd79fbbff973fb1c13cc2645e7e",
        "msg" : "Remove obsolete SchoolApp datasource.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttpClient.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolAppEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolAppDataSourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolAppDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/17.json"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolAppDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolAppAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolAppEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolAppRoute.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttpClient.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededit/OpdsFeedEditViewModel.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/18.json",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttpClient.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/ETagAndLastModifiedExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/ext/OpdsFeedEntityExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt"
        ],
        "commitId" : "87391a9a03b2e3dc1a18da04a0e104d3e2c9fa0f",
        "timestamp" : 1789668616000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add ETag and Last-Modified caching support to OpdsFeedDataSource and remove write operations\u000a",
        "date" : "2026-09-17 22:10:16 +0400",
        "id" : "87391a9a03b2e3dc1a18da04a0e104d3e2c9fa0f",
        "msg" : "Add ETag and Last-Modified caching support to OpdsFeedDataSource and remove write operations",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/ETagAndLastModifiedExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/ext/OpdsFeedEntityExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededit/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/18.json"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/opds/OpdsFeedDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/ETagAndLastModifiedExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedEntity.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ETagAndLastModified.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/HeadersExt.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedlist/OpdsFeedListViewModel.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt",
          "app-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/18.json",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/flow/RepoFlow.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt"
        ],
        "commitId" : "e430d3912c32f55f19c11f3f1febba05a2811992",
        "timestamp" : 1789732644000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement asRepoFlow for repository data loading and remove OPDS feed write support\u000a",
        "date" : "2026-09-18 15:57:24 +0400",
        "id" : "e430d3912c32f55f19c11f3f1febba05a2811992",
        "msg" : "Implement asRepoFlow for repository data loading and remove OPDS feed write support",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/OpdsFeedDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/HeadersExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/flow/RepoFlow.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/ETagAndLastModifiedExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedlist/OpdsFeedListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-server/src/main/kotlin/world/respect/server/routes/school/respect/PlaylistRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ETagAndLastModified.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/18.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/catalog/saveopdsfeed/SaveOpdsFeedUseCase.kt",
          "lib-datalayer/build.gradle.kts",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededit/OpdsFeedEditViewModel.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
        ],
        "commitId" : "13f2d0396253ff9440f3218469a2986d82343388",
        "timestamp" : 1789740744000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement SaveOpdsFeedUseCase to persist OPDS feeds to xAPI activity profile\u000a",
        "date" : "2026-09-18 18:12:24 +0400",
        "id" : "13f2d0396253ff9440f3218469a2986d82343388",
        "msg" : "Implement SaveOpdsFeedUseCase to persist OPDS feeds to xAPI activity profile",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/MakePlaylistOpdsFeedUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/catalog/saveopdsfeed/SaveOpdsFeedUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededit/OpdsFeedEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/flow/RepoFlowTest.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/flow/RepoFlow.kt"
        ],
        "commitId" : "b69a100d4d1cd0c868bce1f508769bec864d9493",
        "timestamp" : 1789904836000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add test for RepoFlow\u000a",
        "date" : "2026-09-20 15:47:16 +0400",
        "id" : "b69a100d4d1cd0c868bce1f508769bec864d9493",
        "msg" : "Add test for RepoFlow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/flow/RepoFlowTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/flow/RepoFlow.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/flow/RepoFlowTest.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/flow/RepoFlow.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt",
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/ETagAndLastModifiedExt.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/ext/DataLoadParamsExt.kt"
        ],
        "commitId" : "d41cbd4aff4ae57c4eaab3c035c894bdf5a3f103",
        "timestamp" : 1789972892000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Prevent older remote data from overwriting newer local data\u000a",
        "date" : "2026-09-21 10:41:32 +0400",
        "id" : "d41cbd4aff4ae57c4eaab3c035c894bdf5a3f103",
        "msg" : "Prevent older remote data from overwriting newer local data",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/flow/RepoFlow.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/ext/DataLoadParamsExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/ETagAndLastModifiedExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/flow/RepoFlowTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt"
        ],
        "commitId" : "e1ca3bf147e7f55025333eb0fd58757778ed6c28",
        "timestamp" : 1789974069000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update DataLoadStateExt.kt comments\u000a",
        "date" : "2026-09-21 11:01:09 +0400",
        "id" : "e1ca3bf147e7f55025333eb0fd58757778ed6c28",
        "msg" : "Update DataLoadStateExt.kt comments",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/subflows/admin_add_class_with_members.yaml",
          ".maestro/flows/subflows/admin_add_class.yaml",
          ".maestro/flows/subflows/admin_add_new_student_to_class.yaml",
          ".maestro/flows/subflows/admin_add_student.yaml",
          ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml",
          ".maestro/flows-pending/001_005_add_school_self_registration_test.yaml",
          ".maestro/flows/002_001_browse_lessons_test.yaml",
          ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
        ],
        "commitId" : "3dc7335ed9c45c15b467355f461d504e30878257",
        "timestamp" : 1789977414000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Restore to maestro tests as per main branch.\u000a",
        "date" : "2026-09-21 11:56:54 +0400",
        "id" : "3dc7335ed9c45c15b467355f461d504e30878257",
        "msg" : "Restore to maestro tests as per main branch.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_001_user_add_apps_playlists_and_bookmarks_to_school_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class_with_members.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_new_student_to_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_new_teacher_to_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_student.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows-pending/001_005_add_school_self_registration_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_001_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/README.md",
          ".maestro/flows/002_001_browse_lessons_test.yaml",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/PublicationDetailScreen.kt"
        ],
        "commitId" : "1bad6f9b7297a774b2387ed31e14b0cb9e7ad186",
        "timestamp" : 1789980925000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix use of title on 002_001 browse lesson test. Update maestro readme as per new module names.\u000a",
        "date" : "2026-09-21 12:55:25 +0400",
        "id" : "1bad6f9b7297a774b2387ed31e14b0cb9e7ad186",
        "msg" : "Fix use of title on 002_001 browse lesson test. Update maestro readme as per new module names.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/README.md"
          },
          {
            "editType" : "edit",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/PublicationDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_002_browse_demo_app_test.yaml"
        ],
        "commitId" : "57bafa259a211717b8cd5b1232a94555d8106eb6",
        "timestamp" : 1789984229000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix 002_002_browse_demo_app_test.yaml : change id to publication_title.\u000a",
        "date" : "2026-09-21 13:50:29 +0400",
        "id" : "57bafa259a211717b8cd5b1232a94555d8106eb6",
        "msg" : "Fix 002_002_browse_demo_app_test.yaml : change id to publication_title.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_002_browse_demo_app_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentResourceExt.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStateResource.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/ISingleDocumentParams.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiActivityProfileResourceAssertions.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiDocumentResourceTest.kt",
          "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiActivityProfileResourceRoute.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt"
        ],
        "commitId" : "353a9ddfe454298dd3e21ab0ad7310238747bb7c",
        "timestamp" : 1789999846000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Extract AbstractXapiDocumentResourceTest and add XapiStateResource\u000a",
        "date" : "2026-09-21 18:10:46 +0400",
        "id" : "353a9ddfe454298dd3e21ab0ad7310238747bb7c",
        "msg" : "Extract AbstractXapiDocumentResourceTest and add XapiStateResource",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiDocumentResourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiActivityProfileResourceAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/ISingleDocumentParams.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiDocumentResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentResourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStateResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiActivityProfileResourceRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDocumentEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStateDocumentAndShaEntities.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiStateResourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDocumentShaDao.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiStateResourceAssertions.kt",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDbTest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDocumentShaEntity.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActorExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStateDocumentAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiResourceLocal.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/18.json",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentShaEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/SharedConverters.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStateResourceTest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDb.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDocumentDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentShaDao.kt"
        ],
        "commitId" : "7481be86dd5178e393327f194df98c985f1392b9",
        "timestamp" : 1790008624000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement xAPI State resource database storage and migration to version 18\u000a",
        "date" : "2026-09-21 20:37:04 +0400",
        "id" : "7481be86dd5178e393327f194df98c985f1392b9",
        "msg" : "Implement xAPI State resource database storage and migration to version 18",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDocumentDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDocumentShaDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDocumentShaEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDocumentEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiStateResourceAssertions.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiStateDocumentAndShaEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActorExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStateResourceTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentShaDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiStateResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiStateDocumentAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/18.json"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiActivityProfileDocumentShaEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiDocumentExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiStateResourceRoute.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiResourceLocal.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStateResourceHttpClient.kt",
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStateResourceHttpClientTest.kt",
          "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
        ],
        "commitId" : "830ba89b25fbcbf10e15d7be093022a721ee1698",
        "timestamp" : 1790009870000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add xAPI State resource HTTP client and server route\u000a",
        "date" : "2026-09-21 20:57:50 +0400",
        "id" : "830ba89b25fbcbf10e15d7be093022a721ee1698",
        "msg" : "Add xAPI State resource HTTP client and server route",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiResourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiStateResourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiStateResourceRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStateResourceHttpClientTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/AbstractXapiDocumentResourceRepositoryIntegrationTest.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryIntegrationTest.kt"
        ],
        "commitId" : "1667f23c409416362154b7d78671489d9180d94e",
        "timestamp" : 1790011846000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Extract AbstractXapiDocumentResourceRepositoryIntegrationTest base test class\u000a",
        "date" : "2026-09-21 21:30:46 +0400",
        "id" : "1667f23c409416362154b7d78671489d9180d94e",
        "msg" : "Extract AbstractXapiDocumentResourceRepositoryIntegrationTest base test class",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/AbstractXapiDocumentResourceRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt"
        ],
        "commitId" : "50137ed31af5059ca8f3d9eaa165a03d50f51eab",
        "timestamp" : 1790012078000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Extract AbstractXapiDocumentResourceRepositoryIntegrationTest base test class\u000a",
        "date" : "2026-09-21 21:34:38 +0400",
        "id" : "50137ed31af5059ca8f3d9eaa165a03d50f51eab",
        "msg" : "Extract AbstractXapiDocumentResourceRepositoryIntegrationTest base test class",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStateResourceRepositoryTest.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStateResourceRepository.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/WithEmbeddedServerAndRepoClients.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/XapiRemoteWriteQueueItem.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStateResourceRepositoryIntegrationTest.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/AbstractXapiDocumentResourceRepositoryIntegrationTest.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt"
        ],
        "commitId" : "7cf928c31fa9548ef1424965d95d5d86e24dcc15",
        "timestamp" : 1790013331000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement XapiStateResourceRepository\u000a",
        "date" : "2026-09-21 21:55:31 +0400",
        "id" : "7cf928c31fa9548ef1424965d95d5d86e24dcc15",
        "msg" : "Implement XapiStateResourceRepository",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/XapiRemoteWriteQueueItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStateResourceRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/AbstractXapiDocumentResourceRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStateResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/WithEmbeddedServerAndRepoClients.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStateResourceRepositoryTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiAgentProfileResourceHttpClientTest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiAgentProfileDocumentDao.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiAgentProfileResource.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateEntityDao.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiAgentProfileResourceRepository.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAgentProfileDocumentEntity.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt",
          "app-server/src/main/kotlin/world/respect/server/Application.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiAgentProfileResourceRepositoryTest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDb.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateEntity.kt",
          "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt",
          "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiAgentProfileResourceRepositoryIntegrationTest.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiResourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAgentProfileDocumentAndShaEntities.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/XapiRemoteWriteQueueItem.kt",
          "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiAgentProfileResourceHttpClient.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt",
          "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDbTest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDeleteCommandDao.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiAgentProfileResourceTest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAgentProfileDocumentAdapter.kt",
          "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiAgentProfileResourceRoute.kt",
          "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiAgentProfileResourceAssertions.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAgentProfileDocumentShaEntity.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDeleteCommand.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiAgentProfileResourceLocal.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiAgentProfileDocumentShaDao.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentProgressEntityRow.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/19.json",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt",
          "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
        ],
        "commitId" : "8e677442f2e34eb2b726e9631d4b150d95f65c6e",
        "timestamp" : 1790079166000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement xAPI Agent Profile resource\u000a",
        "date" : "2026-09-22 16:12:46 +0400",
        "id" : "8e677442f2e34eb2b726e9631d4b150d95f65c6e",
        "msg" : "Implement xAPI Agent Profile resource",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiAgentProfileDocumentDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAgentProfileDocumentEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDbTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiAgentProfileResource.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-server/src/commonMain/kotlin/world/respect/datalayer/http/server/XapiAgentProfileResourceRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAssignmentProgressEntityRow.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiAgentProfileResourceRepositoryTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiAgentProfileDocumentShaDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiAgentProfileResourceRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/DrainXapiRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiAgentProfileResourceTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateDeleteCommand.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiResourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDeleteCommandDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/remotewritequeue/XapiRemoteWriteQueueItem.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/composites/XapiAgentProfileDocumentAndShaEntities.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiResourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/19.json"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/local/XapiAgentProfileResourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiAgentProfileResourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiAgentProfileResourceAssertions.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabaseMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-http-client/src/commonMain/kotlin/world/respect/datalayer/http/school/xapi/XapiResourceHttpClient.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiAgentProfileDocumentAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiAgentProfileResourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStateEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiAgentProfileResourceHttpClientTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiAgentProfileDocumentShaEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/10.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterOrgGUIDRef.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryEntryAdapter.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Person.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/AuthOptionConfig.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserGUIDRef.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClassGUIDRef.kt",
          "lib-ihttp-core/README.md",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/SchoolDirectoryEntry.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterEnrollment.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRole.kt",
          "lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateOpdsPublicationUseCase.kt",
          "lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGUIDRef.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt",
          "app-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/11.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryEntity.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClass.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGenderEnum.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterResourceGUIDRef.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/AuthOptionConfigTypeEnum.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/AuthenticationOption.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/respectappmanifest/model/RespectSite.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBase.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBaseStatusEnum.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/composites/ClazzListDetails.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/UidNumberMapper.kt",
          "README.md",
          "app-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnumExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserProfile.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryAuthOptionEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleTypeEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryAuthOptionEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUser.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserId.kt"
        ],
        "commitId" : "ef2dd76eb0fd8e2c2e9658586434f96cd696a39e",
        "timestamp" : 1790178862000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove obsolete models and add authentication options to SchoolDirectoryEntry.\u000a",
        "date" : "2026-09-23 19:54:22 +0400",
        "id" : "ef2dd76eb0fd8e2c2e9658586434f96cd696a39e",
        "msg" : "Remove obsolete models and add authentication options to SchoolDirectoryEntry.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterEnrollment.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/AuthOptionConfigTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBaseStatusEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClassGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRole.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateOpdsPublicationUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/10.json"
          },
          {
            "editType" : "delete",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryAuthOptionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGenderEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/AuthenticationOption.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/11.json"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterOrgGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterResourceGUIDRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserId.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Person.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryAuthOptionEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClass.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserProfile.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-ihttp-core/README.md"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/SchoolDirectoryEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/UidNumberMapper.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/respectappmanifest/model/RespectSite.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBase.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUser.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/composites/ClazzListDetails.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryEntryAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/AuthOptionConfig.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserGUIDRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "README.md"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-core/README_XAPI_SQL_QUERY.md"
        ],
        "commitId" : "71bfc9ecd378c49409a65ac2ebcdfee806c9fcf3",
        "timestamp" : 1790242625000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update README_XAPI_SQL_QUERY.md recipe - add parent id for query-response.\u000a",
        "date" : "2026-09-24 13:37:05 +0400",
        "id" : "71bfc9ecd378c49409a65ac2ebcdfee806c9fcf3",
        "msg" : "Update README_XAPI_SQL_QUERY.md recipe - add parent id for query-response.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/README_XAPI_SQL_QUERY.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/XapiResourceProviderExt.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/DataLoadStateExt.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt",
          "lib-xapi-nanohttpd/AGENTS.md",
          "lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/WithNanoHttpdXapiResource.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/StatementResourceResponder.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "lib-xapi-nanohttpd/build.gradle.kts",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/NanoHttpdXapiResponder.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/LogResponse.kt",
          "lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiStatementResourceNanoHttpdTest.kt"
        ],
        "commitId" : "6dd9d70a2ad64d425ff1b383e60eec2ce8ff5d43",
        "timestamp" : 1790324036000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor statement handling into StatementResourceResponder and add tests\u000a",
        "date" : "2026-09-25 12:13:56 +0400",
        "id" : "6dd9d70a2ad64d425ff1b383e60eec2ce8ff5d43",
        "msg" : "Refactor statement handling into StatementResourceResponder and add tests",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/NanoHttpdXapiResponder.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/StatementResourceResponder.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/AGENTS.md"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/XapiResourceProviderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/WithNanoHttpdXapiResource.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/LogResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiStatementResourceNanoHttpdTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/XapiDocumentExt.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/DataLoadStateExt.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/NewNoCnotentResponse.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/XapiStateResourceResponder.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/AbstractXapiDocumentResourceResponder.kt",
          "lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiStateResourceNanoHttpdTest.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt"
        ],
        "commitId" : "532bc906ffa34ddbb9ef16c2558aa16d147099f8",
        "timestamp" : 1790344131000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add xAPI State resource responder in NanoHTTPD\u000a",
        "date" : "2026-09-25 17:48:51 +0400",
        "id" : "532bc906ffa34ddbb9ef16c2558aa16d147099f8",
        "msg" : "Add xAPI State resource responder in NanoHTTPD",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/NewNoCnotentResponse.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiStateResourceNanoHttpdTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/AbstractXapiDocumentResourceResponder.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/XapiDocumentExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/XapiStateResourceResponder.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/StatementResourceResponder.kt"
        ],
        "commitId" : "4f49d34ee2e085c1fea6d13bef1db2147de881f7",
        "timestamp" : 1790344141000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add xAPI State resource responder in NanoHTTPD\u000a",
        "date" : "2026-09-25 17:49:01 +0400",
        "id" : "4f49d34ee2e085c1fea6d13bef1db2147de881f7",
        "msg" : "Add xAPI State resource responder in NanoHTTPD",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/StatementResourceResponder.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiActivityProfileResourceNanoHttpdTest.kt",
          "lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiAgentProfileResourceNanoHttpdTest.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/XapiAgentProfileResourceResponder.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/StatementResourceResponder.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/XapiActivityProfileResourceResponder.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/XapiStateResourceResponder.kt",
          "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
        ],
        "commitId" : "bc9ca414264225b7baae09c6bc4edcfd09082f2b",
        "timestamp" : 1790345194000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add Activity and Agent Profile resources to lib-xapi-nanohttpd\u000a",
        "date" : "2026-09-25 18:06:34 +0400",
        "id" : "bc9ca414264225b7baae09c6bc4edcfd09082f2b",
        "msg" : "Add Activity and Agent Profile resources to lib-xapi-nanohttpd",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/StatementResourceResponder.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/XapiActivityProfileResourceResponder.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiActivityProfileResourceNanoHttpdTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiAgentProfileResourceNanoHttpdTest.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/XapiAgentProfileResourceResponder.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/resources/XapiStateResourceResponder.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getlaunchoptionsforpublication/GetLaunchOptionsForPublicationUseCase.kt",
          "app-server/src/main/kotlin/world/respect/server/Application.kt"
        ],
        "commitId" : "a9b542c379201dadc2b83628271fe759d4b22468",
        "timestamp" : 1790351054000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add state resource to Application.kt and fix GetLaunchOptionsForPublicationUseCase.kt url resolution.\u000a",
        "date" : "2026-09-25 19:44:14 +0400",
        "id" : "a9b542c379201dadc2b83628271fe759d4b22468",
        "msg" : "Add state resource to Application.kt and fix GetLaunchOptionsForPublicationUseCase.kt url resolution.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/getlaunchoptionsforpublication/GetLaunchOptionsForPublicationUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-server/src/main/kotlin/world/respect/server/Application.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-shared/src/commonMain/composeResources/values-hi/strings.xml",
          "respect-lib-shared/src/commonMain/composeResources/values-hi/strings.xml",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SetLanguageUseCase.kt",
          "app-android/src/main/AndroidManifest.xml",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguageNames.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguageNames.kt",
          "app-android/src/main/kotlin/world/respect/shared/domain/applanguage/LocaleSettingDelegateAndroid.kt",
          "app-android/src/main/kotlin/world/respect/shared/domain/applanguage/SetLanguageUseCaseAndroid.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt",
          "lib-shared/src/commonMain/composeResources/values-ne/strings.xml",
          "respect-lib-shared/src/commonMain/composeResources/values-ne/strings.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/applanguage/LocaleSettingDelegateAndroid.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SetLanguageUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguagesConfig.kt",
          "lib-appui-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt",
          "lib-appui-compose/src/androidMain/res/values-hi/strings.xml",
          "lib-appui-compose/src/androidMain/res/values-ne/strings.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/applanguage/SetLanguageUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguagesConfig.kt"
        ],
        "commitId" : "28123c07c9323e59574fd2586f1cf9a3937a7726",
        "timestamp" : 1790664338000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor app locale and language selection handling\u000a",
        "date" : "2026-09-29 12:15:38 +0530",
        "id" : "28123c07c9323e59574fd2586f1cf9a3937a7726",
        "msg" : "Refactor app locale and language selection handling",
        "paths" : [
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SetLanguageUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguageNames.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguagesConfig.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values-hi/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SetLanguageUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-appui-compose/src/androidMain/res/values-ne/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "app-android/src/main/kotlin/world/respect/shared/domain/applanguage/SetLanguageUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/values-ne/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/applanguage/LocaleSettingDelegateAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "app-android/src/main/kotlin/world/respect/shared/domain/applanguage/LocaleSettingDelegateAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values-ne/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-appui-compose/src/androidMain/res/values-hi/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "lib-appui-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/composeResources/values-hi/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/applanguage/SetLanguageUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguagesConfig.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguageNames.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/GetUiLanguagesUseCase.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/onboarding/OnboardingViewModel.kt"
        ],
        "commitId" : "b7184b42695fee4f0481386ea98d2df95933668b",
        "timestamp" : 1790678337000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Implement GetUiLanguagesUseCase and refactor language loading in ViewModels\u000a",
        "date" : "2026-09-29 16:08:57 +0530",
        "id" : "b7184b42695fee4f0481386ea98d2df95933668b",
        "msg" : "Implement GetUiLanguagesUseCase and refactor language loading in ViewModels",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/onboarding/OnboardingViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/GetUiLanguagesUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/006_001_user_set_language_on_app_test.yaml",
          "lib-appui-compose/src/androidMain/res/values-ne/strings.xml",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguageNames.kt",
          "app-android/src/main/AndroidManifest.xml",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguagesConfig.kt"
        ],
        "commitId" : "eb68f5d43a02a21360d8d9bf6dafcf299c66366a",
        "timestamp" : 1790684076000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Remove unsupported languages and update Android activity configChanges\u000a",
        "date" : "2026-09-29 17:44:36 +0530",
        "id" : "eb68f5d43a02a21360d8d9bf6dafcf299c66366a",
        "msg" : "Remove unsupported languages and update Android activity configChanges",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguageNames.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-appui-compose/src/androidMain/res/values-ne/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/006_001_user_set_language_on_app_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguagesConfig.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/AndroidManifest.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/006_001_user_set_language_on_app_test.yaml"
        ],
        "commitId" : "ac4943518ea31eb1900991e11b27d9974bd77b23",
        "timestamp" : 1790684262000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Update expected app title to \"Home\" in user set language test\u000a",
        "date" : "2026-09-29 17:47:42 +0530",
        "id" : "ac4943518ea31eb1900991e11b27d9974bd77b23",
        "msg" : "Update expected app title to \"Home\" in user set language test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/006_001_user_set_language_on_app_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/006_001_user_set_language_on_app_test.yaml"
        ],
        "commitId" : "4c14344e27b362ad437d2645d42d6428c6eed896",
        "timestamp" : 1790690223000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Update user set language Maestro test to verify Hindi localization\u000a",
        "date" : "2026-09-29 17:57:03 +0400",
        "id" : "4c14344e27b362ad437d2645d42d6428c6eed896",
        "msg" : "Update user set language Maestro test to verify Hindi localization",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/006_001_user_set_language_on_app_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguagesConfig.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/LanguageDropdown.kt"
        ],
        "commitId" : "640a5969e29bda554a60f76024682945a492e152",
        "timestamp" : 1790690720000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Extract getLanguageDisplayText helper and refactor locale selection\u000a",
        "date" : "2026-09-29 19:35:20 +0530",
        "id" : "640a5969e29bda554a60f76024682945a492e152",
        "msg" : "Extract getLanguageDisplayText helper and refactor locale selection",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/LanguageDropdown.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/applanguage/SupportedLanguagesConfig.kt"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
      "fullName" : "Anugraha"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
      "fullName" : "Mike Dawson"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj",
      "fullName" : "Nikunj Sharma"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
      "fullName" : "lipsa.behera"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
      "fullName" : "nikunj.sharma"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
      "fullName" : "mandvi.verma"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
      "fullName" : "noreply"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
      "fullName" : "Pooja Ravi"
    }
  ]
}