<freeStyleBuild _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>113</buildNumber><marked><SHA1>f98f983b325e5575b889ba4cde45cdf87f9f0656</SHA1><branch><SHA1>f98f983b325e5575b889ba4cde45cdf87f9f0656</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>f98f983b325e5575b889ba4cde45cdf87f9f0656</SHA1><branch><SHA1>f98f983b325e5575b889ba4cde45cdf87f9f0656</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>f98f983b325e5575b889ba4cde45cdf87f9f0656</SHA1><branch><SHA1>f98f983b325e5575b889ba4cde45cdf87f9f0656</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></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>001_001_invite_using_invite_code_test.mp4</displayPath><fileName>001_001_invite_using_invite_code_test.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/001_001_invite_using_invite_code_test.mp4</relativePath></artifact><artifact><displayPath>001_002_add_user_direct_test.mp4</displayPath><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><displayPath>001_003_login_using_school_link_test.mp4</displayPath><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><displayPath>002_browse_lessons_test.mp4</displayPath><fileName>002_browse_lessons_test.mp4</fileName><relativePath>.maestro/video-downloader/cypress/downloads/002_browse_lessons_test.mp4</relativePath></artifact><artifact><displayPath>003_admin_user_assigns_assignment_to_a_class_test.mp4</displayPath><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><displayPath>001_001_invite_using_invite_code_test.png</displayPath><fileName>001_001_invite_using_invite_code_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/001_001_invite_using_invite_code_test.png</relativePath></artifact><artifact><displayPath>001_002_add_user_direct_test.png</displayPath><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><displayPath>001_003_login_using_school_link_test.png</displayPath><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><displayPath>002_browse_lessons_test.png</displayPath><fileName>002_browse_lessons_test.png</fileName><relativePath>.maestro/video-downloader/cypress/screenshots/extract-maestro-video-urls.cy.js/002_browse_lessons_test.png</relativePath></artifact><artifact><displayPath>003_admin_user_assigns_assignment_to_a_class_test.png</displayPath><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><displayPath>00_Main_Dashboard.png</displayPath><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><displayPath>respect-app-compose-debug.apk</displayPath><fileName>respect-app-compose-debug.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk</relativePath></artifact><artifact><displayPath>respect-app-compose-release.apk</displayPath><fileName>respect-app-compose-release.apk</fileName><relativePath>respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk</relativePath></artifact><artifact><displayPath>mapping.txt</displayPath><fileName>mapping.txt</fileName><relativePath>respect-app-compose/build/outputs/mapping/release/mapping.txt</relativePath></artifact><artifact><displayPath>respect-cli.zip</displayPath><fileName>respect-cli.zip</fileName><relativePath>respect-cli/build/distributions/respect-cli.zip</relativePath></artifact><artifact><displayPath>respect-server-1.0.0.zip</displayPath><fileName>respect-server-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-1.0.0.zip</relativePath></artifact><artifact><displayPath>respect-server-shadow-1.0.0.zip</displayPath><fileName>respect-server-shadow-1.0.0.zip</fileName><relativePath>respect-server/build/distributions/respect-server-shadow-1.0.0.zip</relativePath></artifact><building>false</building><displayName>#113</displayName><duration>968504</duration><estimatedDuration>1580838</estimatedDuration><fullDisplayName>RESPECT-end-to-end #113</fullDisplayName><id>113</id><inProgress>false</inProgress><keepLog>false</keepLog><number>113</number><queueId>5067</queueId><result>SUCCESS</result><timestamp>1767619726609</timestamp><url>https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/113/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer/AGENTS.md</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/UnauthorizedException.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSourceLocal.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/GetAuthenticatedPersonUseCase.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPermissionGrantEntity.kt</affectedPath><affectedPath>respect-datalayer/build.gradle.kts</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonExt.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/ForbiddenException.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolPermissionGrantAdapter.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt</affectedPath><affectedPath>respect-datalayer-db/AGENTS.md</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>AGENTS.md</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><commitId>fb4cdd11f1d6441233f2531f788c52eb88a3e0b1</commitId><timestamp>1761142573000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add permission management: work in progress.
</comment><date>2025-10-22 18:16:13 +0400</date><id>fb4cdd11f1d6441233f2531f788c52eb88a3e0b1</id><msg>Add permission management: work in progress.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer/build.gradle.kts</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-datalayer-db/AGENTS.md</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/UnauthorizedException.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</file></path><path><editType>add</editType><file>AGENTS.md</file></path><path><editType>delete</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolPermissionGrantAdapter.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/GetAuthenticatedPersonUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt</file></path><path><editType>add</editType><file>respect-datalayer/AGENTS.md</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSourceLocal.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/ForbiddenException.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.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>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPermissionGrantEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer/AGENTS.md</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-http/AGENTS.md</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt</affectedPath><affectedPath>respect-datalayer-repository/AGENTS.md</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt</affectedPath><commitId>d63a784ce84ad38f86491b031d6bad9bdf187dd5</commitId><timestamp>1761204786000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add SchoolPermissionGrantDataSource implementations.
</comment><date>2025-10-23 11:33:06 +0400</date><id>d63a784ce84ad38f86491b031d6bad9bdf187dd5</id><msg>Add SchoolPermissionGrantDataSource implementations.</msg><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer/AGENTS.md</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt</file></path><path><editType>add</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</file></path><path><editType>add</editType><file>respect-datalayer-repository/AGENTS.md</file></path><path><editType>add</editType><file>respect-datalayer-http/AGENTS.md</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt</file></path><path><editType>add</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/Application.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt</affectedPath><commitId>d087ad04fa1983803a659a5cee2339fce1be58e5</commitId><timestamp>1761227669000</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 using CheckPersonPermissionUseCase
</comment><date>2025-10-23 17:54:29 +0400</date><id>d087ad04fa1983803a659a5cee2339fce1be58e5</id><msg>Initial implementation of using CheckPersonPermissionUseCase</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</file></path><path><editType>add</editType><file>respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/Application.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><commitId>ae01d219481d0814d5c5e323cee98ad0aea3e4ab</commitId><timestamp>1761230727000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fixes for PersonRepositoryIntegrationTest.kt (one test remaining)
</comment><date>2025-10-23 18:45:27 +0400</date><id>ae01d219481d0814d5c5e323cee98ad0aea3e4ab</id><msg>Fixes for PersonRepositoryIntegrationTest.kt (one test remaining)</msg><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRoleEnum.kt</affectedPath><affectedPath>respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/MapPagingSource.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</affectedPath><commitId>6869dd8e50b4394a92548905d11560e18966dafc</commitId><timestamp>1762179475000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Permission enforcement work in progress

a) throw ForbiddenException / return status code 403 if a request for a person is made that the user is not authorized to see. Marking the response as forbidden, rather than returning an empty json allows fail2ban/throttling implementation when someone is up to no good.
b) Fix usage of add default grants in add school use case.
</comment><date>2025-11-03 18:17:55 +0400</date><id>6869dd8e50b4394a92548905d11560e18966dafc</id><msg>Permission enforcement work in progress</msg><path><editType>edit</editType><file>respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/MapPagingSource.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRoleEnum.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt</affectedPath><commitId>bc306635b7538babc81b849bbdf473d47a802f9b</commitId><timestamp>1764246578000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix compilation after merging main updates.
</comment><date>2025-11-27 16:29:38 +0400</date><id>bc306635b7538babc81b849bbdf473d47a802f9b</id><msg>Fix compilation after merging main updates.</msg><path><editType>edit</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntityWithPermissions.kt</affectedPath><affectedPath>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassPermissionEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassPermission.kt</affectedPath><commitId>a15f134552b8149b5d6d43b156454a15d6f1351f</commitId><timestamp>1764942544000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add CLassPermission to model and datasources.
</comment><date>2025-12-05 17:49:04 +0400</date><id>a15f134552b8149b5d6d43b156454a15d6f1351f</id><msg>Add CLassPermission to model and datasources.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntityWithPermissions.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassPermissionEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassPermission.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt</affectedPath><commitId>cc7ef41804c7789e5490b90873e49f2a85046e40</commitId><timestamp>1765197753000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update RespectAccountManager to use a shared hot flow to prevent lag.
</comment><date>2025-12-08 16:42:33 +0400</date><id>cc7ef41804c7789e5490b90873e49f2a85046e40</id><msg>Update RespectAccountManager to use a shared hot flow to prevent lag.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</affectedPath><commitId>1834bca60da831c327c95e30c4eba74544daf259</commitId><timestamp>1765203505000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Enforce class view permissions including support for enrollment role-based permissions.
</comment><date>2025-12-08 18:18:25 +0400</date><id>1834bca60da831c327c95e30c4eba74544daf259</id><msg>Enforce class view permissions including support for enrollment role-based permissions.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/WritableDataSource.kt</affectedPath><commitId>c2aadbfda36308b406464f90d050fa95e775c294</commitId><timestamp>1765460539000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Enforce class write permission.
</comment><date>2025-12-11 17:42:19 +0400</date><id>c2aadbfda36308b406464f90d050fa95e775c294</id><msg>Enforce class write permission.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/WritableDataSource.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</affectedPath><commitId>ab1f830df858d5a9367b4500fdb738adcc22d711</commitId><timestamp>1765461416000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Merge session changes from main.
</comment><date>2025-12-11 17:56:56 +0400</date><id>ab1f830df858d5a9367b4500fdb738adcc22d711</id><msg>Merge session changes from main.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><commitId>517121263286883aee09ecd77b95e570980cc5fb</commitId><timestamp>1765727646000</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 read person permission checks.
</comment><date>2025-12-14 15:54:06 +0000</date><id>517121263286883aee09ecd77b95e570980cc5fb</id><msg>Initial implementation of read person permission checks.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><commitId>87132ca9c0b370017c9c8fea4ce97753b477161c</commitId><timestamp>1765739839000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Handle permissions for parents based on class permissions of children.
</comment><date>2025-12-14 19:17:19 +0000</date><id>87132ca9c0b370017c9c8fea4ce97753b477161c</id><msg>Handle permissions for parents based on class permissions of children.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt</affectedPath><commitId>e49f7dd1f03c83732a47062c9b31bc4c18837b2e</commitId><timestamp>1765884380000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add permission enforcement/checks to enrollment entities.
</comment><date>2025-12-16 15:26:20 +0400</date><id>e49f7dd1f03c83732a47062c9b31bc4c18837b2e</id><msg>Add permission enforcement/checks to enrollment entities.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt</affectedPath><commitId>0e6dd7db5e356d4ee99e8669bc7809eef38ba359</commitId><timestamp>1765975040000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix ClassPermissionEntity to use autoincrement primary key
Update PersonDataSource permission checks to add a CTE to get the permission personuid list (active user plus any children personuids in the case of a parent user).
</comment><date>2025-12-17 16:37:20 +0400</date><id>0e6dd7db5e356d4ee99e8669bc7809eef38ba359</id><msg>Fix ClassPermissionEntity to use autoincrement primary key</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</affectedPath><commitId>8e1628f9325ca674d471b5c23fcc5391ba7f15cb</commitId><timestamp>1766060857000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update CheckPersonPermissionUseCase: can be used before person is saved to db or after saved to db without needing to lookup role.
</comment><date>2025-12-18 16:27:37 +0400</date><id>8e1628f9325ca674d471b5c23fcc5391ba7f15cb</id><msg>Update CheckPersonPermissionUseCase: can be used before person is saved to db or after saved to db without needing to lookup role.</msg><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><commitId>2ae2abfd160d041c9ab2d362775b8e0043f90180</commitId><timestamp>1766066355000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Fix person entity list permission check to include viewing related persons for the authenticated user.
</comment><date>2025-12-18 17:59:15 +0400</date><id>2ae2abfd160d041c9ab2d362775b8e0043f90180</id><msg>Fix person entity list permission check to include viewing related persons for the authenticated user.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonPasswordEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasswordDataSourceDb.kt</affectedPath><commitId>63f5ea635a01235f174d8e760dcadc8c30425589</commitId><timestamp>1766144945000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update SQL to enforce password entity permissions
</comment><date>2025-12-19 15:49:05 +0400</date><id>63f5ea635a01235f174d8e760dcadc8c30425589</id><msg>Update SQL to enforce password entity permissions</msg><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonPasswordEntityDao.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasswordDataSourceDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/PersonPasskeyEntityDao.kt</affectedPath><commitId>a2a843193719003af2e543ad2c191dda17806def</commitId><timestamp>1766145521000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Remove unused PersonPasskeyEntityDao functions.
</comment><date>2025-12-19 15:58:41 +0400</date><id>a2a843193719003af2e543ad2c191dda17806def</id><msg>Remove unused PersonPasskeyEntityDao functions.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/PersonPasskeyEntityDao.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt</affectedPath><commitId>f024121520d5998e74f73092cca2d9064ac1fbf6</commitId><timestamp>1766146428000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update PersonDataSourceDb to follow same function name pattern as other DAOs and split store/updateLocal
</comment><date>2025-12-19 16:13:48 +0400</date><id>f024121520d5998e74f73092cca2d9064ac1fbf6</id><msg>Update PersonDataSourceDb to follow same function name pattern as other DAOs and split store/updateLocal</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><commitId>b5d3d5ccb23cd53f30c116ce775afb033c33b034</commitId><timestamp>1766396276000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update class permission queries to include permissions for parents to see child's classes.
Update use of select AuthenticatedPermissionPersonUids to use constant.
</comment><date>2025-12-22 13:37:56 +0400</date><id>b5d3d5ccb23cd53f30c116ce775afb033c33b034</id><msg>Update class permission queries to include permissions for parents to see child's classes.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/SchoolPermissionGrantExt.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</affectedPath><commitId>417df627dae1a87979c76f7cf53bdf84c2b70d29</commitId><timestamp>1766408696000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add CheckSchoolPermissionsUseCase and use it in PersonList and ClassList to control the visibility of add button.
Update junit tests to handle permissions
</comment><date>2025-12-22 17:04:56 +0400</date><id>417df627dae1a87979c76f7cf53bdf84c2b70d29</id><msg>Add CheckSchoolPermissionsUseCase and use it in PersonList and ClassList to control the visibility of add button.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt</file></path><path><editType>edit</editType><file>respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt</file></path><path><editType>add</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/SchoolPermissionGrantExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/entities/NetworkValidationInfoEntity.kt</affectedPath><affectedPath>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/RepoWorkerConstants.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueRunPullSyncUseCase.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt</affectedPath><affectedPath>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</affectedPath><affectedPath>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/EnqueueRunPullSyncUseCaseAndroidImpl.kt</affectedPath><affectedPath>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncWorker.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkValidationInfo.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt</affectedPath><affectedPath>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/2.json</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/PullSyncTracker.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/EnqueueDrainRemoteWriteQueueUseCaseAndroidImpl.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PullSyncStatusEntityDao.kt</affectedPath><affectedPath>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueWorker.kt</affectedPath><affectedPath>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/WorkerExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/DataBuilderExt.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueDrainRemoteWriteQueueUseCase.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt</affectedPath><commitId>e08156910ebb699221cc9ebc660c9c728879bb6d</commitId><timestamp>1767018672000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Implement pulling enrollment entities using a worker.

Required to ensure permissions are resolved as expected.
</comment><date>2025-12-29 18:31:12 +0400</date><id>e08156910ebb699221cc9ebc660c9c728879bb6d</id><msg>Implement pulling enrollment entities using a worker.</msg><path><editType>add</editType><file>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/WorkerExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/EnqueueDrainRemoteWriteQueueUseCaseAndroidImpl.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/entities/NetworkValidationInfoEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkValidationInfo.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt</file></path><path><editType>add</editType><file>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/RepoWorkerConstants.kt</file></path><path><editType>add</editType><file>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncWorker.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt</file></path><path><editType>add</editType><file>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/DataBuilderExt.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json</file></path><path><editType>add</editType><file>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/EnqueueRunPullSyncUseCaseAndroidImpl.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/2.json</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueDrainRemoteWriteQueueUseCase.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PullSyncStatusEntityDao.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueWorker.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/PullSyncTracker.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>add</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueRunPullSyncUseCase.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetPermissionLastModifiedUseCase.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/GetPermissionLastModifiedUseCaseDbImpl.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/pullsync/PullSyncTracker.kt</affectedPath><affectedPath>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/PullSyncTracker.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/OrderOption.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt</affectedPath><affectedPath>respect-server/src/main/kotlin/world/respect/server/routes/school/respect/EnrollmentRoute.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerHeaders.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt</affectedPath><commitId>75fc244fba28cda004d8274bd698f53cf9761e31</commitId><timestamp>1767114370000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add sinceIfPermissionsNotChangedSince parameter support.

Used to ensure that when permissions change (eg. as a result of a person joining a class) that the user does not miss out on updates being retrieved via pull sync runs.
</comment><date>2025-12-30 21:06:10 +0400</date><id>75fc244fba28cda004d8274bd698f53cf9761e31</id><msg>Add sinceIfPermissionsNotChangedSince parameter support.</msg><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt</file></path><path><editType>add</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/GetPermissionLastModifiedUseCaseDbImpl.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/pullsync/PullSyncTracker.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt</file></path><path><editType>delete</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/PullSyncTracker.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerHeaders.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetPermissionLastModifiedUseCase.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt</file></path><path><editType>add</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/OrderOption.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt</file></path><path><editType>edit</editType><file>respect-server/src/main/kotlin/world/respect/server/routes/school/respect/EnrollmentRoute.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json</file></path><path><editType>edit</editType><file>respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentAssigneeRefEntityDao.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Assignment.kt</affectedPath><affectedPath>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentEntity.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AssignmentAdapter.kt</affectedPath><affectedPath>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentAssigneeRef.kt</affectedPath><commitId>bddb16ab6a058c879b320758a100a856d8296176</commitId><timestamp>1767197488000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Refactor assignment to link one assignment to one class.
</comment><date>2025-12-31 20:11:28 +0400</date><id>bddb16ab6a058c879b320758a100a856d8296176</id><msg>Refactor assignment to link one assignment to one class.</msg><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Assignment.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AssignmentAdapter.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentEntity.kt</file></path><path><editType>delete</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentAssigneeRefEntityDao.kt</file></path><path><editType>delete</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentAssigneeRef.kt</file></path><path><editType>edit</editType><file>respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentEntityDao.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentAssigneeRefEntity.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt</affectedPath><commitId>729a6eaf049d5d8ef25eb567613d23b4ee963184</commitId><timestamp>1767200016000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Initial permission check for assignment read.
</comment><date>2025-12-31 20:53:36 +0400</date><id>729a6eaf049d5d8ef25eb567613d23b4ee963184</id><msg>Initial permission check for assignment read.</msg><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentEntityDao.kt</file></path><path><editType>delete</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentAssigneeRefEntity.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt</affectedPath><affectedPath>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt</affectedPath><affectedPath>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt</affectedPath><affectedPath>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/shared/paging/OffsetLimitHttpPagingSource.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</affectedPath><affectedPath>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt</affectedPath><affectedPath>.maestro/flows/001_001_invite_using_invite_code_test.yaml</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</affectedPath><affectedPath>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt</affectedPath><commitId>9036fcffa2b121cab5d6ba66660b96661e8785ce</commitId><timestamp>1767544118000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Run pull sync fixes:

a) Handle not-modified http response status
b) Ensure not-modified http dataloadstate preserves metadata
c) Update ClazzViewModel to use only enqueue run pull sync to update enrollments.
</comment><date>2026-01-04 20:28:38 +0400</date><id>9036fcffa2b121cab5d6ba66660b96661e8785ce</id><msg>Run pull sync fixes:</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt</file></path><path><editType>edit</editType><file>.maestro/flows/001_001_invite_using_invite_code_test.yaml</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt</file></path><path><editType>edit</editType><file>respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt</file></path><path><editType>edit</editType><file>respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/shared/paging/OffsetLimitHttpPagingSource.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt</file></path><path><editType>edit</editType><file>respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt</affectedPath><commitId>b7e0f98a0418c132f169f6e245a7ecc96de2ec31</commitId><timestamp>1767545996000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Update SignupViewModel: remove unnecessary scope.launc that should not be there.
</comment><date>2026-01-04 20:59:56 +0400</date><id>b7e0f98a0418c132f169f6e245a7ecc96de2ec31</id><msg>Update SignupViewModel: remove unnecessary scope.launc that should not be there.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt</affectedPath><commitId>67c2d84be6085b3af5016c63ef358f741bc375f4</commitId><timestamp>1767547604000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add debugging logs to SignupViewModel.
Remove signupviewmodel async launch functions setting app uistate that was not necessary.
</comment><date>2026-01-04 21:26:44 +0400</date><id>67c2d84be6085b3af5016c63ef358f741bc375f4</id><msg>Add debugging logs to SignupViewModel.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt</affectedPath><affectedPath>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileType.kt</affectedPath><commitId>fdb330302942df56686f26d34554ec40158a02dd</commitId><timestamp>1767550670000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add more debugging logs to SignupViewModel.
Fix ProfileType enum to use serialization as per pattern (using a string constant) to avoid potential discrepency between minified and non minified versions.
</comment><date>2026-01-04 22:17:50 +0400</date><id>fdb330302942df56686f26d34554ec40158a02dd</id><msg>Add more debugging logs to SignupViewModel.</msg><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileType.kt</file></path><path><editType>edit</editType><file>respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows/000_000_hello_world.yaml</affectedPath><affectedPath>.maestro/flows/001_001_invite_using_invite_code_test.yaml</affectedPath><commitId>b7676667f0a9cf5bd27160cfb25a08e236734121</commitId><timestamp>1767552139000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Remove hello world maestro flow
Tweak 001_001 to try and avoid maestro flakey tap
</comment><date>2026-01-04 22:42:19 +0400</date><id>b7676667f0a9cf5bd27160cfb25a08e236734121</id><msg>Remove hello world maestro flow</msg><path><editType>delete</editType><file>.maestro/flows/000_000_hello_world.yaml</file></path><path><editType>edit</editType><file>.maestro/flows/001_001_invite_using_invite_code_test.yaml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows/001_001_invite_using_invite_code_test.yaml</affectedPath><commitId>1984e6061772b1f7ee97c21753e3852c7b84b8e4</commitId><timestamp>1767552389000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add retryTapIfNoChange to 001_001.
</comment><date>2026-01-04 22:46:29 +0400</date><id>1984e6061772b1f7ee97c21753e3852c7b84b8e4</id><msg>Add retryTapIfNoChange to 001_001.</msg><path><editType>edit</editType><file>.maestro/flows/001_001_invite_using_invite_code_test.yaml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows/001_001_invite_using_invite_code_test.yaml</affectedPath><commitId>e0d6182b066450057da81bbd834f21746f729626</commitId><timestamp>1767553784000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Remove action bar id parameter from 001_001
</comment><date>2026-01-04 23:09:44 +0400</date><id>e0d6182b066450057da81bbd834f21746f729626</id><msg>Remove action bar id parameter from 001_001</msg><path><editType>edit</editType><file>.maestro/flows/001_001_invite_using_invite_code_test.yaml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows/subflows/tap_done_again.yaml</affectedPath><affectedPath>.maestro/flows/001_001_invite_using_invite_code_test.yaml</affectedPath><commitId>45071e76474e3dccbea467bb5da8fb19db44369f</commitId><timestamp>1767555668000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Add repeat loop workaround for waiting Maestro cloud error.
</comment><date>2026-01-04 23:41:08 +0400</date><id>45071e76474e3dccbea467bb5da8fb19db44369f</id><msg>Add repeat loop workaround for waiting Maestro cloud error.</msg><path><editType>edit</editType><file>.maestro/flows/001_001_invite_using_invite_code_test.yaml</file></path><path><editType>add</editType><file>.maestro/flows/subflows/tap_done_again.yaml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.maestro/flows/001_001_invite_using_invite_code_test.yaml</affectedPath><commitId>73c7dc12bb5b15ea41adc790e939f933c63749de</commitId><timestamp>1767556723000</timestamp><author><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></author><authorEmail>mike@ustadmobile.com</authorEmail><comment>Another attempt for 001_001 maestro workaround.
</comment><date>2026-01-04 23:58:43 +0400</date><id>73c7dc12bb5b15ea41adc790e939f933c63749de</id><msg>Another attempt for 001_001 maestro workaround.</msg><path><editType>edit</editType><file>.maestro/flows/001_001_invite_using_invite_code_test.yaml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devserver3.ustadmobile.com/jenkins/user/mike</absoluteUrl><fullName>Mike Dawson</fullName></culprit></freeStyleBuild>