<freeStyleProject _class='hudson.model.FreeStyleProject'><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/RESPECT-end-to-end/</displayUrl></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'><stores></stores></action><description>RESPECT End to end tests.

Note: end-to-end test videos must be downloaded (eg. right click, save link as) and then played after downloading. They cannot be played directly in the browser.</description><displayName>RESPECT-end-to-end</displayName><fullDisplayName>RESPECT-end-to-end</fullDisplayName><fullName>RESPECT-end-to-end</fullName><name>RESPECT-end-to-end</name><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/</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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>449</buildNumber><marked><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261004_213336.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261004_213336.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#449</displayName><duration>1540895</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #449</fullDisplayName><id>449</id><inProgress>false</inProgress><keepLog>false</keepLog><number>449</number><queueId>333</queueId><result>SUCCESS</result><timestamp>1791133680352</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/449/</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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>448</buildNumber><marked><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261003_213335.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261003_213335.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#448</displayName><duration>1539897</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #448</fullDisplayName><id>448</id><inProgress>false</inProgress><keepLog>false</keepLog><number>448</number><queueId>306</queueId><result>SUCCESS</result><timestamp>1791047280353</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/448/</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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>447</buildNumber><marked><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261002_213350.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261002_213350.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#447</displayName><duration>1554161</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #447</fullDisplayName><id>447</id><inProgress>false</inProgress><keepLog>false</keepLog><number>447</number><queueId>282</queueId><result>SUCCESS</result><timestamp>1790960880352</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/447/</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 Mike Dawson</shortDescription><userId>mike</userId><userName>Mike Dawson</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>446</buildNumber><marked><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261002_122207.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261002_122207.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#446</displayName><duration>1538702</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #446</fullDisplayName><id>446</id><inProgress>false</inProgress><keepLog>false</keepLog><number>446</number><queueId>271</queueId><result>SUCCESS</result><timestamp>1790927793219</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/446/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-shared/src/commonMain/composeResources/values/strings.xml</affectedPath><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/AlternativeLangLinks.kt</affectedPath><commitId>bc3d7f1d0269be4da0fa4d9a40da9de52fb0660d</commitId><timestamp>1790927239000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add show more/show less option to AlternativeLangLinks.kt
</comment><date>2026-10-02 11:47:19 +0400</date><id>bc3d7f1d0269be4da0fa4d9a40da9de52fb0660d</id><msg>Add show more/show less option to AlternativeLangLinks.kt</msg><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/components/AlternativeLangLinks.kt</file></path><path><editType>edit</editType><file>lib-shared/src/commonMain/composeResources/values/strings.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>gradle.properties</affectedPath><commitId>c8213a6965b8081aeb8b10af77f59881d16281b9</commitId><timestamp>1790927623000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Bump version
</comment><date>2026-10-02 11:53:43 +0400</date><id>c8213a6965b8081aeb8b10af77f59881d16281b9</id><msg>Bump version</msg><path><editType>edit</editType><file>gradle.properties</file></path></item><kind>git</kind></changeSet><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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>445</buildNumber><marked><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><branch><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><branch><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><branch><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>7</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261001_212210.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261001_212210.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#445</displayName><duration>854009</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #445</fullDisplayName><id>445</id><inProgress>false</inProgress><keepLog>false</keepLog><number>445</number><queueId>253</queueId><result>FAILURE</result><timestamp>1790874480353</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/445/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app-android/src/main/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>lib-shared/src/jvmTest/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCaseTest.kt</affectedPath><affectedPath>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpenEelConstants.kt</affectedPath><affectedPath>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><affectedPath>lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt</affectedPath><affectedPath>lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/publicationdetail/PublicationDetailViewModel.kt</affectedPath><affectedPath>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCase.kt</affectedPath><commitId>4d2a4f4e44b3e5cfecc841da185645457dc1013a</commitId><timestamp>1790788510000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Set package on ACTION_LAUNCH intent when launching OpenEEL apps. Avoid launching a native app that is not actually linked to the given publication. Fixes issue #321
</comment><date>2026-09-30 21:15:10 +0400</date><id>4d2a4f4e44b3e5cfecc841da185645457dc1013a</id><msg>Set package on ACTION_LAUNCH intent when launching OpenEEL apps. Avoid launching a native app that is not actually linked to the given publication. Fixes issue #321</msg><path><editType>edit</editType><file>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt</file></path><path><editType>add</editType><file>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpenEelConstants.kt</file></path><path><editType>add</editType><file>lib-shared/src/jvmTest/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCaseTest.kt</file></path><path><editType>edit</editType><file>app-android/src/main/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>add</editType><file>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCase.kt</file></path><path><editType>edit</editType><file>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path><path><editType>edit</editType><file>lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/publicationdetail/PublicationDetailViewModel.kt</file></path><path><editType>edit</editType><file>lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-core/README_PERMISSION_RECIPE.md</affectedPath><affectedPath>lib-xapi-core/README_PERMISSIONS.md</affectedPath><commitId>9cea818ba83b6b2052e34a92bd08d6268628382d</commitId><timestamp>1790859279000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update permissions concept README.
</comment><date>2026-10-01 16:54:39 +0400</date><id>9cea818ba83b6b2052e34a92bd08d6268628382d</id><msg>Update permissions concept README.</msg><path><editType>delete</editType><file>lib-xapi-core/README_PERMISSION_RECIPE.md</file></path><path><editType>add</editType><file>lib-xapi-core/README_PERMISSIONS.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt</affectedPath><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailScreen.kt</affectedPath><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt</affectedPath><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/PublicationDetailScreen.kt</affectedPath><commitId>6f211e0949e3a26ab55107153b207b2ad555850d</commitId><timestamp>1790862214000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Make detail screens scrollable, adjust padding
</comment><date>2026-10-01 17:43:34 +0400</date><id>6f211e0949e3a26ab55107153b207b2ad555850d</id><msg>Make detail screens scrollable, adjust padding</msg><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt</file></path><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailScreen.kt</file></path><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/PublicationDetailScreen.kt</file></path><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt</file></path></item><kind>git</kind></changeSet><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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>444</buildNumber><marked><SHA1>97ee9d4eb11c47d68bfdc6ec1a9b284e3e74a53f</SHA1><branch><SHA1>97ee9d4eb11c47d68bfdc6ec1a9b284e3e74a53f</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>97ee9d4eb11c47d68bfdc6ec1a9b284e3e74a53f</SHA1><branch><SHA1>97ee9d4eb11c47d68bfdc6ec1a9b284e3e74a53f</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>97ee9d4eb11c47d68bfdc6ec1a9b284e3e74a53f</SHA1><branch><SHA1>97ee9d4eb11c47d68bfdc6ec1a9b284e3e74a53f</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20260930_213503.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20260930_213503.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#444</displayName><duration>1627459</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #444</fullDisplayName><id>444</id><inProgress>false</inProgress><keepLog>false</keepLog><number>444</number><queueId>219</queueId><result>SUCCESS</result><timestamp>1790788080353</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/444/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiAgentProfileResourceHttpClientTest.kt</affectedPath><affectedPath>lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiActivityProfileResourceNanoHttpdTest.kt</affectedPath><affectedPath>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt</affectedPath><affectedPath>lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/WithEmbeddedDataSourceServer.kt</affectedPath><affectedPath>lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/auth/GetAuthenticatedXapiAgentsUseCase.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/GetAuthenticatedXapiAgentsUseCaseDbImpl.kt</affectedPath><affectedPath>lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt</affectedPath><affectedPath>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDbTest.kt</affectedPath><affectedPath>lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiStatementResourceNanoHttpdTest.kt</affectedPath><affectedPath>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiAgentProfileResourceRepositoryTest.kt</affectedPath><affectedPath>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStateResourceRepositoryTest.kt</affectedPath><affectedPath>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/WithEmbeddedServerAndRepoClients.kt</affectedPath><affectedPath>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiAgentProfileResourceRepositoryIntegrationTest.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt</affectedPath><affectedPath>README_ADD_YOUR_APP.md</affectedPath><affectedPath>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt</affectedPath><affectedPath>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDbTest.kt</affectedPath><affectedPath>lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiStateResourceNanoHttpdTest.kt</affectedPath><affectedPath>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/AbstractXapiDocumentResourceRepositoryIntegrationTest.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDb.kt</affectedPath><affectedPath>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryIntegrationTest.kt</affectedPath><affectedPath>lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/WithNanoHttpdXapiResource.kt</affectedPath><affectedPath>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStateResourceRepositoryIntegrationTest.kt</affectedPath><affectedPath>lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/NewLocalDataSource.kt</affectedPath><affectedPath>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt</affectedPath><affectedPath>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiDocumentResourceTest.kt</affectedPath><affectedPath>lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiAgentProfileResourceNanoHttpdTest.kt</affectedPath><affectedPath>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt</affectedPath><affectedPath>lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStateResourceHttpClientTest.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</affectedPath><affectedPath>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStateResourceTest.kt</affectedPath><commitId>dc66f8d0fb256ba2e927b12a6399e99a079e8889</commitId><timestamp>1790602139000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update XapiStateResource to enforce permission requirements: allow access to state only for the authenticated users related xapi agents.
</comment><date>2026-09-28 17:28:59 +0400</date><id>dc66f8d0fb256ba2e927b12a6399e99a079e8889</id><msg>Update XapiStateResource to enforce permission requirements: allow access to state only for the authenticated users related xapi agents.</msg><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</file></path><path><editType>edit</editType><file>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStateResourceRepositoryTest.kt</file></path><path><editType>edit</editType><file>lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/WithEmbeddedDataSourceServer.kt</file></path><path><editType>edit</editType><file>lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiStatementResourceNanoHttpdTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStateResourceTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiStateResourceNanoHttpdTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/WithEmbeddedServerAndRepoClients.kt</file></path><path><editType>edit</editType><file>lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiActivityProfileResourceNanoHttpdTest.kt</file></path><path><editType>edit</editType><file>README_ADD_YOUR_APP.md</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDbTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiAgentProfileResourceRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiDocumentResourceTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDb.kt</file></path><path><editType>edit</editType><file>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStateResourceRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDbTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt</file></path><path><editType>edit</editType><file>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/AbstractXapiDocumentResourceRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiStatementRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiActivityProfileResourceHttpClientTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/XapiAgentProfileResourceNanoHttpdTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiAgentProfileResourceHttpClientTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiActivityProfileResourceRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/NewLocalDataSource.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt</file></path><path><editType>edit</editType><file>lib-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/xapi/XapiAgentProfileResourceRepositoryTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-nanohttpd/src/jvmTest/kotlin/world/respect/lib/xapi/nanohttpd/WithNanoHttpdXapiResource.kt</file></path><path><editType>add</editType><file>lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/auth/GetAuthenticatedXapiAgentsUseCase.kt</file></path><path><editType>add</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/GetAuthenticatedXapiAgentsUseCaseDbImpl.kt</file></path><path><editType>edit</editType><file>lib-datalayer-http-client/src/jvmTest/kotlin/world/respect/datalayer/http/school/xapi/XapiStateResourceHttpClientTest.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDb.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt</affectedPath><affectedPath>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDbTest.kt</affectedPath><affectedPath>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiAgentProfileResourceTest.kt</affectedPath><commitId>efdc6836609e04d67a28ec68ca5fecdcfcc9389c</commitId><timestamp>1790604419000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update XapiAgentProfileResourceDb to enforce permission requirements: allow access to state only for the authenticated users related xapi agents.
</comment><date>2026-09-28 18:06:59 +0400</date><id>efdc6836609e04d67a28ec68ca5fecdcfcc9389c</id><msg>Update XapiAgentProfileResourceDb to enforce permission requirements: allow access to state only for the authenticated users related xapi agents.</msg><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDb.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiResourceDb.kt</file></path><path><editType>edit</editType><file>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiAgentProfileResourceTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDbTest.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/build.gradle.kts</affectedPath><affectedPath>lib-xapi-ipc-shared/README.md</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/XapiDocumentAdapter.kt</affectedPath><affectedPath>.junie/guidelines.md</affectedPath><affectedPath>lib-xapi-ipc-shared/src/androidTest/java/world/respect/xapi/ipc/shared/messages/ext/XapiDocumentAdapterTest.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/AGENTS.md</affectedPath><affectedPath>lib-datalayer-db/AGENTS.md</affectedPath><commitId>4590826c4dce9753efdd28a083301f5d917c4850</commitId><timestamp>1790611835000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add XapiDocument bundle adapter for IPC
</comment><date>2026-09-28 20:10:35 +0400</date><id>4590826c4dce9753efdd28a083301f5d917c4850</id><msg>Add XapiDocument bundle adapter for IPC</msg><path><editType>add</editType><file>lib-xapi-ipc-shared/src/androidTest/java/world/respect/xapi/ipc/shared/messages/ext/XapiDocumentAdapterTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-shared/AGENTS.md</file></path><path><editType>add</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/XapiDocumentAdapter.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/build.gradle.kts</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/README.md</file></path><path><editType>edit</editType><file>lib-datalayer-db/AGENTS.md</file></path><path><editType>add</editType><file>.junie/guidelines.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiStatementResourceIpcTest.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataLoadStateExt.kt</affectedPath><affectedPath>lib-xapi-ipc-client/AGENTS.md</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataReadyStateExt.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/WithXapiResourceIpc.kt</affectedPath><affectedPath>lib-xapi-ipc-server/AGENTS.md</affectedPath><affectedPath>lib-xapi-ipc-shared/AGENTS.md</affectedPath><commitId>bf9c2879ec5ba1eae3c3dbea3b75a0a7be857bd1</commitId><timestamp>1790664641000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add XapiStatementResource IPC tests and update IPC bundle serialization
</comment><date>2026-09-29 10:50:41 +0400</date><id>bf9c2879ec5ba1eae3c3dbea3b75a0a7be857bd1</id><msg>Add XapiStatementResource IPC tests and update IPC bundle serialization</msg><path><editType>edit</editType><file>lib-xapi-ipc-shared/AGENTS.md</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/WithXapiResourceIpc.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiStatementResourceIpcTest.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataLoadStateExt.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-client/AGENTS.md</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</file></path><path><editType>delete</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataReadyStateExt.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/AGENTS.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiStatementResourceIpcTest.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/XapiDocumentAdapter.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/WithXapiResourceIpc.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiStateResourceIpcTest.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt</affectedPath><affectedPath>lib-xapi-ipc-server/build.gradle.kts</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt</affectedPath><commitId>f6b1de5f635ffc7476de454ea7acd837459a7867</commitId><timestamp>1790671033000</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 XapiStateResource over IPC and refactor xapi-ipc tests to use the same abstract tests used for database, http, and repository implementations.
</comment><date>2026-09-29 12:37:13 +0400</date><id>f6b1de5f635ffc7476de454ea7acd837459a7867</id><msg>Initial implementation of XapiStateResource over IPC and refactor xapi-ipc tests to use the same abstract tests used for database, http, and repository implementations.</msg><path><editType>add</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/IpcTestApplication.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiStateResourceIpcTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/build.gradle.kts</file></path><path><editType>delete</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiServiceIntegrationTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/XapiDocumentAdapter.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/WithXapiResourceIpc.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiStatementResourceIpcTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcKeys.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiAgentProfileResource.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/BundleParameters.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleStringValues.kt</affectedPath><affectedPath>lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStateResource.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/ParametersExt.kt</affectedPath><affectedPath>lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt</affectedPath><affectedPath>lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt</affectedPath><commitId>cddb1f3275d3901a8d88985fa0b99d82deef140b</commitId><timestamp>1790674466000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add Bundle query parameter helpers and update xAPI IPC to use Parameters
</comment><date>2026-09-29 13:34:26 +0400</date><id>cddb1f3275d3901a8d88985fa0b99d82deef140b</id><msg>Add Bundle query parameter helpers and update xAPI IPC to use Parameters</msg><path><editType>add</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/ParametersExt.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleStringValues.kt</file></path><path><editType>edit</editType><file>lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStateResource.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/BundleParameters.kt</file></path><path><editType>edit</editType><file>lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiActivityProfileResource.kt</file></path><path><editType>edit</editType><file>lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiAgentProfileResource.kt</file></path><path><editType>edit</editType><file>lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/resources/XapiStatementsResource.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceEnum.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiStateResourceIpcTest.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcMethodEnum.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceAndMethod.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt</affectedPath><commitId>4ecaae9a7bb9ca2935fe2775247b1adc2b6b4009</commitId><timestamp>1790679504000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Refactor XapiIpcResourceFlags and add XapiIpcResourceAndMethod
</comment><date>2026-09-29 14:58:24 +0400</date><id>4ecaae9a7bb9ca2935fe2775247b1adc2b6b4009</id><msg>Refactor XapiIpcResourceFlags and add XapiIpcResourceAndMethod</msg><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiStateResourceIpcTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceEnum.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcMethodEnum.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceAndMethod.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/AbstractDocumentResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/StatementsResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/XapiResourceProviderExt.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcStateResourceIncomingHandler.kt</affectedPath><commitId>9da84a63b24916c7e3b21a1e45db41179e4396f6</commitId><timestamp>1790684723000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Refactor XapiIpcService message handling into dedicated resource handlers.
</comment><date>2026-09-29 16:25:23 +0400</date><id>9da84a63b24916c7e3b21a1e45db41179e4396f6</id><msg>Refactor XapiIpcService message handling into dedicated resource handlers.</msg><path><editType>add</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcStateResourceIncomingHandler.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/AbstractDocumentResourceIncomingHandler.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/StatementsResourceIncomingHandler.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/XapiResourceProviderExt.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcResourceIncomingHandler.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/BundleHeaders.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/HeadersExt.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataLoadStateExt.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcStateResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/AbstractDocumentResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/StatementsResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</affectedPath><commitId>001f142bfd024f2c79af1326d8d9f097761a3b93</commitId><timestamp>1790686252000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add BundleHeaders and refactor IPC bundle header and query parameter helpers
</comment><date>2026-09-29 16:50:52 +0400</date><id>001f142bfd024f2c79af1326d8d9f097761a3b93</id><msg>Add BundleHeaders and refactor IPC bundle header and query parameter helpers</msg><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/BundleHeaders.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/AbstractDocumentResourceIncomingHandler.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/HeadersExt.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStatementsResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/StatementsResourceIncomingHandler.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/DataLoadStateExt.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcStateResourceIncomingHandler.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/MessengerExt.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/AbstractDocumentResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiStateResourceIpcTest.kt</affectedPath><commitId>0fac688c04b94da31ccaa95c51a05dc2fb0fffe3</commitId><timestamp>1790701915000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Handle document resource IPC requests asynchronously
</comment><date>2026-09-29 21:11:55 +0400</date><id>0fac688c04b94da31ccaa95c51a05dc2fb0fffe3</id><msg>Handle document resource IPC requests asynchronously</msg><path><editType>add</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/MessengerExt.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/AbstractDocumentResourceIncomingHandler.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiStateResourceIpcTest.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/AbstractDocumentResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/StatementsResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/FlowCollectorExt.kt</affectedPath><commitId>57a1553afc5831edb16dcef7960a0fc8fc9b1b15</commitId><timestamp>1790765358000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Handle xAPI IPC server statement resource requests asynchronously and add flow completion cleanup helper
</comment><date>2026-09-30 14:49:18 +0400</date><id>57a1553afc5831edb16dcef7960a0fc8fc9b1b15</id><msg>Handle xAPI IPC server statement resource requests asynchronously and add flow completion cleanup helper</msg><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/StatementsResourceIncomingHandler.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/AbstractDocumentResourceIncomingHandler.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/FlowCollectorExt.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcActivityProfileResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcAgentProfileResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiAgentProfileResourceIpcTest.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiActivityProfileResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiActivityProfileResourceIpcTest.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/ext/MessageDataExt.kt</affectedPath><affectedPath>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiAgentProfileResourceIpcClient.kt</affectedPath><commitId>62d6551c2f877ff6c9cda56e7781561fb24ae622</commitId><timestamp>1790768294000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add Activity Profile and Agent Profile IPC support.
</comment><date>2026-09-30 15:38:14 +0400</date><id>62d6551c2f877ff6c9cda56e7781561fb24ae622</id><msg>Add Activity Profile and Agent Profile IPC support.</msg><path><editType>add</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiActivityProfileResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiResourceIpcClient.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiActivityProfileResourceIpcTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/ext/BundleExt.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcActivityProfileResourceIncomingHandler.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-shared/src/main/kotlin/world/respect/xapi/ipc/shared/messages/XapiIpcResourceFlags.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcAgentProfileResourceIncomingHandler.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiAgentProfileResourceIpcClient.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/XapiAgentProfileResourceIpcTest.kt</file></path><path><editType>add</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/ext/MessageDataExt.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiActivityProfileResourceIpcClient.kt</affectedPath><affectedPath>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiAgentProfileResourceIpcClient.kt</affectedPath><commitId>51485ce7d9a4c45fc42969f2abf14787d5ced704</commitId><timestamp>1790768661000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Use throwXapiExceptionIfStatusNotSuccessful extension in xAPI IPC resource clients
</comment><date>2026-09-30 15:44:21 +0400</date><id>51485ce7d9a4c45fc42969f2abf14787d5ced704</id><msg>Use throwXapiExceptionIfStatusNotSuccessful extension in xAPI IPC resource clients</msg><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiActivityProfileResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiAgentProfileResourceIpcClient.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-client/src/main/kotlin/world/respect/xapi/ipc/client/XapiStateResourceIpcClient.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiDocumentResourceTest.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</affectedPath><affectedPath>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt</affectedPath><affectedPath>lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeMessengerImpl.kt</affectedPath><affectedPath>lib-xapi-test/build.gradle.kts</affectedPath><affectedPath>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/AbstractDocumentResourceIncomingHandler.kt</affectedPath><affectedPath>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiDocumentAssertions.kt</affectedPath><affectedPath>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/WithXapiResourceIpc.kt</affectedPath><affectedPath>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiAgentProfileResourceTest.kt</affectedPath><affectedPath>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStateResourceTest.kt</affectedPath><commitId>279faf43f09e11139758541d034ec367c0895cc4</commitId><timestamp>1790775367000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add tests for retrieving xAPI documents as Flow and fix IPC flow completion
</comment><date>2026-09-30 17:36:07 +0400</date><id>279faf43f09e11139758541d034ec367c0895cc4</id><msg>Add tests for retrieving xAPI documents as Flow and fix IPC flow completion</msg><path><editType>edit</editType><file>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiActivityProfileResourceTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/XapiIpcService.kt</file></path><path><editType>edit</editType><file>lib-xapi-test/build.gradle.kts</file></path><path><editType>edit</editType><file>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiDocumentResourceTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiStateResourceTest.kt</file></path><path><editType>add</editType><file>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/XapiDocumentAssertions.kt</file></path><path><editType>edit</editType><file>lib-ipc-messagebridge/src/main/kotlin/org/openeel/lib/ipc/messagebridge/IpcMessageBridgeMessengerImpl.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/main/kotlin/world/respect/xapi/ipc/server/ext/AbstractDocumentResourceIncomingHandler.kt</file></path><path><editType>edit</editType><file>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiAgentProfileResourceTest.kt</file></path><path><editType>edit</editType><file>lib-xapi-ipc-server/src/androidTest/java/world/respect/xapi/ipc/server/WithXapiResourceIpc.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiDocumentResourceTest.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiAgentProfileDocumentDao.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDb.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt</affectedPath><affectedPath>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt</affectedPath><affectedPath>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDbTest.kt</affectedPath><affectedPath>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDbTest.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDb.kt</affectedPath><affectedPath>lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ETagAndLastModified.kt</affectedPath><affectedPath>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDocumentDao.kt</affectedPath><commitId>d13b8a230950a228bb2e9ebf29ee387d0803f0f5</commitId><timestamp>1790777538000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Quote ETag values in xAPI document resources and queries
</comment><date>2026-09-30 18:12:18 +0400</date><id>d13b8a230950a228bb2e9ebf29ee387d0803f0f5</id><msg>Quote ETag values in xAPI document resources and queries</msg><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiAgentProfileDocumentDao.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDb.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDbTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiStateResourceDb.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiActivityProfileDocumentDao.kt</file></path><path><editType>edit</editType><file>lib-xapi-test/src/commonMain/kotlin/org/openeel/libxapi/test/AbstractXapiDocumentResourceTest.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDb.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/xapi/daos/XapiStateDocumentDao.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiActivityProfileResourceDbTest.kt</file></path><path><editType>edit</editType><file>lib-dataloadstate/src/commonMain/kotlin/world/respect/lib/dataloadstate/ETagAndLastModified.kt</file></path><path><editType>edit</editType><file>lib-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/xapi/XapiAgentProfileResourceDbTest.kt</file></path></item><kind>git</kind></changeSet><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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>443</buildNumber><marked><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20260929_213357.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20260929_213357.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#443</displayName><duration>1561151</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #443</fullDisplayName><id>443</id><inProgress>false</inProgress><keepLog>false</keepLog><number>443</number><queueId>182</queueId><result>SUCCESS</result><timestamp>1790701680353</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/443/</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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>442</buildNumber><marked><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20260928_213334.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20260928_213334.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#442</displayName><duration>1538566</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #442</fullDisplayName><id>442</id><inProgress>false</inProgress><keepLog>false</keepLog><number>442</number><queueId>152</queueId><result>SUCCESS</result><timestamp>1790615280353</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/442/</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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>441</buildNumber><marked><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20260927_213341.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20260927_213341.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#441</displayName><duration>1545653</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #441</fullDisplayName><id>441</id><inProgress>false</inProgress><keepLog>false</keepLog><number>441</number><queueId>129</queueId><result>SUCCESS</result><timestamp>1790528880243</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/441/</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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>440</buildNumber><marked><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20260926_213339.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20260926_213339.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#440</displayName><duration>1543741</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #440</fullDisplayName><id>440</id><inProgress>false</inProgress><keepLog>false</keepLog><number>440</number><queueId>107</queueId><result>SUCCESS</result><timestamp>1790442480257</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/440/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><color>blue</color><firstBuild _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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>440</buildNumber><marked><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><branch><SHA1>a9b542c379201dadc2b83628271fe759d4b22468</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20260926_213339.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20260926_213339.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#440</displayName><duration>1543741</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #440</fullDisplayName><id>440</id><inProgress>false</inProgress><keepLog>false</keepLog><number>440</number><queueId>107</queueId><result>SUCCESS</result><timestamp>1790442480257</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/440/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></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><healthReport><description>Tests: 0 tests failing out of a total of 7 tests.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>449</buildNumber><marked><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261004_213336.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261004_213336.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#449</displayName><duration>1540895</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #449</fullDisplayName><id>449</id><inProgress>false</inProgress><keepLog>false</keepLog><number>449</number><queueId>333</queueId><result>SUCCESS</result><timestamp>1791133680352</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/449/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>449</buildNumber><marked><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261004_213336.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261004_213336.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#449</displayName><duration>1540895</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #449</fullDisplayName><id>449</id><inProgress>false</inProgress><keepLog>false</keepLog><number>449</number><queueId>333</queueId><result>SUCCESS</result><timestamp>1791133680352</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/449/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>445</buildNumber><marked><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><branch><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><branch><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><branch><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>7</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261001_212210.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261001_212210.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#445</displayName><duration>854009</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #445</fullDisplayName><id>445</id><inProgress>false</inProgress><keepLog>false</keepLog><number>445</number><queueId>253</queueId><result>FAILURE</result><timestamp>1790874480353</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/445/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app-android/src/main/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>lib-shared/src/jvmTest/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCaseTest.kt</affectedPath><affectedPath>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpenEelConstants.kt</affectedPath><affectedPath>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><affectedPath>lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt</affectedPath><affectedPath>lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/publicationdetail/PublicationDetailViewModel.kt</affectedPath><affectedPath>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCase.kt</affectedPath><commitId>4d2a4f4e44b3e5cfecc841da185645457dc1013a</commitId><timestamp>1790788510000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Set package on ACTION_LAUNCH intent when launching OpenEEL apps. Avoid launching a native app that is not actually linked to the given publication. Fixes issue #321
</comment><date>2026-09-30 21:15:10 +0400</date><id>4d2a4f4e44b3e5cfecc841da185645457dc1013a</id><msg>Set package on ACTION_LAUNCH intent when launching OpenEEL apps. Avoid launching a native app that is not actually linked to the given publication. Fixes issue #321</msg><path><editType>edit</editType><file>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt</file></path><path><editType>add</editType><file>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpenEelConstants.kt</file></path><path><editType>add</editType><file>lib-shared/src/jvmTest/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCaseTest.kt</file></path><path><editType>edit</editType><file>app-android/src/main/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>add</editType><file>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCase.kt</file></path><path><editType>edit</editType><file>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path><path><editType>edit</editType><file>lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/publicationdetail/PublicationDetailViewModel.kt</file></path><path><editType>edit</editType><file>lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-core/README_PERMISSION_RECIPE.md</affectedPath><affectedPath>lib-xapi-core/README_PERMISSIONS.md</affectedPath><commitId>9cea818ba83b6b2052e34a92bd08d6268628382d</commitId><timestamp>1790859279000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update permissions concept README.
</comment><date>2026-10-01 16:54:39 +0400</date><id>9cea818ba83b6b2052e34a92bd08d6268628382d</id><msg>Update permissions concept README.</msg><path><editType>delete</editType><file>lib-xapi-core/README_PERMISSION_RECIPE.md</file></path><path><editType>add</editType><file>lib-xapi-core/README_PERMISSIONS.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt</affectedPath><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailScreen.kt</affectedPath><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt</affectedPath><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/PublicationDetailScreen.kt</affectedPath><commitId>6f211e0949e3a26ab55107153b207b2ad555850d</commitId><timestamp>1790862214000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Make detail screens scrollable, adjust padding
</comment><date>2026-10-01 17:43:34 +0400</date><id>6f211e0949e3a26ab55107153b207b2ad555850d</id><msg>Make detail screens scrollable, adjust padding</msg><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt</file></path><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailScreen.kt</file></path><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/PublicationDetailScreen.kt</file></path><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>449</buildNumber><marked><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261004_213336.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261004_213336.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#449</displayName><duration>1540895</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #449</fullDisplayName><id>449</id><inProgress>false</inProgress><keepLog>false</keepLog><number>449</number><queueId>333</queueId><result>SUCCESS</result><timestamp>1791133680352</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/449/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>449</buildNumber><marked><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><branch><SHA1>c8213a6965b8081aeb8b10af77f59881d16281b9</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261004_213336.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261004_213336.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#449</displayName><duration>1540895</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #449</fullDisplayName><id>449</id><inProgress>false</inProgress><keepLog>false</keepLog><number>449</number><queueId>333</queueId><result>SUCCESS</result><timestamp>1791133680352</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/449/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></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><refsremotesoriginmain-maestro-cloud-run _class='hudson.plugins.git.util.Build'><buildNumber>10</buildNumber><marked><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></marked><revision><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><branch><SHA1>4c7679e7b9c80b89ea503c28608711ef175a6ba3</SHA1><name>refs/remotes/origin/main-maestro-cloud-run</name></branch></revision></refsremotesoriginmain-maestro-cloud-run><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>445</buildNumber><marked><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><branch><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><branch><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><branch><SHA1>6f211e0949e3a26ab55107153b207b2ad555850d</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>7</failCount><skipCount>0</skipCount><totalCount>7</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_users_using_qr_code_or_link_test_.mp4</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_002_add_user_direct_test_.mp4</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_003_login_using_school_link_test_.mp4</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_001_browse_lessons_test_.mp4</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_002_browse_demo_app_test_.mp4</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/003_admin_user_assigns_assignment_to_a_class_test_.mp4</relativePath></artifact><artifact><fileName>006_user_send_feedback_test_.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/006_user_send_feedback_test_.mp4</relativePath></artifact><artifact><fileName>001_001_invite_users_using_qr_code_or_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_users_using_qr_code_or_link_test.png</relativePath></artifact><artifact><fileName>001_002_add_user_direct_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_002_add_user_direct_test.png</relativePath></artifact><artifact><fileName>001_003_login_using_school_link_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_003_login_using_school_link_test.png</relativePath></artifact><artifact><fileName>002_001_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_001_browse_lessons_test.png</relativePath></artifact><artifact><fileName>002_002_browse_demo_app_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_002_browse_demo_app_test.png</relativePath></artifact><artifact><fileName>003_admin_user_assigns_assignment_to_a_class_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/003_admin_user_assigns_assignment_to_a_class_test.png</relativePath></artifact><artifact><fileName>006_user_send_feedback_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/006_user_send_feedback_test.png</relativePath></artifact><artifact><fileName>00_Main_Dashboard.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/00_Main_Dashboard.png</relativePath></artifact><artifact><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><fileName>EndToEnd_Test_Artifacts_20261001_212210.zip</fileName><relativePath>build/ci-e2e/artifacts/EndToEnd_Test_Artifacts_20261001_212210.zip</relativePath></artifact><artifact><fileName>respect-cli-1.0.45.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.45.zip</relativePath></artifact><artifact><fileName>respect-server-shadow-1.0.45.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.45.zip</relativePath></artifact><building>false</building><displayName>#445</displayName><duration>854009</duration><estimatedDuration>1544984</estimatedDuration><fullDisplayName>RESPECT-end-to-end #445</fullDisplayName><id>445</id><inProgress>false</inProgress><keepLog>false</keepLog><number>445</number><queueId>253</queueId><result>FAILURE</result><timestamp>1790874480353</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/445/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app-android/src/main/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>lib-shared/src/jvmTest/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCaseTest.kt</affectedPath><affectedPath>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpenEelConstants.kt</affectedPath><affectedPath>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</affectedPath><affectedPath>lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</affectedPath><affectedPath>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt</affectedPath><affectedPath>lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/publicationdetail/PublicationDetailViewModel.kt</affectedPath><affectedPath>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCase.kt</affectedPath><commitId>4d2a4f4e44b3e5cfecc841da185645457dc1013a</commitId><timestamp>1790788510000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Set package on ACTION_LAUNCH intent when launching OpenEEL apps. Avoid launching a native app that is not actually linked to the given publication. Fixes issue #321
</comment><date>2026-09-30 21:15:10 +0400</date><id>4d2a4f4e44b3e5cfecc841da185645457dc1013a</id><msg>Set package on ACTION_LAUNCH intent when launching OpenEEL apps. Avoid launching a native app that is not actually linked to the given publication. Fixes issue #321</msg><path><editType>edit</editType><file>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublicationExt.kt</file></path><path><editType>add</editType><file>lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpenEelConstants.kt</file></path><path><editType>add</editType><file>lib-shared/src/jvmTest/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCaseTest.kt</file></path><path><editType>edit</editType><file>app-android/src/main/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>add</editType><file>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/GetAndroidPackageIdForLaunchableAppUseCase.kt</file></path><path><editType>edit</editType><file>lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt</file></path><path><editType>edit</editType><file>lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/publicationdetail/PublicationDetailViewModel.kt</file></path><path><editType>edit</editType><file>lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-xapi-core/README_PERMISSION_RECIPE.md</affectedPath><affectedPath>lib-xapi-core/README_PERMISSIONS.md</affectedPath><commitId>9cea818ba83b6b2052e34a92bd08d6268628382d</commitId><timestamp>1790859279000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update permissions concept README.
</comment><date>2026-10-01 16:54:39 +0400</date><id>9cea818ba83b6b2052e34a92bd08d6268628382d</id><msg>Update permissions concept README.</msg><path><editType>delete</editType><file>lib-xapi-core/README_PERMISSION_RECIPE.md</file></path><path><editType>add</editType><file>lib-xapi-core/README_PERMISSIONS.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt</affectedPath><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailScreen.kt</affectedPath><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt</affectedPath><affectedPath>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/PublicationDetailScreen.kt</affectedPath><commitId>6f211e0949e3a26ab55107153b207b2ad555850d</commitId><timestamp>1790862214000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Make detail screens scrollable, adjust padding
</comment><date>2026-10-01 17:43:34 +0400</date><id>6f211e0949e3a26ab55107153b207b2ad555850d</id><msg>Make detail screens scrollable, adjust padding</msg><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/home/HomeScreen.kt</file></path><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeeddetail/OpdsFeedDetailScreen.kt</file></path><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/publicationdetail/PublicationDetailScreen.kt</file></path><path><editType>edit</editType><file>lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit></lastUnsuccessfulBuild><nextBuildNumber>450</nextBuildNumber><property _class='jenkins.model.BuildDiscarderProperty'></property><property _class='hudson.plugins.throttleconcurrents.ThrottleJobProperty'></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>