<freeStyleBuild _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-classes-xapi _class='hudson.plugins.git.util.Build'><buildNumber>3</buildNumber><marked><SHA1>7786c963f6d8a61e03b619d62df70f384e84325a</SHA1><branch><SHA1>7786c963f6d8a61e03b619d62df70f384e84325a</SHA1><name>refs/remotes/origin/dev-classes-xapi</name></branch></marked><revision><SHA1>7786c963f6d8a61e03b619d62df70f384e84325a</SHA1><branch><SHA1>7786c963f6d8a61e03b619d62df70f384e84325a</SHA1><name>refs/remotes/origin/dev-classes-xapi</name></branch></revision></refsremotesorigindev-classes-xapi></buildsByBranchName><lastBuiltRevision><SHA1>7786c963f6d8a61e03b619d62df70f384e84325a</SHA1><branch><SHA1>7786c963f6d8a61e03b619d62df70f384e84325a</SHA1><name>refs/remotes/origin/dev-classes-xapi</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'><artifactsUrl>https://devserver3.ustadmobile.com/jenkins/job/dev-classes-xapi/3/artifact</artifactsUrl><changesUrl>https://devserver3.ustadmobile.com/jenkins/job/dev-classes-xapi/changes</changesUrl><displayUrl>https://devserver3.ustadmobile.com/jenkins/job/dev-classes-xapi/3/</displayUrl><testsUrl>https://devserver3.ustadmobile.com/jenkins/job/dev-classes-xapi/3/testReport</testsUrl></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>#3</displayName><duration>189579</duration><estimatedDuration>181538</estimatedDuration><fullDisplayName>dev-classes-xapi #3</fullDisplayName><id>3</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3</number><queueId>9265</queueId><result>SUCCESS</result><timestamp>1781097360994</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-classes-xapi/3/</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/domain/xapi/XapiAssignmentExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementsResourceRepository.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.kt</affectedPath><affectedPath>respect-datalayer-repository/log/respect-server.2026-05-04.0.log</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/AssignmentResultExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementObjectExt.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActorExt.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt</affectedPath><commitId>4a012c9f2b6a57776b401ab7c6f133372c2dfbf4</commitId><timestamp>1780665131000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add xAPI extension functions required for common use cases.

Remove some unnecessary functions that were introduced with the assignment merge.
</comment><date>2026-06-05 17:12:11 +0400</date><id>4a012c9f2b6a57776b401ab7c6f133372c2dfbf4</id><msg>Add xAPI extension functions required for common use cases.</msg><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActorExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAssertions.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-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/adapters/XapiActorAdapter.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-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStatementsResourceDb.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>delete</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/xapi/ext/XapiActorExt.kt</file></path><path><editType>add</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementObjectExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt</file></path><path><editType>delete</editType><file>respect-datalayer-repository/log/respect-server.2026-05-04.0.log</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-lib-shared/src/commonMain/composeResources/values/strings.xml</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt</file></path><path><editType>delete</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/AssignmentResultExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt</affectedPath><affectedPath>respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.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/ext/XapiActivityDefinitionExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt</affectedPath><affectedPath>respect-app-compose/src/desktopMain/kotlin/world/respect/main.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt</affectedPath><affectedPath>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/LangMapExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/LangMapExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt</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/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/App.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LocalAppLocale.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiText.kt</affectedPath><commitId>6d34bd4995ceae080606ea1aceedf1776b507845</commitId><timestamp>1780824941000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Improvements for Xapi based data handling : work in progress.

Add UiText support for LangMaps. Put OpenEel constants into one logical place.
</comment><date>2026-06-07 13:35:41 +0400</date><id>6d34bd4995ceae080606ea1aceedf1776b507845</id><msg>Improvements for Xapi based data handling : work in progress.</msg><path><editType>add</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LocalAppLocale.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/domain/xapi/XapiAssignmentExt.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>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt</file></path><path><editType>add</editType><file>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/LangMapExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.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-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt</file></path><path><editType>add</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/LangMapExt.kt</file></path><path><editType>add</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/app/components/LocalAppLocale.android.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiText.kt</file></path><path><editType>delete</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/App.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt</file></path><path><editType>add</editType><file>respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/LocalAppLocale.desktop.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/desktopMain/kotlin/world/respect/main.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/README.md</affectedPath><affectedPath>.maestro/flows/subflows/admin_add_app.yaml</affectedPath><affectedPath>.maestro/flows/002_browse_lessons_test.yaml</affectedPath><affectedPath>.maestro/flows/scripts/school_init.js</affectedPath><commitId>e61e79f9c612ce33185054572d051ce7a535064d</commitId><timestamp>1780904962000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add environment variables that can be used to set the url of the test app manifest for maestro testing.
</comment><date>2026-06-08 11:49:22 +0400</date><id>e61e79f9c612ce33185054572d051ce7a535064d</id><msg>Add environment variables that can be used to set the url of the test app manifest for maestro testing.</msg><path><editType>edit</editType><file>.maestro/flows/subflows/admin_add_app.yaml</file></path><path><editType>edit</editType><file>.maestro/flows/002_browse_lessons_test.yaml</file></path><path><editType>edit</editType><file>.maestro/README.md</file></path><path><editType>edit</editType><file>.maestro/flows/scripts/school_init.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>ci-run-maestro.sh</affectedPath><commitId>9f4649e59071d435537f5286804cc34b168cd2a9</commitId><timestamp>1780905193000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update ci-run-maestro to pass TEST_APP_URL argument through.
</comment><date>2026-06-08 11:53:13 +0400</date><id>9f4649e59071d435537f5286804cc34b168cd2a9</id><msg>Update ci-run-maestro to pass TEST_APP_URL argument through.</msg><path><editType>edit</editType><file>ci-run-maestro.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js</affectedPath><affectedPath>respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/index.html</affectedPath><commitId>05956799f0039e384a597b85aa08aeead0457ec9</commitId><timestamp>1780923340000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Improve error message logging in xapi_assignable_unit.js .
</comment><date>2026-06-08 16:55:40 +0400</date><id>05956799f0039e384a597b85aa08aeead0457ec9</id><msg>Improve error message logging in xapi_assignable_unit.js .</msg><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/examples/assignable-unit-1/index.html</file></path><path><editType>edit</editType><file>respect-server/src/main/resources/http/respect-ds/case_valid/js/xapi_assignable_unit.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapEditField.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt</affectedPath><commitId>2ceac40ca0250dba23285062068335e4eb361f88</commitId><timestamp>1780946445000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Initial implementation of lang map edit field.
</comment><date>2026-06-08 23:20:45 +0400</date><id>2ceac40ca0250dba23285062068335e4eb361f88</id><msg>Initial implementation of lang map edit field.</msg><path><editType>add</editType><file>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt</file></path><path><editType>add</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapEditField.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapEditField.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.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/XapiActivityDefinition.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.kt</affectedPath><affectedPath>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/LangMapExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapTextField.kt</affectedPath><affectedPath>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.kt</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-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/langMapString.kt</affectedPath><affectedPath>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityExt.kt</affectedPath><commitId>14511ab072f6ff511891a5dce7cf0f3328df1321</commitId><timestamp>1780991418000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Initial implementation of lang map edit field.
</comment><date>2026-06-09 11:50:18 +0400</date><id>14511ab072f6ff511891a5dce7cf0f3328df1321</id><msg>Initial implementation of lang map edit field.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt</file></path><path><editType>add</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.kt</file></path><path><editType>delete</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/langMapString.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-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/SelectLang.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>delete</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapEditField.kt</file></path><path><editType>edit</editType><file>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/LangMapExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.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-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/model/XapiActivityDefinition.kt</file></path><path><editType>edit</editType><file>respect-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiAssignmentExt.kt</file></path><path><editType>add</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/LangMapTextField.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditTaskListItem.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-lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiStatementExt.kt</affectedPath><commitId>42d1b44dd3461a813e42ce0274c2357c2c3c8e54</commitId><timestamp>1780993139000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix AssignmentEditScreen

Changing description would change title.
</comment><date>2026-06-09 12:18:59 +0400</date><id>42d1b44dd3461a813e42ce0274c2357c2c3c8e54</id><msg>Fix AssignmentEditScreen</msg><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-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.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-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/DisplayString.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.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/learningunit/detail/LearningUnitDetailScreen.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/curriculum/mapping/edit/CurriculumMappingEditViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.kt</affectedPath><commitId>55b6ec900e8ea5d71463605307b0dc52ae736648</commitId><timestamp>1781012777000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Remove use of old langmap getTitle function.

Fix composable langmapstring function.
</comment><date>2026-06-09 17:46:17 +0400</date><id>55b6ec900e8ea5d71463605307b0dc52ae736648</id><msg>Remove use of old langmap getTitle function.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/components/SelectLangMapStringByLocale.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-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt</file></path><path><editType>delete</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/DisplayString.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-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskListItem.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-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/learningunit/detail/LearningUnitDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailTaskHeader.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.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/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.kt</affectedPath><commitId>7409512e7519a633fc00f0a48732d4071f0dff5b</commitId><timestamp>1781043504000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Migrate class list and detail views to use xAPI statements instead of legacy `Clazz` data models.

- Replace `Clazz` model usage with `XapiStatement` in `ClazzDetailViewModel` and `ClazzListViewModel`.
- Update `ClazzDetailViewModel` to fetch class data via `schoolDataSource.xapiStatementsResource` using the activity ID from navigation.
- Refactor `ClazzListViewModel` to filter and display the most recent class-related xAPI statements instead of using a paging source.
- Update `ClazzDetailScreen` and `ClazzListScreen` to bind data from xAPI statement definitions (title and description).
- Update navigation routes and related use cases to utilize activity IDs.
</comment><date>2026-06-10 03:48:24 +0530</date><id>7409512e7519a633fc00f0a48732d4071f0dff5b</id><msg>Migrate class list and detail views to use xAPI statements instead of legacy `Clazz` data models.</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/list/ClazzListViewModel.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/list/ClazzListScreen.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiClassExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.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/clazz/edit/ClazzEditViewModel.kt</affectedPath><commitId>dc9da062060be247277046a98b4587b26adad87e</commitId><timestamp>1781046675000</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 class management to support multi-language xAPI activity names and descriptions.

- Replace custom `classDefinitionTitle` and `classDefinitionDescription` extensions with standard `objectActivityNameOrNull` and `objectActivityOrNull` from the xAPI library.
- Update `ClazzEditScreen` to use `LangMapTextField` for editing localized name and description maps.
- Update `ClazzDetailViewModel`, `ClazzListScreen`, and `ClazzDetailScreen` to handle language map conversions for UI display using `asLangMapUiText` and `langMapString`.
- Remove obsolete xAPI helper functions and constants from `XapiClassExt.kt`.
- Move `ACTIVITY_ID_PATH` to `ClazzEditViewModel` companion object.
</comment><date>2026-06-10 04:41:15 +0530</date><id>dc9da062060be247277046a98b4587b26adad87e</id><msg>Refactor class management to support multi-language xAPI activity names and descriptions.</msg><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-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiClassExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.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/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.kt</affectedPath><commitId>3ff52665c0c961f6b6317908effe4d81a5064a5a</commitId><timestamp>1781077614000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Use `objectActivityOrNull` and `distinctByMostRecentTimestampForActivityId` extensions in `ClazzListScreen` and `ClazzListViewModel`.
</comment><date>2026-06-10 13:16:54 +0530</date><id>3ff52665c0c961f6b6317908effe4d81a5064a5a</id><msg>Use `objectActivityOrNull` and `distinctByMostRecentTimestampForActivityId` extensions in `ClazzListScreen` and `ClazzListViewModel`.</msg><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/list/ClazzListScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt</affectedPath><commitId>e57adfedf07a761ec49897216ba14fac71ac499a</commitId><timestamp>1781078309000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Throw `IllegalStateException` in `ClazzEditViewModel` when account data is missing during class creation or when statement data is null during save.
</comment><date>2026-06-10 13:28:29 +0530</date><id>e57adfedf07a761ec49897216ba14fac71ac499a</id><msg>Throw `IllegalStateException` in `ClazzEditViewModel` when account data is missing during class creation or when statement data is null during save.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.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>e4c644bb9b01d4cc1c47bd68e8e6d3187f2061a7</commitId><timestamp>1781079291000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma</absoluteUrl><fullName>mandvi.verma</fullName></author><authorEmail>mandvi.verma@sutara.org</authorEmail><comment>Refine error handling in `onClickAddPersonToClazz` and `onClickRemovePersonFromClass` within `ClazzDetailViewModel`.
</comment><date>2026-06-10 13:44:51 +0530</date><id>e4c644bb9b01d4cc1c47bd68e8e6d3187f2061a7</id><msg>Refine error handling in `onClickAddPersonToClazz` and `onClickRemovePersonFromClass` within `ClazzDetailViewModel`.</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/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><commitId>a5db38cef14047703acc37ec92cbf226f40c03f3</commitId><timestamp>1781080401000</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 logic for title and description in `ClazzDetailViewModel` and `ClazzDetailScreen`.
</comment><date>2026-06-10 14:03:21 +0530</date><id>a5db38cef14047703acc37ec92cbf226f40c03f3</id><msg>Simplify logic for title and description in `ClazzDetailViewModel` and `ClazzDetailScreen`.</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/clazz/edit/ClazzEditViewModel.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/clazz/detail/ClazzDetailScreen.kt</affectedPath><commitId>7786c963f6d8a61e03b619d62df70f384e84325a</commitId><timestamp>1781080485000</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 logic for title and description in `ClazzDetailViewModel` and `ClazzDetailScreen`.
</comment><date>2026-06-10 14:04:45 +0530</date><id>7786c963f6d8a61e03b619d62df70f384e84325a</id><msg>Simplify logic for title and description in `ClazzDetailViewModel` and `ClazzDetailScreen`.</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><id>mandvi.verma</id></culprit><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName><id>mike</id></culprit></freeStyleBuild>