<freeStyleProject _class='hudson.model.FreeStyleProject'><action></action><action></action><action></action><action></action><action _class='hudson.plugins.jobConfigHistory.JobConfigHistoryProjectAction'></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'><displayUrl>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/</displayUrl></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'><stores></stores></action><description>dev-student-grouping</description><displayName>dev-student-grouping</displayName><fullDisplayName>dev-student-grouping</fullDisplayName><fullName>dev-student-grouping</fullName><name>dev-student-grouping</name><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/</url><buildable>true</buildable><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>47</buildNumber><marked><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#47</displayName><duration>186953</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #47</fullDisplayName><id>47</id><inProgress>false</inProgress><keepLog>false</keepLog><number>47</number><queueId>8555</queueId><result>SUCCESS</result><timestamp>1779248640993</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/47/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><commitId>cf4a9f42b8e7f871329c51279c628fd59fd02757</commitId><timestamp>1779104756000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Pass assignment activity id through learning unit detail to launch app use case.
</comment><date>2026-05-18 15:45:56 +0400</date><id>cf4a9f42b8e7f871329c51279c628fd59fd02757</id><msg>Pass assignment activity id through learning unit detail to launch app use case.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</affectedPath><affectedPath>respect-lib-util/build.gradle.kts</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt</affectedPath><commitId>50b45575b509674831d86091945b25b8e1275920</commitId><timestamp>1779107470000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.
</comment><date>2026-05-18 16:31:10 +0400</date><id>50b45575b509674831d86091945b25b8e1275920</id><msg>Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.</msg><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</file></path><path><editType>edit</editType><file>respect-lib-util/build.gradle.kts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt</affectedPath><commitId>175af5b50914120881058f512916023093144712</commitId><timestamp>1779126551000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Implement initial support for statement voiding.
</comment><date>2026-05-18 21:49:11 +0400</date><id>175af5b50914120881058f512916023093144712</id><msg>Implement initial support for statement voiding.</msg><path><editType>edit</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>c6dee1e5ab71a4595e2568c6d29ac442826472b6</commitId><timestamp>1779182286000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace.
</comment><date>2026-05-19 14:48:06 +0530</date><id>c6dee1e5ab71a4595e2568c6d29ac442826472b6</id><msg>Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Mandvi</shortDescription><userId>mandvi</userId><userName>Mandvi</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>46</buildNumber><marked><SHA1>7ed76169eeb9387064c7f35410467cbe364a0a2d</SHA1><branch><SHA1>7ed76169eeb9387064c7f35410467cbe364a0a2d</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>7ed76169eeb9387064c7f35410467cbe364a0a2d</SHA1><branch><SHA1>7ed76169eeb9387064c7f35410467cbe364a0a2d</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>7ed76169eeb9387064c7f35410467cbe364a0a2d</SHA1><branch><SHA1>7ed76169eeb9387064c7f35410467cbe364a0a2d</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#46</displayName><duration>160620</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #46</fullDisplayName><id>46</id><inProgress>false</inProgress><keepLog>false</keepLog><number>46</number><queueId>8530</queueId><result>SUCCESS</result><timestamp>1779181609719</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/46/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows/002_browse_lessons_test.yaml</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>.maestro/flows/subflows/admin_add_app.yaml</affectedPath><commitId>7ed76169eeb9387064c7f35410467cbe364a0a2d</commitId><timestamp>1779181547000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Update `ClazzDetailViewModel` to include groups with null account names and update Maestro flow assertions to use "Example Web App" and "Examples" labels.
</comment><date>2026-05-19 14:35:47 +0530</date><id>7ed76169eeb9387064c7f35410467cbe364a0a2d</id><msg>Update `ClazzDetailViewModel` to include groups with null account names and update Maestro flow assertions to use "Example Web App" and "Examples" labels.</msg><path><editType>edit</editType><file>.maestro/flows/002_browse_lessons_test.yaml</file></path><path><editType>edit</editType><file>.maestro/flows/subflows/admin_add_app.yaml</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Mandvi</shortDescription><userId>mandvi</userId><userName>Mandvi</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>45</buildNumber><marked><SHA1>8d45259b6908057fd1ddebf6773b3d636fe4fa8f</SHA1><branch><SHA1>8d45259b6908057fd1ddebf6773b3d636fe4fa8f</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>8d45259b6908057fd1ddebf6773b3d636fe4fa8f</SHA1><branch><SHA1>8d45259b6908057fd1ddebf6773b3d636fe4fa8f</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>8d45259b6908057fd1ddebf6773b3d636fe4fa8f</SHA1><branch><SHA1>8d45259b6908057fd1ddebf6773b3d636fe4fa8f</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#45</displayName><duration>249519</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #45</fullDisplayName><id>45</id><inProgress>false</inProgress><keepLog>false</keepLog><number>45</number><queueId>8525</queueId><result>SUCCESS</result><timestamp>1779174608653</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/45/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>04cc63c27b525bc12798a8f897fccd841f451d71</commitId><timestamp>1779163355000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Passing only groupId to the Student grouping detail .
Throwing exception if the school Url is null/inappropriate
Removed the Verb string
</comment><date>2026-05-19 09:32:35 +0530</date><id>04cc63c27b525bc12798a8f897fccd841f451d71</id><msg>Passing only groupId to the Student grouping detail .</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><commitId>bae9575d2e7be4ea90fb1e26e3223bc4009c4da6</commitId><timestamp>1779164429000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Update `ClazzDetailViewModel` and its UI to represent groups directly as `XapiGroup` objects rather than xAPI statements.
</comment><date>2026-05-19 09:50:29 +0530</date><id>bae9575d2e7be4ea90fb1e26e3223bc4009c4da6</id><msg>Update `ClazzDetailViewModel` and its UI to represent groups directly as `XapiGroup` objects rather than xAPI statements.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</affectedPath><commitId>2f87259c2279d55f85a9dbb875c6eba01ecec319</commitId><timestamp>1779165917000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Update UI and state management for student groupings in `ClazzDetailScreen` and `StudentGroupingDetailScreen`.
</comment><date>2026-05-19 10:15:17 +0530</date><id>2f87259c2279d55f85a9dbb875c6eba01ecec319</id><msg>Update UI and state management for student groupings in `ClazzDetailScreen` and `StudentGroupingDetailScreen`.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/edit/StudentGroupingEditScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><commitId>49d5618d2324fed67944714a6c66c21b899f58de</commitId><timestamp>1779167767000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `ClazzDetailScreen.kt` and `StudentGroupingEditScreen.kt` to improve list performance and error handling.
</comment><date>2026-05-19 10:46:07 +0530</date><id>49d5618d2324fed67944714a6c66c21b899f58de</id><msg>Refactor `ClazzDetailScreen.kt` and `StudentGroupingEditScreen.kt` to improve list performance and error handling.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/edit/StudentGroupingEditScreen.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/edit/StudentGroupingEditScreen.kt</affectedPath><commitId>07a352d6586dff8e2b0d34bafa70bf5de9554551</commitId><timestamp>1779167840000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `ClazzDetailScreen.kt` and `StudentGroupingEditScreen.kt` to improve list performance and error handling.
</comment><date>2026-05-19 10:47:20 +0530</date><id>07a352d6586dff8e2b0d34bafa70bf5de9554551</id><msg>Refactor `ClazzDetailScreen.kt` and `StudentGroupingEditScreen.kt` to improve list performance and error handling.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/edit/StudentGroupingEditScreen.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><commitId>8d45259b6908057fd1ddebf6773b3d636fe4fa8f</commitId><timestamp>1779174109000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `ClazzDetailScreen.kt` and `ClazzDetailViewModel.kt` to improve group ID validation and filter out groups with null account names.
</comment><date>2026-05-19 12:31:49 +0530</date><id>8d45259b6908057fd1ddebf6773b3d636fe4fa8f</id><msg>Refactor `ClazzDetailScreen.kt` and `ClazzDetailViewModel.kt` to improve group ID validation and filter out groups with null account names.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>44</buildNumber><marked><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><branch><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><branch><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><branch><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#44</displayName><duration>87266</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #44</fullDisplayName><id>44</id><inProgress>false</inProgress><keepLog>false</keepLog><number>44</number><queueId>8521</queueId><result>FAILURE</result><timestamp>1779162240993</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/44/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt</affectedPath><affectedPath>gradle/libs.versions.toml</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/.gitignore</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/build.gradle.kts</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDb.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt</affectedPath><affectedPath>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt</affectedPath><affectedPath>settings.gradle.kts</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt</affectedPath><commitId>2826c4ba92af36c30d981499671efe3768192b5b</commitId><timestamp>1777923705000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress adding embedded Nanohttpd based xapi server.
</comment><date>2026-05-04 23:41:45 +0400</date><id>2826c4ba92af36c30d981499671efe3768192b5b</id><msg>Work in progress adding embedded Nanohttpd based xapi server.</msg><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/build.gradle.kts</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt</file></path><path><editType>add</editType><file>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</file></path><path><editType>edit</editType><file>settings.gradle.kts</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/.gitignore</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDb.kt</file></path><path><editType>delete</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt</file></path><path><editType>edit</editType><file>gradle/libs.versions.toml</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</affectedPath><affectedPath>respect-lib-shared/build.gradle.kts</affectedPath><commitId>901a5b08da74d631ae8e8db83adf9ae8d0383e4a</commitId><timestamp>1777973593000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.
</comment><date>2026-05-05 13:33:13 +0400</date><id>901a5b08da74d631ae8e8db83adf9ae8d0383e4a</id><msg>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.</msg><path><editType>add</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path><path><editType>add</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/build.gradle.kts</file></path><path><editType>add</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>delete</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</affectedPath><commitId>56c69cf8141536edd9ca3a490e7a4d847406e073</commitId><timestamp>1777982700000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.
</comment><date>2026-05-05 16:05:00 +0400</date><id>56c69cf8141536edd9ca3a490e7a4d847406e073</id><msg>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.</msg><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</affectedPath><commitId>4c50dfefc4af552e7a8914ff22a87baa5a6e0125</commitId><timestamp>1778436234000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><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).
</comment><date>2026-05-10 22:03:54 +0400</date><id>4c50dfefc4af552e7a8914ff22a87baa5a6e0125</id><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).</msg><path><editType>edit</editType><file>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</affectedPath><commitId>fd821aaf134d6baa9a915c36fccfd80c49cfcbf6</commitId><timestamp>1778491957000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add note on canonical updates to permission recipe.
</comment><date>2026-05-11 13:32:37 +0400</date><id>fd821aaf134d6baa9a915c36fccfd80c49cfcbf6</id><msg>Add note on canonical updates to permission recipe.</msg><path><editType>edit</editType><file>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><commitId>b1f93cb7e0056227f44fbca69dc7a53f52ed2caf</commitId><timestamp>1778590018000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Merge dev-xapi changes.
</comment><date>2026-05-12 16:46:58 +0400</date><id>b1f93cb7e0056227f44fbca69dc7a53f52ed2caf</id><msg>Merge dev-xapi changes.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/Application.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt</affectedPath><affectedPath>respect-app-compose/build.gradle.kts</affectedPath><commitId>4513cf5f87165b746305c8498a57997e28a61f51</commitId><timestamp>1778692885000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update terms/conditions to use .well-known path on school directory server.
Bump version.
</comment><date>2026-05-13 21:21:25 +0400</date><id>4513cf5f87165b746305c8498a57997e28a61f51</id><msg>Update terms/conditions to use .well-known path on school directory server.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/build.gradle.kts</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/Application.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>CODE_OF_CONDUCT.md</affectedPath><commitId>230b80b2452d708b0978043e033e0a5826668285</commitId><timestamp>1778743774000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Add guideline on AI-generated content submission

Add explicit guidelines against submission of AI slop
</comment><date>2026-05-14 11:29:34 +0400</date><id>230b80b2452d708b0978043e033e0a5826668285</id><msg>Add guideline on AI-generated content submission</msg><path><editType>edit</editType><file>CODE_OF_CONDUCT.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>CODE_OF_CONDUCT.md</affectedPath><commitId>e5a71f872211b1adc6692b881a207ff34a1d3de0</commitId><timestamp>1778743821000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Clarify guidelines on submitting AI-generated content
</comment><date>2026-05-14 11:30:21 +0400</date><id>e5a71f872211b1adc6692b881a207ff34a1d3de0</id><msg>Clarify guidelines on submitting AI-generated content</msg><path><editType>edit</editType><file>CODE_OF_CONDUCT.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</affectedPath><commitId>1b761b2d7f5431b5d5a5eaa8050c5a271e92a7fa</commitId><timestamp>1778750991000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Initial xAPI embedded server implementation.

Add support for cross origin requests for embedded statements endpoint.
 Fix nanohttpd bodyAsBytes function
 Fix basic auth encoding/decoding
</comment><date>2026-05-14 13:29:51 +0400</date><id>1b761b2d7f5431b5d5a5eaa8050c5a271e92a7fa</id><msg>Initial xAPI embedded server implementation.</msg><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/Application.kt</affectedPath><commitId>1e990ff70a0085f5b22a53f3cf93da7cacc978ff</commitId><timestamp>1778762633000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix ktor path for xapi statements resource.
</comment><date>2026-05-14 16:43:53 +0400</date><id>1e990ff70a0085f5b22a53f3cf93da7cacc978ff</id><msg>Fix ktor path for xapi statements resource.</msg><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/Application.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</affectedPath><commitId>846633c662e52445f3613caeed6ebfa5457d972d</commitId><timestamp>1778768829000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Initial statement maker.
</comment><date>2026-05-14 18:27:09 +0400</date><id>846633c662e52445f3613caeed6ebfa5457d972d</id><msg>Initial statement maker.</msg><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</affectedPath><commitId>1bc6aeeb9246345ab46c4839c4a5728d7e8d0e51</commitId><timestamp>1778952646000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update statement maker to use a statement json from text area and actor from params.
Update LaunchAppUseCase to accept an assignment activity id.
</comment><date>2026-05-16 21:30:46 +0400</date><id>1bc6aeeb9246345ab46c4839c4a5728d7e8d0e51</id><msg>Update statement maker to use a statement json from text area and actor from params.</msg><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/script.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/audio.ogg</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/video.mp4</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/script.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/cover.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/index.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/audio.ogg</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/video.mp4</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png</affectedPath><commitId>30e70b9f21b72016986ca29770c01c87cd314d6a</commitId><timestamp>1778955365000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update example app structure and naming.
</comment><date>2026-05-16 22:16:05 +0400</date><id>30e70b9f21b72016986ca29770c01c87cd314d6a</id><msg>Update example app structure and naming.</msg><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/video.mp4</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/video.mp4</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.html</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/audio.ogg</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/cover.png</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/icon.png</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/index.json</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/script.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/script.js</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/audio.ogg</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js</affectedPath><affectedPath>respect-datalayer-repository/log/respect-server.2026-05-04.0.log</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico</affectedPath><affectedPath>respect-datalayer-repository/log/respect-server.2026-05-12.0.log</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt</affectedPath><commitId>6187e85e6df49136f148542a2076e86061721555</commitId><timestamp>1778956821000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add jstetris example.
</comment><date>2026-05-16 22:40:21 +0400</date><id>6187e85e6df49136f148542a2076e86061721555</id><msg>Add jstetris example.</msg><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png</file></path><path><editType>add</editType><file>respect-datalayer-repository/log/respect-server.2026-05-12.0.log</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js</file></path><path><editType>add</editType><file>respect-datalayer-repository/log/respect-server.2026-05-04.0.log</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/AndroidManifest.xml</affectedPath><commitId>62ccad8b6c976ed3de4ef7ac2ef6e8e401801ced</commitId><timestamp>1779005615000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update LaunchAppUseCaseAndroid to handle launching native app if app with a verified app link is available.

Otherwise fall back to using our own WebView Activity. Handle SDK30+ and pre-SDK30.
</comment><date>2026-05-17 12:13:35 +0400</date><id>62ccad8b6c976ed3de4ef7ac2ef6e8e401801ced</id><msg>Update LaunchAppUseCaseAndroid to handle launching native app if app with a verified app link is available.</msg><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/AndroidManifest.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</affectedPath><affectedPath>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt</affectedPath><commitId>c9c53997c97601c6ae6fcefb5c3be6229e17d946</commitId><timestamp>1779014144000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress: add header xapi header fields
</comment><date>2026-05-17 14:35:44 +0400</date><id>c9c53997c97601c6ae6fcefb5c3be6229e17d946</id><msg>Work in progress: add header xapi header fields</msg><path><editType>edit</editType><file>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-app-compose/build.gradle.kts</affectedPath><commitId>008215d71e69209d9c4fb0b24bc80ece11bbf289</commitId><timestamp>1779040758000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Bump version for xAPI preview
</comment><date>2026-05-17 21:59:18 +0400</date><id>008215d71e69209d9c4fb0b24bc80ece11bbf289</id><msg>Bump version for xAPI preview</msg><path><editType>edit</editType><file>respect-app-compose/build.gradle.kts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><commitId>752caaf8214d94e8e6f5ec089405c5095c785dc7</commitId><timestamp>1779101412000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Rename and document LaunchRequest properties.
</comment><date>2026-05-18 14:50:12 +0400</date><id>752caaf8214d94e8e6f5ec089405c5095c785dc7</id><msg>Rename and document LaunchRequest properties.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>43</buildNumber><marked><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#43</displayName><duration>208467</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #43</fullDisplayName><id>43</id><inProgress>false</inProgress><keepLog>false</keepLog><number>43</number><queueId>8489</queueId><result>SUCCESS</result><timestamp>1779075840994</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/43/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>42</buildNumber><marked><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#42</displayName><duration>181768</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #42</fullDisplayName><id>42</id><inProgress>false</inProgress><keepLog>false</keepLog><number>42</number><queueId>8459</queueId><result>SUCCESS</result><timestamp>1778989440993</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/42/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>41</buildNumber><marked><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#41</displayName><duration>185705</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #41</fullDisplayName><id>41</id><inProgress>false</inProgress><keepLog>false</keepLog><number>41</number><queueId>8429</queueId><result>SUCCESS</result><timestamp>1778903040994</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/41/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>40</buildNumber><marked><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><branch><SHA1>08f0bc6704852a5164543746b10806d21e6ad406</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#40</displayName><duration>145377</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #40</fullDisplayName><id>40</id><inProgress>false</inProgress><keepLog>false</keepLog><number>40</number><queueId>8394</queueId><result>SUCCESS</result><timestamp>1778816640994</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/40/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows/subflows/admin_add_new_teacher_to_class.yaml</affectedPath><commitId>ef75ce6a0b78f71e1da40ea165ec962bb1f8468e</commitId><timestamp>1778747039000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Update the Maestro subflow for adding a new teacher to a class by removing redundant steps to select the user role.
</comment><date>2026-05-14 13:53:59 +0530</date><id>ef75ce6a0b78f71e1da40ea165ec962bb1f8468e</id><msg>Update the Maestro subflow for adding a new teacher to a class by removing redundant steps to select the user role.</msg><path><editType>edit</editType><file>.maestro/flows/subflows/admin_add_new_teacher_to_class.yaml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows/001_003_login_using_school_link_test.yaml</affectedPath><affectedPath>.maestro/flows-test/001_005_add_school_self_registration_test.yaml</affectedPath><affectedPath>.maestro/flows/001_005_add_school_self_registration_test.yaml</affectedPath><affectedPath>.maestro/flows/002_browse_lessons_test.yaml</affectedPath><affectedPath>.maestro/flows-test/001_002_add_user_direct_test.yaml</affectedPath><affectedPath>.maestro/flows-test/002_browse_lessons_test.yaml</affectedPath><affectedPath>.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml</affectedPath><affectedPath>.maestro/flows-test/001_003_login_using_school_link_test.yaml</affectedPath><affectedPath>.maestro/flows-test/001_001_invite_users_using_qr_code_or_link_test.yaml</affectedPath><affectedPath>.maestro/flows/001_002_add_user_direct_test.yaml</affectedPath><commitId>3851c96810f424388bd3147b31d71550bfe6515a</commitId><timestamp>1778751243000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Relocate Maestro flow test files from `.maestro/flows/` to `.maestro/flows-test/`.

Testing single test
</comment><date>2026-05-14 15:04:03 +0530</date><id>3851c96810f424388bd3147b31d71550bfe6515a</id><msg>Relocate Maestro flow test files from `.maestro/flows/` to `.maestro/flows-test/`.</msg><path><editType>delete</editType><file>.maestro/flows/001_003_login_using_school_link_test.yaml</file></path><path><editType>delete</editType><file>.maestro/flows/001_005_add_school_self_registration_test.yaml</file></path><path><editType>delete</editType><file>.maestro/flows/002_browse_lessons_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows-test/001_002_add_user_direct_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows-test/002_browse_lessons_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows-test/001_001_invite_users_using_qr_code_or_link_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows-test/001_005_add_school_self_registration_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows-test/001_003_login_using_school_link_test.yaml</file></path><path><editType>delete</editType><file>.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml</file></path><path><editType>delete</editType><file>.maestro/flows/001_002_add_user_direct_test.yaml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows-test/001_005_add_school_self_registration_test.yaml</affectedPath><affectedPath>.maestro/flows/001_003_login_using_school_link_test.yaml</affectedPath><affectedPath>.maestro/flows-test/001_002_add_user_direct_test.yaml</affectedPath><affectedPath>.maestro/flows/002_browse_lessons_test.yaml</affectedPath><affectedPath>.maestro/flows/001_005_add_school_self_registration_test.yaml</affectedPath><affectedPath>.maestro/flows-test/002_browse_lessons_test.yaml</affectedPath><affectedPath>.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml</affectedPath><affectedPath>.maestro/flows-test/001_003_login_using_school_link_test.yaml</affectedPath><affectedPath>.maestro/flows-test/001_001_invite_users_using_qr_code_or_link_test.yaml</affectedPath><affectedPath>.maestro/flows/001_002_add_user_direct_test.yaml</affectedPath><commitId>08f0bc6704852a5164543746b10806d21e6ad406</commitId><timestamp>1778751818000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Move Maestro flow test files from `.maestro/flows-test/` to `.maestro/flows/`.
</comment><date>2026-05-14 15:13:38 +0530</date><id>08f0bc6704852a5164543746b10806d21e6ad406</id><msg>Move Maestro flow test files from `.maestro/flows-test/` to `.maestro/flows/`.</msg><path><editType>delete</editType><file>.maestro/flows-test/001_001_invite_users_using_qr_code_or_link_test.yaml</file></path><path><editType>delete</editType><file>.maestro/flows-test/001_002_add_user_direct_test.yaml</file></path><path><editType>delete</editType><file>.maestro/flows-test/001_005_add_school_self_registration_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows/002_browse_lessons_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows/001_002_add_user_direct_test.yaml</file></path><path><editType>delete</editType><file>.maestro/flows-test/001_003_login_using_school_link_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows/001_005_add_school_self_registration_test.yaml</file></path><path><editType>delete</editType><file>.maestro/flows-test/002_browse_lessons_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows/001_003_login_using_school_link_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Mandvi</shortDescription><userId>mandvi</userId><userName>Mandvi</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>39</buildNumber><marked><SHA1>cde8afe08eb19b0c097c5eb0b3ee82ed94afbd5e</SHA1><branch><SHA1>cde8afe08eb19b0c097c5eb0b3ee82ed94afbd5e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>cde8afe08eb19b0c097c5eb0b3ee82ed94afbd5e</SHA1><branch><SHA1>cde8afe08eb19b0c097c5eb0b3ee82ed94afbd5e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>cde8afe08eb19b0c097c5eb0b3ee82ed94afbd5e</SHA1><branch><SHA1>cde8afe08eb19b0c097c5eb0b3ee82ed94afbd5e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#39</displayName><duration>160219</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #39</fullDisplayName><id>39</id><inProgress>false</inProgress><keepLog>false</keepLog><number>39</number><queueId>8351</queueId><result>SUCCESS</result><timestamp>1778743842589</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/39/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>cde8afe08eb19b0c097c5eb0b3ee82ed94afbd5e</commitId><timestamp>1778743534000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Clean up unused imports and string resources in `ClazzDetailScreen.kt`.
</comment><date>2026-05-14 12:55:34 +0530</date><id>cde8afe08eb19b0c097c5eb0b3ee82ed94afbd5e</id><msg>Clean up unused imports and string resources in `ClazzDetailScreen.kt`.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/pooja</absoluteUrl><fullName>Pooja Ravi</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Mandvi</shortDescription><userId>mandvi</userId><userName>Mandvi</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>38</buildNumber><marked><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><branch><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><branch><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><branch><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#38</displayName><duration>81931</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #38</fullDisplayName><id>38</id><inProgress>false</inProgress><keepLog>false</keepLog><number>38</number><queueId>8350</queueId><result>FAILURE</result><timestamp>1778743499357</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/38/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/pooja</absoluteUrl><fullName>Pooja Ravi</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Pooja Ravi</shortDescription><userId>pooja</userId><userName>Pooja Ravi</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>37</buildNumber><marked><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><branch><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><branch><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><branch><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#37</displayName><duration>114469</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #37</fullDisplayName><id>37</id><inProgress>false</inProgress><keepLog>false</keepLog><number>37</number><queueId>8345</queueId><result>FAILURE</result><timestamp>1778741880232</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/37/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/pooja</absoluteUrl><fullName>Pooja Ravi</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>36</buildNumber><marked><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><branch><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><branch><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><branch><SHA1>1c2be5cfb15d36d6f8ae879154ae70144892782e</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#36</displayName><duration>103791</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #36</fullDisplayName><id>36</id><inProgress>false</inProgress><keepLog>false</keepLog><number>36</number><queueId>8342</queueId><result>FAILURE</result><timestamp>1778730240255</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/36/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-test-end-to-end/README.md</affectedPath><affectedPath>.maestro/flow-summary/001_002_add_user_direct_test.md</affectedPath><affectedPath>respect-test-end-to-end/test-description/001_003_login_using_school_link_test_description.md</affectedPath><affectedPath>respect-test-end-to-end/test-description/002_browse_lessons_test_description.md</affectedPath><affectedPath>.maestro/flow-summary/001_005_add_school_self_registration_test.md</affectedPath><affectedPath>.maestro/flow-summary/002_browse_lessons_test.md</affectedPath><affectedPath>.maestro/README.md</affectedPath><affectedPath>respect-test-end-to-end/test-description/001_001_invite_using_invite_code_test_description.md</affectedPath><affectedPath>.maestro/flow-summary/001_001_invite_users_using_qr_code_or_link_test.md</affectedPath><affectedPath>respect-test-end-to-end/test-description/001_002_add_user_direct_test_description.md</affectedPath><affectedPath>respect-test-end-to-end/test-description/001_005_add_school_self_registration_test_description.md</affectedPath><affectedPath>.maestro/flow-summary/001_003_login_using_school_link_test.md</affectedPath><affectedPath>respect-test-end-to-end/test-description/003_teacher_user_assigns_assignment_to_a_class_test_description.md</affectedPath><affectedPath>respect-test-end-to-end/test-description/006_user_signup_using_passkey_test_description.md</affectedPath><affectedPath>.maestro/flow-summary/003_admin_user_assigns_assignment_to_a_class_test.md</affectedPath><commitId>507c9fb296572ecad9badcd988357fc80e9ab3c1</commitId><timestamp>1778061233000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/pooja</absoluteUrl><fullName>Pooja Ravi</fullName></author><authorEmail>pooja@ustadmobile.com</authorEmail><comment>Add Maestro flow summary documentation for core features.
</comment><date>2026-05-06 13:53:53 +0400</date><id>507c9fb296572ecad9badcd988357fc80e9ab3c1</id><msg>Add Maestro flow summary documentation for core features.</msg><path><editType>add</editType><file>.maestro/flow-summary/002_browse_lessons_test.md</file></path><path><editType>edit</editType><file>.maestro/README.md</file></path><path><editType>add</editType><file>.maestro/flow-summary/001_005_add_school_self_registration_test.md</file></path><path><editType>add</editType><file>.maestro/flow-summary/003_admin_user_assigns_assignment_to_a_class_test.md</file></path><path><editType>delete</editType><file>respect-test-end-to-end/test-description/002_browse_lessons_test_description.md</file></path><path><editType>delete</editType><file>respect-test-end-to-end/test-description/001_005_add_school_self_registration_test_description.md</file></path><path><editType>add</editType><file>.maestro/flow-summary/001_002_add_user_direct_test.md</file></path><path><editType>add</editType><file>.maestro/flow-summary/001_001_invite_users_using_qr_code_or_link_test.md</file></path><path><editType>delete</editType><file>respect-test-end-to-end/test-description/001_001_invite_using_invite_code_test_description.md</file></path><path><editType>add</editType><file>.maestro/flow-summary/001_003_login_using_school_link_test.md</file></path><path><editType>delete</editType><file>respect-test-end-to-end/test-description/001_003_login_using_school_link_test_description.md</file></path><path><editType>delete</editType><file>respect-test-end-to-end/test-description/006_user_signup_using_passkey_test_description.md</file></path><path><editType>delete</editType><file>respect-test-end-to-end/test-description/003_teacher_user_assigns_assignment_to_a_class_test_description.md</file></path><path><editType>delete</editType><file>respect-test-end-to-end/test-description/001_002_add_user_direct_test_description.md</file></path><path><editType>delete</editType><file>respect-test-end-to-end/README.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/README.md</affectedPath><commitId>426ab425c9387e68a05bb151d74e49906521e977</commitId><timestamp>1778061421000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/pooja</absoluteUrl><fullName>Pooja Ravi</fullName></author><authorEmail>pooja@ustadmobile.com</authorEmail><comment>Update `.maestro/README.md` formatting.
</comment><date>2026-05-06 13:57:01 +0400</date><id>426ab425c9387e68a05bb151d74e49906521e977</id><msg>Update `.maestro/README.md` formatting.</msg><path><editType>edit</editType><file>.maestro/README.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/README.md</affectedPath><affectedPath>.maestro/flow-summary/001_002_add_user_direct_test.md</affectedPath><affectedPath>.maestro/flow-summary/001_001_invite_users_using_qr_code_or_link_test.md</affectedPath><affectedPath>.maestro/flow-summary/001_003_login_using_school_link_test.md</affectedPath><affectedPath>.maestro/flow-summary/001_005_add_school_self_registration_test.md</affectedPath><affectedPath>.maestro/flow-summary/002_browse_lessons_test.md</affectedPath><affectedPath>.maestro/flow-summary/003_admin_user_assigns_assignment_to_a_class_test.md</affectedPath><commitId>df4bd8e47a102ff17962776fc91467fe9276b59f</commitId><timestamp>1778063302000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/pooja</absoluteUrl><fullName>Pooja Ravi</fullName></author><authorEmail>pooja@ustadmobile.com</authorEmail><comment>Refactor Maestro test documentation by consolidating flow summaries.
</comment><date>2026-05-06 14:28:22 +0400</date><id>df4bd8e47a102ff17962776fc91467fe9276b59f</id><msg>Refactor Maestro test documentation by consolidating flow summaries.</msg><path><editType>delete</editType><file>.maestro/flow-summary/001_005_add_school_self_registration_test.md</file></path><path><editType>delete</editType><file>.maestro/flow-summary/001_003_login_using_school_link_test.md</file></path><path><editType>delete</editType><file>.maestro/flow-summary/001_001_invite_users_using_qr_code_or_link_test.md</file></path><path><editType>delete</editType><file>.maestro/flow-summary/001_002_add_user_direct_test.md</file></path><path><editType>delete</editType><file>.maestro/flow-summary/003_admin_user_assigns_assignment_to_a_class_test.md</file></path><path><editType>edit</editType><file>.maestro/README.md</file></path><path><editType>delete</editType><file>.maestro/flow-summary/002_browse_lessons_test.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/README.md</affectedPath><commitId>c1bfccdbe55284ca41957899c8bb93a7f3fdddad</commitId><timestamp>1778063496000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/pooja</absoluteUrl><fullName>Pooja Ravi</fullName></author><authorEmail>pooja@ustadmobile.com</authorEmail><comment>Update Maestro README.md to use numbered lists for test flow descriptions.
</comment><date>2026-05-06 14:31:36 +0400</date><id>c1bfccdbe55284ca41957899c8bb93a7f3fdddad</id><msg>Update Maestro README.md to use numbered lists for test flow descriptions.</msg><path><editType>edit</editType><file>.maestro/README.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/README.md</affectedPath><commitId>efb7a28407916d1ed6c4a7ae740a0426c4cce9a1</commitId><timestamp>1778067487000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/pooja</absoluteUrl><fullName>Pooja Ravi</fullName></author><authorEmail>pooja@ustadmobile.com</authorEmail><comment>Update Maestro README with detailed steps for user management and school registration test flows.
</comment><date>2026-05-06 15:38:07 +0400</date><id>efb7a28407916d1ed6c4a7ae740a0426c4cce9a1</id><msg>Update Maestro README with detailed steps for user management and school registration test flows.</msg><path><editType>edit</editType><file>.maestro/README.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCaseImpl.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</affectedPath><commitId>67d616e77479b2ecf04a181441330e602a1cb6b7</commitId><timestamp>1778091684000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><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.

Permission 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.
</comment><date>2026-05-06 22:21:24 +0400</date><id>67d616e77479b2ecf04a181441330e602a1cb6b7</id><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.</msg><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCaseImpl.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClassPendingPersonListItem.kt</affectedPath><commitId>93e8ed5b9f0b2414facb4a76d63f604d64d9a31b</commitId><timestamp>1778094911000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix for issue #231.

When 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).
</comment><date>2026-05-06 23:15:11 +0400</date><id>93e8ed5b9f0b2414facb4a76d63f604d64d9a31b</id><msg>Fix for issue #231.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClassPendingPersonListItem.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><commitId>a500ce454fb2ba95f7643cb028b8cfd7520e0dab</commitId><timestamp>1778136509000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix mistake on xapi statement query: using incorrect verb field
</comment><date>2026-05-07 10:48:29 +0400</date><id>a500ce454fb2ba95f7643cb028b8cfd7520e0dab</id><msg>Fix mistake on xapi statement query: using incorrect verb field</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><commitId>df8580a5381a93f08e6dbc95896003ad16b9888b</commitId><timestamp>1778136729000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix mistake on xapi resource: wrong parameter for until.
</comment><date>2026-05-07 10:52:09 +0400</date><id>df8580a5381a93f08e6dbc95896003ad16b9888b</id><msg>Fix mistake on xapi resource: wrong parameter for until.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt</affectedPath><commitId>de6e9a83bbf380cc39f10da49e4bdca96d65a1fc</commitId><timestamp>1778144240000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Issue #231

Fix logic error that prevented handling admin approval for teacher joining class. Student joining class was working as expected.
</comment><date>2026-05-07 12:57:20 +0400</date><id>de6e9a83bbf380cc39f10da49e4bdca96d65a1fc</id><msg>Issue #231</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml</affectedPath><affectedPath>.maestro/flows-disabled/003_admin_user_assigns_assignment_to_a_class_test.yaml</affectedPath><commitId>69f813221401eb23ef0374d7ef62e1d649005926</commitId><timestamp>1778252973000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Disable flow 003 until new xAPI based assignment branch is merged.
</comment><date>2026-05-08 19:09:33 +0400</date><id>69f813221401eb23ef0374d7ef62e1d649005926</id><msg>Disable flow 003 until new xAPI based assignment branch is merged.</msg><path><editType>delete</editType><file>.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows-disabled/003_admin_user_assigns_assignment_to_a_class_test.yaml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/Application.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/account/invite/username/UsernameSuggestionUseCaseServer.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/account/invite/username/checkusernameunique/CheckUsernameUniqueUseCaseServer.kt</affectedPath><affectedPath>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/createaccount/CreateAccountScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCase.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/routes/username/checkusernameunique/CheckUsernameUniqueRoute.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCaseClient.kt</affectedPath><commitId>f57c392693352718885d4fc16cde4b3c71480fb5</commitId><timestamp>1778499793000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Check username unique during invitation acceptance process (issue #232).
</comment><date>2026-05-11 15:43:13 +0400</date><id>f57c392693352718885d4fc16cde4b3c71480fb5</id><msg>Check username unique during invitation acceptance process (issue #232).</msg><path><editType>add</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCase.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/Application.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/account/invite/username/UsernameSuggestionUseCaseServer.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt</file></path><path><editType>add</editType><file>respect-server/src/main/kotlin/world/respect/server/account/invite/username/checkusernameunique/CheckUsernameUniqueUseCaseServer.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/createaccount/CreateAccountScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>add</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/username/checkusernameunique/CheckUsernameUniqueUseCaseClient.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</file></path><path><editType>add</editType><file>respect-server/src/main/kotlin/world/respect/server/routes/username/checkusernameunique/CheckUsernameUniqueRoute.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt</affectedPath><commitId>f80a98b0700c71f29761383f0d1825474d323c49</commitId><timestamp>1778506659000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Apply username unique check to when admin sets a username manually.
</comment><date>2026-05-11 17:37:39 +0400</date><id>f80a98b0700c71f29761383f0d1825474d323c49</id><msg>Apply username unique check to when admin sets a username manually.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</affectedPath><commitId>8f8b35910f242ef2abdf0ecc542df733be8f66dc</commitId><timestamp>1778506944000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Correct visibility of floating action button on PersonListViewModel.kt and update to use common GetWritableRolesUseCase
</comment><date>2026-05-11 17:42:24 +0400</date><id>8f8b35910f242ef2abdf0ecc542df733be8f66dc</id><msg>Correct visibility of floating action button on PersonListViewModel.kt and update to use common GetWritableRolesUseCase</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonAdapters.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/composites/PersonListDetails.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListItem.kt</affectedPath><commitId>6252aff4599c9374493601a1ea8c1b0a520e2d37</commitId><timestamp>1778568050000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Show role on PersonListScreen.
When selecting people to add to class, filter by role (as per #237).
</comment><date>2026-05-12 10:40:50 +0400</date><id>6252aff4599c9374493601a1ea8c1b0a520e2d37</id><msg>Show role on PersonListScreen.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/adapters/PersonAdapters.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/composites/PersonListDetails.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListItem.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</affectedPath><commitId>ab5a99a59234259c334be4a2fb2f86b32ba5f558</commitId><timestamp>1778571262000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Show error snackbar when no valid link is found.
Fix handling of opening lessons from horizontal pager on app detail screen (Issue #229).
</comment><date>2026-05-12 11:34:22 +0400</date><id>ab5a99a59234259c334be4a2fb2f86b32ba5f558</id><msg>Show error snackbar when no valid link is found.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateTimeField.kt</affectedPath><affectedPath>respect-app-compose/build.gradle.kts</affectedPath><commitId>a3ad308646f86af215e35299a44e2d6fb8a29738</commitId><timestamp>1778576588000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Bump version and change assignment label.
</comment><date>2026-05-12 13:03:08 +0400</date><id>a3ad308646f86af215e35299a44e2d6fb8a29738</id><msg>Bump version and change assignment label.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateTimeField.kt</file></path><path><editType>edit</editType><file>respect-app-compose/build.gradle.kts</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows-disable/003_admin_user_assigns_assignment_to_a_class_test.yaml</affectedPath><commitId>98c538d4013d2fb824a0b81e8b525357e1b0ef7c</commitId><timestamp>1778667647000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Merge dev xapi
</comment><date>2026-05-13 15:50:47 +0530</date><id>98c538d4013d2fb824a0b81e8b525357e1b0ef7c</id><msg>Merge dev xapi</msg><path><editType>delete</editType><file>.maestro/flows-disable/003_admin_user_assigns_assignment_to_a_class_test.yaml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><commitId>1c2be5cfb15d36d6f8ae879154ae70144892782e</commitId><timestamp>1778667801000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Clean up unused imports and string resources in `ClazzDetailScreen.kt`.
</comment><date>2026-05-13 15:53:21 +0530</date><id>1c2be5cfb15d36d6f8ae879154ae70144892782e</id><msg>Clean up unused imports and string resources in `ClazzDetailScreen.kt`.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/pooja</absoluteUrl><fullName>Pooja Ravi</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>35</buildNumber><marked><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><branch><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><branch><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><branch><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#35</displayName><duration>186568</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #35</fullDisplayName><id>35</id><inProgress>false</inProgress><keepLog>false</keepLog><number>35</number><queueId>8302</queueId><result>SUCCESS</result><timestamp>1778643840254</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/35/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>34</buildNumber><marked><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><branch><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><branch><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><branch><SHA1>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#34</displayName><duration>136680</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #34</fullDisplayName><id>34</id><inProgress>false</inProgress><keepLog>false</keepLog><number>34</number><queueId>8262</queueId><result>SUCCESS</result><timestamp>1778557440255</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/34/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml</affectedPath><affectedPath>.maestro/flows-disable/003_admin_user_assigns_assignment_to_a_class_test.yaml</affectedPath><commitId>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</commitId><timestamp>1778498164000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>flow 003 moved to disabled flow folder
</comment><date>2026-05-11 16:46:04 +0530</date><id>b06e5a9c1367f33459a2e63ab62ffe1f3b9562dd</id><msg>flow 003 moved to disabled flow folder</msg><path><editType>add</editType><file>.maestro/flows-disable/003_admin_user_assigns_assignment_to_a_class_test.yaml</file></path><path><editType>delete</editType><file>.maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>33</buildNumber><marked><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#33</displayName><duration>191605</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #33</fullDisplayName><id>33</id><inProgress>false</inProgress><keepLog>false</keepLog><number>33</number><queueId>8216</queueId><result>SUCCESS</result><timestamp>1778471040255</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/33/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>32</buildNumber><marked><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#32</displayName><duration>188740</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #32</fullDisplayName><id>32</id><inProgress>false</inProgress><keepLog>false</keepLog><number>32</number><queueId>8185</queueId><result>SUCCESS</result><timestamp>1778384640255</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/32/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>31</buildNumber><marked><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#31</displayName><duration>161750</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #31</fullDisplayName><id>31</id><inProgress>false</inProgress><keepLog>false</keepLog><number>31</number><queueId>8148</queueId><result>SUCCESS</result><timestamp>1778298240255</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/31/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>30</buildNumber><marked><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><branch><SHA1>c7e972151ef69a2f0c6e7d478ebb9099b94aa4c3</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#30</displayName><duration>161274</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #30</fullDisplayName><id>30</id><inProgress>false</inProgress><keepLog>false</keepLog><number>30</number><queueId>8103</queueId><result>SUCCESS</result><timestamp>1778211840255</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/30/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><commitId>a500ce454fb2ba95f7643cb028b8cfd7520e0dab</commitId><timestamp>1778136509000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix mistake on xapi statement query: using incorrect verb field
</comment><date>2026-05-07 10:48:29 +0400</date><id>a500ce454fb2ba95f7643cb028b8cfd7520e0dab</id><msg>Fix mistake on xapi statement query: using incorrect verb field</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><commitId>df8580a5381a93f08e6dbc95896003ad16b9888b</commitId><timestamp>1778136729000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix mistake on xapi resource: wrong parameter for until.
</comment><date>2026-05-07 10:52:09 +0400</date><id>df8580a5381a93f08e6dbc95896003ad16b9888b</id><msg>Fix mistake on xapi resource: wrong parameter for until.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><commitId>0f831ad9493d387cf46c2a8fb465f6568b0da435</commitId><timestamp>1778147025000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to streamline account data handling and improve xAPI statement creation.

- Remove `selectedAccount` and helper properties from `StudentGroupingDetailUiState` and `StudentGroupingEditUiState`.
- Fetch the person data directly from `respectAccountManager.selectedAccountAndPersonFlow` when needed for xAPI statements.
- Replace `viewModelScope.launch` with `launchWithLoadingIndicator` in `onConfirmDeleteGroup` and `onSaveGroup`.
- Clean up the `StudentGroupingEditViewModel` initialization by removing the manual collection of the account flow.
- Format navigation logic in `StudentGroupingEditViewModel` for better readability.
</comment><date>2026-05-07 15:13:45 +0530</date><id>0f831ad9493d387cf46c2a8fb465f6568b0da435</id><msg>Refactor `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to streamline account data handling and improve xAPI statement creation.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>29</buildNumber><marked><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><branch><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><branch><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><branch><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#29</displayName><duration>187512</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #29</fullDisplayName><id>29</id><inProgress>false</inProgress><keepLog>false</keepLog><number>29</number><queueId>8063</queueId><result>SUCCESS</result><timestamp>1778125440255</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/29/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Mandvi</shortDescription><userId>mandvi</userId><userName>Mandvi</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>28</buildNumber><marked><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><branch><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><branch><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><branch><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#28</displayName><duration>194110</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #28</fullDisplayName><id>28</id><inProgress>false</inProgress><keepLog>false</keepLog><number>28</number><queueId>8042</queueId><result>SUCCESS</result><timestamp>1778080010901</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/28/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>30b418c762d16bffc7a8c22afe51e2b582a2201c</commitId><timestamp>1778047731000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Add `statementId` to student grouping navigation routes and update associated ViewModels to track and pass xAPI statement identifiers.

Specific changes:
* Add optional `statementId` parameter to the `StudentGroupingDetail` route.
* Update `ClazzDetailViewModel` to extract `statementId` from xAPI statements and pass it when navigating to group details.
* Update `StudentGroupingEditViewModel` to store the `statementId` from existing groups and include it in navigation commands.
* Include `statementId` in `GroupDisplayData` and UI states for better tracking of group-related xAPI statements.
* Add debug logging for group and statement identifiers across Clazz Detail, Student Grouping Detail, and Edit screens.
</comment><date>2026-05-06 11:38:51 +0530</date><id>30b418c762d16bffc7a8c22afe51e2b582a2201c</id><msg>Add `statementId` to student grouping navigation routes and update associated ViewModels to track and pass xAPI statement identifiers.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><commitId>fe27bd6632e551978700e8d6748fe0b20d922778</commitId><timestamp>1778051894000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Implement xAPI statement voiding when updating a student group in `StudentGroupingEditViewModel`. When editing an existing group, a voiding statement is sent for the old statement ID before posting the updated group information as a new statement.
</comment><date>2026-05-06 12:48:14 +0530</date><id>fe27bd6632e551978700e8d6748fe0b20d922778</id><msg>Implement xAPI statement voiding when updating a student group in `StudentGroupingEditViewModel`. When editing an existing group, a voiding statement is sent for the old statement ID before posting the updated group information as a new statement.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>30117f6fdb41952aeee25aa4c969587ff77923b3</commitId><timestamp>1778052038000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Remove debug logging from `ClazzDetailViewModel` and `StudentGroupingEditViewModel`.
</comment><date>2026-05-06 12:50:38 +0530</date><id>30117f6fdb41952aeee25aa4c969587ff77923b3</id><msg>Remove debug logging from `ClazzDetailViewModel` and `StudentGroupingEditViewModel`.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><commitId>11a551bd4e8d3d174fb8ad0c741a17645458553e</commitId><timestamp>1778053433000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups.
</comment><date>2026-05-06 13:13:53 +0530</date><id>11a551bd4e8d3d174fb8ad0c741a17645458553e</id><msg>Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>e2640a32498a18e7b559270b070601fbe44e8d98</commitId><timestamp>1778053509000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups.
</comment><date>2026-05-06 13:15:09 +0530</date><id>e2640a32498a18e7b559270b070601fbe44e8d98</id><msg>Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><commitId>3bc78c66189998462c4828aec18cb72266b2406c</commitId><timestamp>1778060173000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Simplify xAPI statement retrieval by using timestamps to identify the latest group state and refactor `StudentGroupingDetailViewModel` to inject `NavResultReturner` via the constructor.
</comment><date>2026-05-06 15:06:13 +0530</date><id>3bc78c66189998462c4828aec18cb72266b2406c</id><msg>Simplify xAPI statement retrieval by using timestamps to identify the latest group state and refactor `StudentGroupingDetailViewModel` to inject `NavResultReturner` via the constructor.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>55392bf9c408c8d50c9b1b326e58defaaf48fbb0</commitId><timestamp>1778060753000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `ClazzDetailViewModel.kt` to improve code formatting and update enrollment removal logic to mark records as `TO_BE_DELETED` if they were created on the current day.
</comment><date>2026-05-06 15:15:53 +0530</date><id>55392bf9c408c8d50c9b1b326e58defaaf48fbb0</id><msg>Refactor `ClazzDetailViewModel.kt` to improve code formatting and update enrollment removal logic to mark records as `TO_BE_DELETED` if they were created on the current day.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><commitId>7089f572a2e4338cbf85a73e3f68ca418ffef78b</commitId><timestamp>1778061683000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Clean up whitespace in `StudentGroupingDetailViewModel.kt`.
</comment><date>2026-05-06 15:31:23 +0530</date><id>7089f572a2e4338cbf85a73e3f68ca418ffef78b</id><msg>Clean up whitespace in `StudentGroupingDetailViewModel.kt`.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntity.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/edit/StudentGroupingEditScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><commitId>5288f96e0bf0b655131f9b961f95396d0e7adad7</commitId><timestamp>1778064553000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Implement xAPI group deletion and refine the student grouping data model.

- Implement `onConfirmDeleteGroup` in `StudentGroupingDetailViewModel` using xAPI `VOIDED` statements.
- Update `StudentGroupingDetailUiState` to include the selected account and helper properties for person name and ID.
- Remove unused `metadata` field and related `GROUP_IDS` constant from the `Clazz` model and `ClassEntity` database schema.
- Fix a bug in `XapiStatementEntityDao` and `XapiStatementEntityJsonDao` where `statementVerbId` was incorrectly referenced as `statementVerbUid`.
- Clean up UI code in `StudentGroupingEditScreen` and `StudentGroupingDetailScreen`, including improved paging keys and formatting.
- Remove the unused `findGroupByAccountNameAsync` from `XapiActorDao`.
- Define `SAVED` and `VOIDED` display constants in `XapiVerb`.
</comment><date>2026-05-06 16:19:13 +0530</date><id>5288f96e0bf0b655131f9b961f95396d0e7adad7</id><msg>Implement xAPI group deletion and refine the student grouping data model.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/edit/StudentGroupingEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt</affectedPath><commitId>1c842b5af1e1e2f61121758243b8b6c49d791ef9</commitId><timestamp>1778067035000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Relocate the `isIdentified` property within `XapiGroup.kt` and remove trailing whitespace.
</comment><date>2026-05-06 17:00:35 +0530</date><id>1c842b5af1e1e2f61121758243b8b6c49d791ef9</id><msg>Relocate the `isIdentified` property within `XapiGroup.kt` and remove trailing whitespace.</msg><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><commitId>c284dc329e847b6f2a932ca1bb931e97d49b15a8</commitId><timestamp>1778070302000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Update `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to support direct xAPI statement lookups and explicit statement ID generation.

- Update `StudentGroupingDetailViewModel` to query xAPI statements by `statementId` if available in the route, falling back to verb and activity filters.
- Modify `StudentGroupingEditViewModel` to pre-generate a `Uuid` for new xAPI statements and pass it to the `StudentGroupingDetail` navigation route.
</comment><date>2026-05-06 17:55:02 +0530</date><id>c284dc329e847b6f2a932ca1bb931e97d49b15a8</id><msg>Update `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to support direct xAPI statement lookups and explicit statement ID generation.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><commitId>cdd5bc05dcafa8d489d1e27737e4006c20e8caab</commitId><timestamp>1778072049000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor xAPI statement retrieval and fix database DAO inconsistencies.

- Simplify `loadGroupDetail` in `StudentGroupingDetailViewModel` to query by verb and activity only, removing direct lookup by statement ID.
- Fix a bug in `XapiStatementEntityDao` and `XapiStatementEntityJsonDao` where `statementVerbId` was incorrectly used instead of `statementVerbUid`.
- Clean up indentation and code formatting in `StudentGroupingEditViewModel`.
- In `StudentGroupingEditViewModel`, remove manual statement ID generation and rely on the model-generated ID for navigation.
- Remove unused `Uuid` import in `StudentGroupingDetailViewModel`.
</comment><date>2026-05-06 18:24:09 +0530</date><id>cdd5bc05dcafa8d489d1e27737e4006c20e8caab</id><msg>Refactor xAPI statement retrieval and fix database DAO inconsistencies.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</affectedPath><commitId>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</commitId><timestamp>1778079920000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Clean up code formatting and simplify comments.

- Remove unnecessary empty line in `StudentGroupingDetailScreen.kt`.
- Simplify the comment explaining the xAPI statement sorting logic in `ClazzDetailViewModel.kt`.
</comment><date>2026-05-06 20:35:20 +0530</date><id>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</id><msg>Clean up code formatting and simplify comments.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit></build><color>blue</color><firstBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Mandvi</shortDescription><userId>mandvi</userId><userName>Mandvi</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>28</buildNumber><marked><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><branch><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><branch><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><branch><SHA1>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#28</displayName><duration>194110</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #28</fullDisplayName><id>28</id><inProgress>false</inProgress><keepLog>false</keepLog><number>28</number><queueId>8042</queueId><result>SUCCESS</result><timestamp>1778080010901</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/28/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>30b418c762d16bffc7a8c22afe51e2b582a2201c</commitId><timestamp>1778047731000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Add `statementId` to student grouping navigation routes and update associated ViewModels to track and pass xAPI statement identifiers.

Specific changes:
* Add optional `statementId` parameter to the `StudentGroupingDetail` route.
* Update `ClazzDetailViewModel` to extract `statementId` from xAPI statements and pass it when navigating to group details.
* Update `StudentGroupingEditViewModel` to store the `statementId` from existing groups and include it in navigation commands.
* Include `statementId` in `GroupDisplayData` and UI states for better tracking of group-related xAPI statements.
* Add debug logging for group and statement identifiers across Clazz Detail, Student Grouping Detail, and Edit screens.
</comment><date>2026-05-06 11:38:51 +0530</date><id>30b418c762d16bffc7a8c22afe51e2b582a2201c</id><msg>Add `statementId` to student grouping navigation routes and update associated ViewModels to track and pass xAPI statement identifiers.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><commitId>fe27bd6632e551978700e8d6748fe0b20d922778</commitId><timestamp>1778051894000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Implement xAPI statement voiding when updating a student group in `StudentGroupingEditViewModel`. When editing an existing group, a voiding statement is sent for the old statement ID before posting the updated group information as a new statement.
</comment><date>2026-05-06 12:48:14 +0530</date><id>fe27bd6632e551978700e8d6748fe0b20d922778</id><msg>Implement xAPI statement voiding when updating a student group in `StudentGroupingEditViewModel`. When editing an existing group, a voiding statement is sent for the old statement ID before posting the updated group information as a new statement.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>30117f6fdb41952aeee25aa4c969587ff77923b3</commitId><timestamp>1778052038000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Remove debug logging from `ClazzDetailViewModel` and `StudentGroupingEditViewModel`.
</comment><date>2026-05-06 12:50:38 +0530</date><id>30117f6fdb41952aeee25aa4c969587ff77923b3</id><msg>Remove debug logging from `ClazzDetailViewModel` and `StudentGroupingEditViewModel`.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><commitId>11a551bd4e8d3d174fb8ad0c741a17645458553e</commitId><timestamp>1778053433000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups.
</comment><date>2026-05-06 13:13:53 +0530</date><id>11a551bd4e8d3d174fb8ad0c741a17645458553e</id><msg>Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>e2640a32498a18e7b559270b070601fbe44e8d98</commitId><timestamp>1778053509000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups.
</comment><date>2026-05-06 13:15:09 +0530</date><id>e2640a32498a18e7b559270b070601fbe44e8d98</id><msg>Update `ClazzDetailViewModel`, `StudentGroupingDetailViewModel`, and `StudentGroupingEditViewModel` to filter out voided xAPI statements when retrieving groups.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><commitId>3bc78c66189998462c4828aec18cb72266b2406c</commitId><timestamp>1778060173000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Simplify xAPI statement retrieval by using timestamps to identify the latest group state and refactor `StudentGroupingDetailViewModel` to inject `NavResultReturner` via the constructor.
</comment><date>2026-05-06 15:06:13 +0530</date><id>3bc78c66189998462c4828aec18cb72266b2406c</id><msg>Simplify xAPI statement retrieval by using timestamps to identify the latest group state and refactor `StudentGroupingDetailViewModel` to inject `NavResultReturner` via the constructor.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>55392bf9c408c8d50c9b1b326e58defaaf48fbb0</commitId><timestamp>1778060753000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `ClazzDetailViewModel.kt` to improve code formatting and update enrollment removal logic to mark records as `TO_BE_DELETED` if they were created on the current day.
</comment><date>2026-05-06 15:15:53 +0530</date><id>55392bf9c408c8d50c9b1b326e58defaaf48fbb0</id><msg>Refactor `ClazzDetailViewModel.kt` to improve code formatting and update enrollment removal logic to mark records as `TO_BE_DELETED` if they were created on the current day.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><commitId>7089f572a2e4338cbf85a73e3f68ca418ffef78b</commitId><timestamp>1778061683000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Clean up whitespace in `StudentGroupingDetailViewModel.kt`.
</comment><date>2026-05-06 15:31:23 +0530</date><id>7089f572a2e4338cbf85a73e3f68ca418ffef78b</id><msg>Clean up whitespace in `StudentGroupingDetailViewModel.kt`.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntity.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/edit/StudentGroupingEditScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><commitId>5288f96e0bf0b655131f9b961f95396d0e7adad7</commitId><timestamp>1778064553000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Implement xAPI group deletion and refine the student grouping data model.

- Implement `onConfirmDeleteGroup` in `StudentGroupingDetailViewModel` using xAPI `VOIDED` statements.
- Update `StudentGroupingDetailUiState` to include the selected account and helper properties for person name and ID.
- Remove unused `metadata` field and related `GROUP_IDS` constant from the `Clazz` model and `ClassEntity` database schema.
- Fix a bug in `XapiStatementEntityDao` and `XapiStatementEntityJsonDao` where `statementVerbId` was incorrectly referenced as `statementVerbUid`.
- Clean up UI code in `StudentGroupingEditScreen` and `StudentGroupingDetailScreen`, including improved paging keys and formatting.
- Remove the unused `findGroupByAccountNameAsync` from `XapiActorDao`.
- Define `SAVED` and `VOIDED` display constants in `XapiVerb`.
</comment><date>2026-05-06 16:19:13 +0530</date><id>5288f96e0bf0b655131f9b961f95396d0e7adad7</id><msg>Implement xAPI group deletion and refine the student grouping data model.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/edit/StudentGroupingEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActorDao.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt</affectedPath><commitId>1c842b5af1e1e2f61121758243b8b6c49d791ef9</commitId><timestamp>1778067035000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Relocate the `isIdentified` property within `XapiGroup.kt` and remove trailing whitespace.
</comment><date>2026-05-06 17:00:35 +0530</date><id>1c842b5af1e1e2f61121758243b8b6c49d791ef9</id><msg>Relocate the `isIdentified` property within `XapiGroup.kt` and remove trailing whitespace.</msg><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiGroup.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><commitId>c284dc329e847b6f2a932ca1bb931e97d49b15a8</commitId><timestamp>1778070302000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Update `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to support direct xAPI statement lookups and explicit statement ID generation.

- Update `StudentGroupingDetailViewModel` to query xAPI statements by `statementId` if available in the route, falling back to verb and activity filters.
- Modify `StudentGroupingEditViewModel` to pre-generate a `Uuid` for new xAPI statements and pass it to the `StudentGroupingDetail` navigation route.
</comment><date>2026-05-06 17:55:02 +0530</date><id>c284dc329e847b6f2a932ca1bb931e97d49b15a8</id><msg>Update `StudentGroupingDetailViewModel` and `StudentGroupingEditViewModel` to support direct xAPI statement lookups and explicit statement ID generation.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</affectedPath><commitId>cdd5bc05dcafa8d489d1e27737e4006c20e8caab</commitId><timestamp>1778072049000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor xAPI statement retrieval and fix database DAO inconsistencies.

- Simplify `loadGroupDetail` in `StudentGroupingDetailViewModel` to query by verb and activity only, removing direct lookup by statement ID.
- Fix a bug in `XapiStatementEntityDao` and `XapiStatementEntityJsonDao` where `statementVerbId` was incorrectly used instead of `statementVerbUid`.
- Clean up indentation and code formatting in `StudentGroupingEditViewModel`.
- In `StudentGroupingEditViewModel`, remove manual statement ID generation and rely on the model-generated ID for navigation.
- Remove unused `Uuid` import in `StudentGroupingDetailViewModel`.
</comment><date>2026-05-06 18:24:09 +0530</date><id>cdd5bc05dcafa8d489d1e27737e4006c20e8caab</id><msg>Refactor xAPI statement retrieval and fix database DAO inconsistencies.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/detail/StudentGroupingDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/studentgrouping/edit/StudentGroupingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</affectedPath><commitId>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</commitId><timestamp>1778079920000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Clean up code formatting and simplify comments.

- Remove unnecessary empty line in `StudentGroupingDetailScreen.kt`.
- Simplify the comment explaining the xAPI statement sorting logic in `ClazzDetailViewModel.kt`.
</comment><date>2026-05-06 20:35:20 +0530</date><id>aca36a84f1ecfd5ff2c8fea402a3cf24e2120013</id><msg>Clean up code formatting and simplify comments.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/studentgrouping/detail/StudentGroupingDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit></firstBuild><healthReport><description>Build stability: 1 out of the last 5 builds failed.</description><iconClassName>icon-health-60to79</iconClassName><iconUrl>health-60to79.png</iconUrl><score>80</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>47</buildNumber><marked><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#47</displayName><duration>186953</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #47</fullDisplayName><id>47</id><inProgress>false</inProgress><keepLog>false</keepLog><number>47</number><queueId>8555</queueId><result>SUCCESS</result><timestamp>1779248640993</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/47/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><commitId>cf4a9f42b8e7f871329c51279c628fd59fd02757</commitId><timestamp>1779104756000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Pass assignment activity id through learning unit detail to launch app use case.
</comment><date>2026-05-18 15:45:56 +0400</date><id>cf4a9f42b8e7f871329c51279c628fd59fd02757</id><msg>Pass assignment activity id through learning unit detail to launch app use case.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</affectedPath><affectedPath>respect-lib-util/build.gradle.kts</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt</affectedPath><commitId>50b45575b509674831d86091945b25b8e1275920</commitId><timestamp>1779107470000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.
</comment><date>2026-05-18 16:31:10 +0400</date><id>50b45575b509674831d86091945b25b8e1275920</id><msg>Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.</msg><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</file></path><path><editType>edit</editType><file>respect-lib-util/build.gradle.kts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt</affectedPath><commitId>175af5b50914120881058f512916023093144712</commitId><timestamp>1779126551000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Implement initial support for statement voiding.
</comment><date>2026-05-18 21:49:11 +0400</date><id>175af5b50914120881058f512916023093144712</id><msg>Implement initial support for statement voiding.</msg><path><editType>edit</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>c6dee1e5ab71a4595e2568c6d29ac442826472b6</commitId><timestamp>1779182286000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace.
</comment><date>2026-05-19 14:48:06 +0530</date><id>c6dee1e5ab71a4595e2568c6d29ac442826472b6</id><msg>Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit></lastBuild><lastCompletedBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>47</buildNumber><marked><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#47</displayName><duration>186953</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #47</fullDisplayName><id>47</id><inProgress>false</inProgress><keepLog>false</keepLog><number>47</number><queueId>8555</queueId><result>SUCCESS</result><timestamp>1779248640993</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/47/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><commitId>cf4a9f42b8e7f871329c51279c628fd59fd02757</commitId><timestamp>1779104756000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Pass assignment activity id through learning unit detail to launch app use case.
</comment><date>2026-05-18 15:45:56 +0400</date><id>cf4a9f42b8e7f871329c51279c628fd59fd02757</id><msg>Pass assignment activity id through learning unit detail to launch app use case.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</affectedPath><affectedPath>respect-lib-util/build.gradle.kts</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt</affectedPath><commitId>50b45575b509674831d86091945b25b8e1275920</commitId><timestamp>1779107470000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.
</comment><date>2026-05-18 16:31:10 +0400</date><id>50b45575b509674831d86091945b25b8e1275920</id><msg>Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.</msg><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</file></path><path><editType>edit</editType><file>respect-lib-util/build.gradle.kts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt</affectedPath><commitId>175af5b50914120881058f512916023093144712</commitId><timestamp>1779126551000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Implement initial support for statement voiding.
</comment><date>2026-05-18 21:49:11 +0400</date><id>175af5b50914120881058f512916023093144712</id><msg>Implement initial support for statement voiding.</msg><path><editType>edit</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>c6dee1e5ab71a4595e2568c6d29ac442826472b6</commitId><timestamp>1779182286000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace.
</comment><date>2026-05-19 14:48:06 +0530</date><id>c6dee1e5ab71a4595e2568c6d29ac442826472b6</id><msg>Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit></lastCompletedBuild><lastFailedBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>44</buildNumber><marked><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><branch><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><branch><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><branch><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#44</displayName><duration>87266</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #44</fullDisplayName><id>44</id><inProgress>false</inProgress><keepLog>false</keepLog><number>44</number><queueId>8521</queueId><result>FAILURE</result><timestamp>1779162240993</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/44/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt</affectedPath><affectedPath>gradle/libs.versions.toml</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/.gitignore</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/build.gradle.kts</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDb.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt</affectedPath><affectedPath>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt</affectedPath><affectedPath>settings.gradle.kts</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt</affectedPath><commitId>2826c4ba92af36c30d981499671efe3768192b5b</commitId><timestamp>1777923705000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress adding embedded Nanohttpd based xapi server.
</comment><date>2026-05-04 23:41:45 +0400</date><id>2826c4ba92af36c30d981499671efe3768192b5b</id><msg>Work in progress adding embedded Nanohttpd based xapi server.</msg><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/build.gradle.kts</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt</file></path><path><editType>add</editType><file>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</file></path><path><editType>edit</editType><file>settings.gradle.kts</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/.gitignore</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDb.kt</file></path><path><editType>delete</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt</file></path><path><editType>edit</editType><file>gradle/libs.versions.toml</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</affectedPath><affectedPath>respect-lib-shared/build.gradle.kts</affectedPath><commitId>901a5b08da74d631ae8e8db83adf9ae8d0383e4a</commitId><timestamp>1777973593000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.
</comment><date>2026-05-05 13:33:13 +0400</date><id>901a5b08da74d631ae8e8db83adf9ae8d0383e4a</id><msg>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.</msg><path><editType>add</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path><path><editType>add</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/build.gradle.kts</file></path><path><editType>add</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>delete</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</affectedPath><commitId>56c69cf8141536edd9ca3a490e7a4d847406e073</commitId><timestamp>1777982700000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.
</comment><date>2026-05-05 16:05:00 +0400</date><id>56c69cf8141536edd9ca3a490e7a4d847406e073</id><msg>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.</msg><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</affectedPath><commitId>4c50dfefc4af552e7a8914ff22a87baa5a6e0125</commitId><timestamp>1778436234000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><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).
</comment><date>2026-05-10 22:03:54 +0400</date><id>4c50dfefc4af552e7a8914ff22a87baa5a6e0125</id><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).</msg><path><editType>edit</editType><file>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</affectedPath><commitId>fd821aaf134d6baa9a915c36fccfd80c49cfcbf6</commitId><timestamp>1778491957000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add note on canonical updates to permission recipe.
</comment><date>2026-05-11 13:32:37 +0400</date><id>fd821aaf134d6baa9a915c36fccfd80c49cfcbf6</id><msg>Add note on canonical updates to permission recipe.</msg><path><editType>edit</editType><file>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><commitId>b1f93cb7e0056227f44fbca69dc7a53f52ed2caf</commitId><timestamp>1778590018000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Merge dev-xapi changes.
</comment><date>2026-05-12 16:46:58 +0400</date><id>b1f93cb7e0056227f44fbca69dc7a53f52ed2caf</id><msg>Merge dev-xapi changes.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/Application.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt</affectedPath><affectedPath>respect-app-compose/build.gradle.kts</affectedPath><commitId>4513cf5f87165b746305c8498a57997e28a61f51</commitId><timestamp>1778692885000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update terms/conditions to use .well-known path on school directory server.
Bump version.
</comment><date>2026-05-13 21:21:25 +0400</date><id>4513cf5f87165b746305c8498a57997e28a61f51</id><msg>Update terms/conditions to use .well-known path on school directory server.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/build.gradle.kts</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/Application.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>CODE_OF_CONDUCT.md</affectedPath><commitId>230b80b2452d708b0978043e033e0a5826668285</commitId><timestamp>1778743774000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Add guideline on AI-generated content submission

Add explicit guidelines against submission of AI slop
</comment><date>2026-05-14 11:29:34 +0400</date><id>230b80b2452d708b0978043e033e0a5826668285</id><msg>Add guideline on AI-generated content submission</msg><path><editType>edit</editType><file>CODE_OF_CONDUCT.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>CODE_OF_CONDUCT.md</affectedPath><commitId>e5a71f872211b1adc6692b881a207ff34a1d3de0</commitId><timestamp>1778743821000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Clarify guidelines on submitting AI-generated content
</comment><date>2026-05-14 11:30:21 +0400</date><id>e5a71f872211b1adc6692b881a207ff34a1d3de0</id><msg>Clarify guidelines on submitting AI-generated content</msg><path><editType>edit</editType><file>CODE_OF_CONDUCT.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</affectedPath><commitId>1b761b2d7f5431b5d5a5eaa8050c5a271e92a7fa</commitId><timestamp>1778750991000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Initial xAPI embedded server implementation.

Add support for cross origin requests for embedded statements endpoint.
 Fix nanohttpd bodyAsBytes function
 Fix basic auth encoding/decoding
</comment><date>2026-05-14 13:29:51 +0400</date><id>1b761b2d7f5431b5d5a5eaa8050c5a271e92a7fa</id><msg>Initial xAPI embedded server implementation.</msg><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/Application.kt</affectedPath><commitId>1e990ff70a0085f5b22a53f3cf93da7cacc978ff</commitId><timestamp>1778762633000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix ktor path for xapi statements resource.
</comment><date>2026-05-14 16:43:53 +0400</date><id>1e990ff70a0085f5b22a53f3cf93da7cacc978ff</id><msg>Fix ktor path for xapi statements resource.</msg><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/Application.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</affectedPath><commitId>846633c662e52445f3613caeed6ebfa5457d972d</commitId><timestamp>1778768829000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Initial statement maker.
</comment><date>2026-05-14 18:27:09 +0400</date><id>846633c662e52445f3613caeed6ebfa5457d972d</id><msg>Initial statement maker.</msg><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</affectedPath><commitId>1bc6aeeb9246345ab46c4839c4a5728d7e8d0e51</commitId><timestamp>1778952646000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update statement maker to use a statement json from text area and actor from params.
Update LaunchAppUseCase to accept an assignment activity id.
</comment><date>2026-05-16 21:30:46 +0400</date><id>1bc6aeeb9246345ab46c4839c4a5728d7e8d0e51</id><msg>Update statement maker to use a statement json from text area and actor from params.</msg><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/script.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/audio.ogg</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/video.mp4</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/script.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/cover.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/index.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/audio.ogg</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/video.mp4</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png</affectedPath><commitId>30e70b9f21b72016986ca29770c01c87cd314d6a</commitId><timestamp>1778955365000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update example app structure and naming.
</comment><date>2026-05-16 22:16:05 +0400</date><id>30e70b9f21b72016986ca29770c01c87cd314d6a</id><msg>Update example app structure and naming.</msg><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/video.mp4</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/video.mp4</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.html</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/audio.ogg</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/cover.png</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/icon.png</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/index.json</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/script.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/script.js</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/audio.ogg</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js</affectedPath><affectedPath>respect-datalayer-repository/log/respect-server.2026-05-04.0.log</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico</affectedPath><affectedPath>respect-datalayer-repository/log/respect-server.2026-05-12.0.log</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt</affectedPath><commitId>6187e85e6df49136f148542a2076e86061721555</commitId><timestamp>1778956821000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add jstetris example.
</comment><date>2026-05-16 22:40:21 +0400</date><id>6187e85e6df49136f148542a2076e86061721555</id><msg>Add jstetris example.</msg><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png</file></path><path><editType>add</editType><file>respect-datalayer-repository/log/respect-server.2026-05-12.0.log</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js</file></path><path><editType>add</editType><file>respect-datalayer-repository/log/respect-server.2026-05-04.0.log</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/AndroidManifest.xml</affectedPath><commitId>62ccad8b6c976ed3de4ef7ac2ef6e8e401801ced</commitId><timestamp>1779005615000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update LaunchAppUseCaseAndroid to handle launching native app if app with a verified app link is available.

Otherwise fall back to using our own WebView Activity. Handle SDK30+ and pre-SDK30.
</comment><date>2026-05-17 12:13:35 +0400</date><id>62ccad8b6c976ed3de4ef7ac2ef6e8e401801ced</id><msg>Update LaunchAppUseCaseAndroid to handle launching native app if app with a verified app link is available.</msg><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/AndroidManifest.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</affectedPath><affectedPath>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt</affectedPath><commitId>c9c53997c97601c6ae6fcefb5c3be6229e17d946</commitId><timestamp>1779014144000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress: add header xapi header fields
</comment><date>2026-05-17 14:35:44 +0400</date><id>c9c53997c97601c6ae6fcefb5c3be6229e17d946</id><msg>Work in progress: add header xapi header fields</msg><path><editType>edit</editType><file>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-app-compose/build.gradle.kts</affectedPath><commitId>008215d71e69209d9c4fb0b24bc80ece11bbf289</commitId><timestamp>1779040758000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Bump version for xAPI preview
</comment><date>2026-05-17 21:59:18 +0400</date><id>008215d71e69209d9c4fb0b24bc80ece11bbf289</id><msg>Bump version for xAPI preview</msg><path><editType>edit</editType><file>respect-app-compose/build.gradle.kts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><commitId>752caaf8214d94e8e6f5ec089405c5095c785dc7</commitId><timestamp>1779101412000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Rename and document LaunchRequest properties.
</comment><date>2026-05-18 14:50:12 +0400</date><id>752caaf8214d94e8e6f5ec089405c5095c785dc7</id><msg>Rename and document LaunchRequest properties.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit></lastFailedBuild><lastStableBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>47</buildNumber><marked><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#47</displayName><duration>186953</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #47</fullDisplayName><id>47</id><inProgress>false</inProgress><keepLog>false</keepLog><number>47</number><queueId>8555</queueId><result>SUCCESS</result><timestamp>1779248640993</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/47/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><commitId>cf4a9f42b8e7f871329c51279c628fd59fd02757</commitId><timestamp>1779104756000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Pass assignment activity id through learning unit detail to launch app use case.
</comment><date>2026-05-18 15:45:56 +0400</date><id>cf4a9f42b8e7f871329c51279c628fd59fd02757</id><msg>Pass assignment activity id through learning unit detail to launch app use case.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</affectedPath><affectedPath>respect-lib-util/build.gradle.kts</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt</affectedPath><commitId>50b45575b509674831d86091945b25b8e1275920</commitId><timestamp>1779107470000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.
</comment><date>2026-05-18 16:31:10 +0400</date><id>50b45575b509674831d86091945b25b8e1275920</id><msg>Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.</msg><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</file></path><path><editType>edit</editType><file>respect-lib-util/build.gradle.kts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt</affectedPath><commitId>175af5b50914120881058f512916023093144712</commitId><timestamp>1779126551000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Implement initial support for statement voiding.
</comment><date>2026-05-18 21:49:11 +0400</date><id>175af5b50914120881058f512916023093144712</id><msg>Implement initial support for statement voiding.</msg><path><editType>edit</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>c6dee1e5ab71a4595e2568c6d29ac442826472b6</commitId><timestamp>1779182286000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace.
</comment><date>2026-05-19 14:48:06 +0530</date><id>c6dee1e5ab71a4595e2568c6d29ac442826472b6</id><msg>Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit></lastStableBuild><lastSuccessfulBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>47</buildNumber><marked><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><branch><SHA1>55622a2f0afe5a450075f99565269f95d6df58c0</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-debug.aab</displayPath><fileName>respect-app-compose-debug.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab</relativePath></artifact><artifact><displayPath>respect-app-compose-release.aab</displayPath><fileName>respect-app-compose-release.aab</fileName><relativePath>respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#47</displayName><duration>186953</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #47</fullDisplayName><id>47</id><inProgress>false</inProgress><keepLog>false</keepLog><number>47</number><queueId>8555</queueId><result>SUCCESS</result><timestamp>1779248640993</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/47/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><commitId>cf4a9f42b8e7f871329c51279c628fd59fd02757</commitId><timestamp>1779104756000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Pass assignment activity id through learning unit detail to launch app use case.
</comment><date>2026-05-18 15:45:56 +0400</date><id>cf4a9f42b8e7f871329c51279c628fd59fd02757</id><msg>Pass assignment activity id through learning unit detail to launch app use case.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</affectedPath><affectedPath>respect-lib-util/build.gradle.kts</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt</affectedPath><commitId>50b45575b509674831d86091945b25b8e1275920</commitId><timestamp>1779107470000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.
</comment><date>2026-05-18 16:31:10 +0400</date><id>50b45575b509674831d86091945b25b8e1275920</id><msg>Update GetXapiLaunchUrlUseCase to include assignment activity id in the path.</msg><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</file></path><path><editType>edit</editType><file>respect-lib-util/build.gradle.kts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt</affectedPath><commitId>175af5b50914120881058f512916023093144712</commitId><timestamp>1779126551000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Implement initial support for statement voiding.
</comment><date>2026-05-18 21:49:11 +0400</date><id>175af5b50914120881058f512916023093144712</id><msg>Implement initial support for statement voiding.</msg><path><editType>edit</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/13.json</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiForbiddenException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/entities/XapiStatementEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityJsonDao.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStatementEntityDao.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/exceptions/XapiBadRequestException.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiVerb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><commitId>c6dee1e5ab71a4595e2568c6d29ac442826472b6</commitId><timestamp>1779182286000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace.
</comment><date>2026-05-19 14:48:06 +0530</date><id>c6dee1e5ab71a4595e2568c6d29ac442826472b6</id><msg>Refactor `ClazzDetailViewModel.kt` to clean up formatting and whitespace.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-student-grouping _class='hudson.plugins.git.util.Build'><buildNumber>44</buildNumber><marked><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><branch><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></marked><revision><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><branch><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></revision></refsremotesorigindev-student-grouping></buildsByBranchName><lastBuiltRevision><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><branch><SHA1>f9d712f17d56b8e7e3e77ec43df26eba167ebc70</SHA1><name>refs/remotes/origin/dev-student-grouping</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#44</displayName><duration>87266</duration><estimatedDuration>199031</estimatedDuration><fullDisplayName>dev-student-grouping #44</fullDisplayName><id>44</id><inProgress>false</inProgress><keepLog>false</keepLog><number>44</number><queueId>8521</queueId><result>FAILURE</result><timestamp>1779162240993</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-student-grouping/44/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt</affectedPath><affectedPath>gradle/libs.versions.toml</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/.gitignore</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/build.gradle.kts</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt</affectedPath><affectedPath>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDb.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt</affectedPath><affectedPath>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt</affectedPath><affectedPath>settings.gradle.kts</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt</affectedPath><commitId>2826c4ba92af36c30d981499671efe3768192b5b</commitId><timestamp>1777923705000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress adding embedded Nanohttpd based xapi server.
</comment><date>2026-05-04 23:41:45 +0400</date><id>2826c4ba92af36c30d981499671efe3768192b5b</id><msg>Work in progress adding embedded Nanohttpd based xapi server.</msg><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/build.gradle.kts</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/list/AssignmentListScreen.kt</file></path><path><editType>add</editType><file>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ext/DataLoadStateExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</file></path><path><editType>edit</editType><file>settings.gradle.kts</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/SchoolDirectoryDataSourceExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsFeedDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatement.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/credentials/passkey/CheckPasskeySupportUseCaseAndroidImpl.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/LocalModelDataSourceExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/mapping/edit/CurriculumMappingEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasskeyDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/AssignmentDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/schooldirectory/edit/SchoolDirectoryEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/schooldirectory/SchoolDirectoryEntryDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsPublicationDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiStatementResult.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/detail/IndicatorDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonPasswordDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/AssignmentDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonPasswordDataSourceExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDbTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/passkeyList/PasskeyListScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/ClassDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsPublicationDataSourceHttp.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/.gitignore</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/schooldirectory/SchoolDirectoryEntryDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDb.kt</file></path><path><editType>delete</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt</file></path><path><editType>edit</editType><file>gradle/libs.versions.toml</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/opds/OpdsFeedDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolAppDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/indicator/edit/IndicatorEditScreen.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</affectedPath><affectedPath>respect-lib-shared/build.gradle.kts</affectedPath><commitId>901a5b08da74d631ae8e8db83adf9ae8d0383e4a</commitId><timestamp>1777973593000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.
</comment><date>2026-05-05 13:33:13 +0400</date><id>901a5b08da74d631ae8e8db83adf9ae8d0383e4a</id><msg>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.</msg><path><editType>add</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path><path><editType>add</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCase.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdResourceProvider.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/build.gradle.kts</file></path><path><editType>add</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>delete</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiResourceProvider.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</affectedPath><commitId>56c69cf8141536edd9ca3a490e7a4d847406e073</commitId><timestamp>1777982700000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.
</comment><date>2026-05-05 16:05:00 +0400</date><id>56c69cf8141536edd9ca3a490e7a4d847406e073</id><msg>Work in progress: setup learning unit detail viewmodel to get xapi launch url using embedded xapi server.</msg><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</affectedPath><commitId>4c50dfefc4af552e7a8914ff22a87baa5a6e0125</commitId><timestamp>1778436234000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><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).
</comment><date>2026-05-10 22:03:54 +0400</date><id>4c50dfefc4af552e7a8914ff22a87baa5a6e0125</id><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).</msg><path><editType>edit</editType><file>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</affectedPath><commitId>fd821aaf134d6baa9a915c36fccfd80c49cfcbf6</commitId><timestamp>1778491957000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add note on canonical updates to permission recipe.
</comment><date>2026-05-11 13:32:37 +0400</date><id>fd821aaf134d6baa9a915c36fccfd80c49cfcbf6</id><msg>Add note on canonical updates to permission recipe.</msg><path><editType>edit</editType><file>respect-lib-xapi-core/README_PERMISSION_RECIPE.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><commitId>b1f93cb7e0056227f44fbca69dc7a53f52ed2caf</commitId><timestamp>1778590018000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Merge dev-xapi changes.
</comment><date>2026-05-12 16:46:58 +0400</date><id>b1f93cb7e0056227f44fbca69dc7a53f52ed2caf</id><msg>Merge dev-xapi changes.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/Application.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt</affectedPath><affectedPath>respect-app-compose/build.gradle.kts</affectedPath><commitId>4513cf5f87165b746305c8498a57997e28a61f51</commitId><timestamp>1778692885000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update terms/conditions to use .well-known path on school directory server.
Bump version.
</comment><date>2026-05-13 21:21:25 +0400</date><id>4513cf5f87165b746305c8498a57997e28a61f51</id><msg>Update terms/conditions to use .well-known path on school directory server.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/build.gradle.kts</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/Application.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>CODE_OF_CONDUCT.md</affectedPath><commitId>230b80b2452d708b0978043e033e0a5826668285</commitId><timestamp>1778743774000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Add guideline on AI-generated content submission

Add explicit guidelines against submission of AI slop
</comment><date>2026-05-14 11:29:34 +0400</date><id>230b80b2452d708b0978043e033e0a5826668285</id><msg>Add guideline on AI-generated content submission</msg><path><editType>edit</editType><file>CODE_OF_CONDUCT.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>CODE_OF_CONDUCT.md</affectedPath><commitId>e5a71f872211b1adc6692b881a207ff34a1d3de0</commitId><timestamp>1778743821000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Clarify guidelines on submitting AI-generated content
</comment><date>2026-05-14 11:30:21 +0400</date><id>e5a71f872211b1adc6692b881a207ff34a1d3de0</id><msg>Clarify guidelines on submitting AI-generated content</msg><path><editType>edit</editType><file>CODE_OF_CONDUCT.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</affectedPath><commitId>1b761b2d7f5431b5d5a5eaa8050c5a271e92a7fa</commitId><timestamp>1778750991000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Initial xAPI embedded server implementation.

Add support for cross origin requests for embedded statements endpoint.
 Fix nanohttpd bodyAsBytes function
 Fix basic auth encoding/decoding
</comment><date>2026-05-14 13:29:51 +0400</date><id>1b761b2d7f5431b5d5a5eaa8050c5a271e92a7fa</id><msg>Initial xAPI embedded server implementation.</msg><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/getxapilaunchurl/GetXapiLaunchUrlUseCaseAndroid.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementsResourceExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/xapi/xapinanohttpd/XapiNanoHttpdResourceProviderAndroid.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdSessionExt.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/Application.kt</affectedPath><commitId>1e990ff70a0085f5b22a53f3cf93da7cacc978ff</commitId><timestamp>1778762633000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix ktor path for xapi statements resource.
</comment><date>2026-05-14 16:43:53 +0400</date><id>1e990ff70a0085f5b22a53f3cf93da7cacc978ff</id><msg>Fix ktor path for xapi statements resource.</msg><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/Application.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</affectedPath><commitId>846633c662e52445f3613caeed6ebfa5457d972d</commitId><timestamp>1778768829000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Initial statement maker.
</comment><date>2026-05-14 18:27:09 +0400</date><id>846633c662e52445f3613caeed6ebfa5457d972d</id><msg>Initial statement maker.</msg><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/ext/NanoHttpdResponseExt.kt</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/XAPI.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><affectedPath>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</affectedPath><commitId>1bc6aeeb9246345ab46c4839c4a5728d7e8d0e51</commitId><timestamp>1778952646000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update statement maker to use a statement json from text area and actor from params.
Update LaunchAppUseCase to accept an assignment activity id.
</comment><date>2026-05-16 21:30:46 +0400</date><id>1bc6aeeb9246345ab46c4839c4a5728d7e8d0e51</id><msg>Update statement maker to use a statement json from text area and actor from params.</msg><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-nanohttpd/src/commonMain/kotlin/world/respect/lib/xapi/nanohttpd/XapiNanoHttpdApp.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/script.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/audio.ogg</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/video.mp4</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/script.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/cover.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/index.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/audio.ogg</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/video.mp4</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png</affectedPath><commitId>30e70b9f21b72016986ca29770c01c87cd314d6a</commitId><timestamp>1778955365000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update example app structure and naming.
</comment><date>2026-05-16 22:16:05 +0400</date><id>30e70b9f21b72016986ca29770c01c87cd314d6a</id><msg>Update example app structure and naming.</msg><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/appmanifest.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/video.mp4</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_statement_maker.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/xapi_module.js</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/video.mp4</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/statementmaker.json</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.html</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/grade1.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/audio.ogg</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/cover.png</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/statementmaker.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/icon.png</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_module.js</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/index.json</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/script.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/statementmaker/index.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/script.js</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.html</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/lesson001.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/statementmaker/icon.png</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/cover.png</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/icon.png</file></path><path><editType>delete</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/grade1/lesson001/audio.ogg</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js</affectedPath><affectedPath>respect-datalayer-repository/log/respect-server.2026-05-04.0.log</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico</affectedPath><affectedPath>respect-datalayer-repository/log/respect-server.2026-05-12.0.log</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt</affectedPath><commitId>6187e85e6df49136f148542a2076e86061721555</commitId><timestamp>1778956821000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add jstetris example.
</comment><date>2026-05-16 22:40:21 +0400</date><id>6187e85e6df49136f148542a2076e86061721555</id><msg>Add jstetris example.</msg><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tincan.xml</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/icon.png</file></path><path><editType>add</editType><file>respect-datalayer-repository/log/respect-server.2026-05-12.0.log</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-left.gif</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/index.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/launch.html</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/2.5.3-crypto-sha1.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-space.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/README.md</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-right.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-down.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.ico</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/readme.txt</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.js</file></path><path><editType>add</editType><file>respect-datalayer-repository/log/respect-server.2026-05-04.0.log</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/key-up.gif</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jstetris.json</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/base64.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.js</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TC_tetris.css</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/LICENSE</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/tetris.css</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/TinCanJS/NOTICE</file></path><path><editType>add</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/jstetris/jquery-1.6.4.min.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</affectedPath><affectedPath>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/AndroidManifest.xml</affectedPath><commitId>62ccad8b6c976ed3de4ef7ac2ef6e8e401801ced</commitId><timestamp>1779005615000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update LaunchAppUseCaseAndroid to handle launching native app if app with a verified app link is available.

Otherwise fall back to using our own WebView Activity. Handle SDK30+ and pre-SDK30.
</comment><date>2026-05-17 12:13:35 +0400</date><id>62ccad8b6c976ed3de4ef7ac2ef6e8e401801ced</id><msg>Update LaunchAppUseCaseAndroid to handle launching native app if app with a verified app link is available.</msg><path><editType>edit</editType><file>respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/AndroidManifest.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</affectedPath><affectedPath>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt</affectedPath><commitId>c9c53997c97601c6ae6fcefb5c3be6229e17d946</commitId><timestamp>1779014144000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Work in progress: add header xapi header fields
</comment><date>2026-05-17 14:35:44 +0400</date><id>c9c53997c97601c6ae6fcefb5c3be6229e17d946</id><msg>Work in progress: add header xapi header fields</msg><path><editType>edit</editType><file>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadParams.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/lesson001/lesson001.json</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</file></path><path><editType>edit</editType><file>respect-lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/DataLoadMetaInfo.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-app-compose/build.gradle.kts</affectedPath><commitId>008215d71e69209d9c4fb0b24bc80ece11bbf289</commitId><timestamp>1779040758000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Bump version for xAPI preview
</comment><date>2026-05-17 21:59:18 +0400</date><id>008215d71e69209d9c4fb0b24bc80ece11bbf289</id><msg>Bump version for xAPI preview</msg><path><editType>edit</editType><file>respect-app-compose/build.gradle.kts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><commitId>752caaf8214d94e8e6f5ec089405c5095c785dc7</commitId><timestamp>1779101412000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Rename and document LaunchRequest properties.
</comment><date>2026-05-18 14:50:12 +0400</date><id>752caaf8214d94e8e6f5ec089405c5095c785dc7</id><msg>Rename and document LaunchRequest properties.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit></lastUnsuccessfulBuild><nextBuildNumber>48</nextBuildNumber><property _class='jenkins.model.BuildDiscarderProperty'></property><property _class='com.coravy.hudson.plugins.github.GithubProjectProperty'></property><property _class='hudson.plugins.throttleconcurrents.ThrottleJobProperty'></property><property _class='org.jenkinsci.plugins.envinject.EnvInjectJobProperty'></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'><browser _class='hudson.plugins.git.browser.GithubWeb'></browser><type>hudson.plugins.git.GitSCM</type><branche></branche><mergeOptions><fastForwardMode>--ff</fastForwardMode><mergeStrategy>default</mergeStrategy></mergeOptions><userRemoteConfig></userRemoteConfig></scm></freeStyleProject>