<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev-playlists-links _class='hudson.plugins.git.util.Build'><buildNumber>128</buildNumber><marked><SHA1>7f131744491ddc0efd6abd008ed9a076919f13ca</SHA1><branch><SHA1>7f131744491ddc0efd6abd008ed9a076919f13ca</SHA1><name>refs/remotes/origin/dev-playlists-links</name></branch></marked><revision><SHA1>7f131744491ddc0efd6abd008ed9a076919f13ca</SHA1><branch><SHA1>7f131744491ddc0efd6abd008ed9a076919f13ca</SHA1><name>refs/remotes/origin/dev-playlists-links</name></branch></revision></refsremotesorigindev-playlists-links></buildsByBranchName><lastBuiltRevision><SHA1>7f131744491ddc0efd6abd008ed9a076919f13ca</SHA1><branch><SHA1>7f131744491ddc0efd6abd008ed9a076919f13ca</SHA1><name>refs/remotes/origin/dev-playlists-links</name></branch></lastBuiltRevision><remoteUrl>https://github.com/UstadMobile/Respect.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>app-android-debug.apk</displayPath><fileName>app-android-debug.apk</fileName><relativePath>app-android/build/outputs/apk/debug/app-android-debug.apk</relativePath></artifact><artifact><displayPath>app-android-release.apk</displayPath><fileName>app-android-release.apk</fileName><relativePath>app-android/build/outputs/apk/release/app-android-release.apk</relativePath></artifact><artifact><displayPath>app-android-debug.aab</displayPath><fileName>app-android-debug.aab</fileName><relativePath>app-android/build/outputs/bundle/debug/app-android-debug.aab</relativePath></artifact><artifact><displayPath>app-android-release.aab</displayPath><fileName>app-android-release.aab</fileName><relativePath>app-android/build/outputs/bundle/release/app-android-release.aab</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>app-android/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli-1.0.39.zip</displayPath><fileName>respect-cli-1.0.39.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli-1.0.39.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.39.zip</displayPath><fileName>respect-server-1.0.39.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.39.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.39.zip</displayPath><fileName>respect-server-shadow-1.0.39.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.39.zip</relativePath></artifact><building>false</building><displayName>#128</displayName><duration>156636</duration><estimatedDuration>156269</estimatedDuration><fullDisplayName>dev-playlists-links #128</fullDisplayName><id>128</id><inProgress>false</inProgress><keepLog>false</keepLog><number>128</number><queueId>11252</queueId><result>SUCCESS</result><timestamp>1786997100445</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/dev-playlists-links/128/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt</affectedPath><affectedPath>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddItemBottomSheet.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt</affectedPath><affectedPath>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedItemIndex.kt</affectedPath><affectedPath>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/SetExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt</affectedPath><commitId>3e7914c436ac81358bb1d409f0243b793b43e12f</commitId><timestamp>1786914595000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Change selection handling on OpdsFeedDetail to use indexes because the Opds spec provides no promise of providing identifiers, or that thosse identifiers will be unique.

Hide bottom navigation when in picker mode for opdsfeed. Hide fab buttons when in picker mode.
</comment><date>2026-08-16 22:09:55 +0100</date><id>3e7914c436ac81358bb1d409f0243b793b43e12f</id><msg>Change selection handling on OpdsFeedDetail to use indexes because the Opds spec provides no promise of providing identifiers, or that thosse identifiers will be unique.</msg><path><editType>edit</editType><file>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</file></path><path><editType>add</editType><file>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedItemIndex.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/editfeed/OpdsFeedEditAddItemBottomSheet.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/OpdsPublicationExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt</file></path><path><editType>add</editType><file>respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/SetExt.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedListItem.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onappstart/NavigateOnAppStartUseCase.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt</affectedPath><affectedPath>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsPickType.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsFeedSelection.kt</affectedPath><affectedPath>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublication.kt</affectedPath><affectedPath>respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt</affectedPath><affectedPath>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt</affectedPath><affectedPath>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsDocument.kt</affectedPath><commitId>bb23065b90ecfb762580fe39960f1976477d1580</commitId><timestamp>1786991141000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fixes for selecting navigation feeds from OpdsFeedEdit

Implement similar logic for checkbox display/handling for selecting a catalog.

Delete failing PlaylistRepositoryIntegrationTest: data will be stored using xAPI, so this is obsolete anyway.
</comment><date>2026-08-17 22:25:41 +0400</date><id>bb23065b90ecfb762580fe39960f1976477d1580</id><msg>Fixes for selecting navigation feeds from OpdsFeedEdit</msg><path><editType>add</editType><file>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsDocument.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</file></path><path><editType>delete</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PlaylistRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt</file></path><path><editType>add</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsFeedSelection.kt</file></path><path><editType>add</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedListItem.kt</file></path><path><editType>edit</editType><file>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsFeed.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/OpdsPublication.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/ReadiumLinkExt.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/OpdsFeedDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/composeResources/values/strings.xml</file></path><path><editType>edit</editType><file>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/onappstart/NavigateOnAppStartUseCase.kt</file></path><path><editType>add</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/OpdsPickType.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt</affectedPath><commitId>7f131744491ddc0efd6abd008ed9a076919f13ca</commitId><timestamp>1786992077000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Implement support for selecting multiple feeds in OpdsFeedEdit.
</comment><date>2026-08-17 22:41:17 +0400</date><id>7f131744491ddc0efd6abd008ed9a076919f13ca</id><msg>Implement support for selecting multiple feeds in OpdsFeedEdit.</msg><path><editType>edit</editType><file>respect-lib-opds-model/src/commonMain/kotlin/world/respect/lib/opds/model/ext/OpdsFeedExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/editfeed/OpdsFeedEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/OpdsFeedDetailViewModel.kt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit></freeStyleBuild>