{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.TimerTrigger$TimerTriggerCause",
          "shortDescription" : "Started by timer"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/main" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 186,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "bf99dacbc47498b2bbfc19ec71c5edf46c697418",
            "branch" : [
              {
                "SHA1" : "bf99dacbc47498b2bbfc19ec71c5edf46c697418",
                "name" : "refs/remotes/origin/main"
              }
            ]
          },
          "revision" : {
            "SHA1" : "bf99dacbc47498b2bbfc19ec71c5edf46c697418",
            "branch" : [
              {
                "SHA1" : "bf99dacbc47498b2bbfc19ec71c5edf46c697418",
                "name" : "refs/remotes/origin/main"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "bf99dacbc47498b2bbfc19ec71c5edf46c697418",
        "branch" : [
          {
            "SHA1" : "bf99dacbc47498b2bbfc19ec71c5edf46c697418",
            "name" : "refs/remotes/origin/main"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/UstadMobile/Respect.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "respect-app-compose-debug.apk",
      "fileName" : "respect-app-compose-debug.apk",
      "relativePath" : "respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk"
    },
    {
      "displayPath" : "respect-app-compose-release.apk",
      "fileName" : "respect-app-compose-release.apk",
      "relativePath" : "respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk"
    },
    {
      "displayPath" : "respect-app-compose-debug.aab",
      "fileName" : "respect-app-compose-debug.aab",
      "relativePath" : "respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab"
    },
    {
      "displayPath" : "respect-app-compose-release.aab",
      "fileName" : "respect-app-compose-release.aab",
      "relativePath" : "respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab"
    },
    {
      "displayPath" : "mapping.txt",
      "fileName" : "mapping.txt",
      "relativePath" : "respect-app-compose/build/outputs/mapping/release/mapping.txt"
    },
    {
      "displayPath" : "respect-cli.zip",
      "fileName" : "respect-cli.zip",
      "relativePath" : "respect-cli/build/distributions/respect-cli.zip"
    },
    {
      "displayPath" : "respect-server-1.0.0.zip",
      "fileName" : "respect-server-1.0.0.zip",
      "relativePath" : "respect-server/build/distributions/respect-server-1.0.0.zip"
    },
    {
      "displayPath" : "respect-server-shadow-1.0.0.zip",
      "fileName" : "respect-server-shadow-1.0.0.zip",
      "relativePath" : "respect-server/build/distributions/respect-server-shadow-1.0.0.zip"
    }
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#186",
  "duration" : 152344,
  "estimatedDuration" : 152823,
  "executor" : None,
  "fullDisplayName" : "RESPECT-Primary #186",
  "id" : "186",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 186,
  "queueId" : 4256,
  "result" : "SUCCESS",
  "timestamp" : 1763385060957,
  "url" : "https://devserver3.ustadmobile.com/jenkins/job/RESPECT-Primary/186/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
        ],
        "commitId" : "25bea1faee1693d9be97010d312257523e7f290e",
        "timestamp" : 1762508004000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Add enrollment list route\u000a\u000aA new `EnrollmentList` route is added to `AppRoutes.kt` to handle navigation to the enrollment list screen.\u000a",
        "date" : "2025-11-07 15:03:24 +0530",
        "id" : "25bea1faee1693d9be97010d312257523e7f290e",
        "msg" : "feat: Add enrollment list route",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "9f264097c76d522b75bb5df340e409872290495a",
        "timestamp" : 1762751082000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Add user management menu in class details\u000a\u000aThis commit introduces a \"More options\" dropdown menu for each teacher and student listed in the class details screen.\u000a\u000aThe menu currently provides placeholder options for \"Remove from class\" and \"Manage enrollments.\"\u000a\u000aKey changes:\u000a- An `IconButton` with a `MoreVert` icon is added as the trailing content for each user `ListItem`.\u000a- A `DropdownMenu` is implemented to show actions when the icon is clicked.\u000a- User display names now use the `fullName()` extension function for consistency.\u000a- New string resources for the menu items (`remove_from_class`, `manage_enrollments`) have been added.\u000a",
        "date" : "2025-11-10 10:34:42 +0530",
        "id" : "9f264097c76d522b75bb5df340e409872290495a",
        "msg" : "feat: Add user management menu in class details",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "532541ace33b922d0846dfde3c320ca79fc78dc5",
        "timestamp" : 1762753469000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Extract Person list item with action menu\u000a\u000aThis commit introduces a new `PersonListItemWithMenu` composable to encapsulate the display of a person in a list, including their avatar, name, and an action menu.\u000a",
        "date" : "2025-11-10 11:14:29 +0530",
        "id" : "532541ace33b922d0846dfde3c320ca79fc78dc5",
        "msg" : "refactor: Extract Person list item with action menu",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "gradle/libs.versions.toml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "14caf5780859a606208cd7c1a7d7687666bafb0e",
        "timestamp" : 1762756520000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "build: Upgrade Android Gradle Plugin to 8.13.0\u000a\u000aThis commit updates the Android Gradle Plugin version from 8.12.3 to 8.13.0.\u000a\u000aAdditionally, it introduces the foundational components for enrollment management:\u000a- Adds placeholder screens for `EnrollmentList` and `EnrollmentEdit`.\u000a- Creates the corresponding `EnrollmentListViewModel` and `EnrollmentEditViewModel`.\u000a- Defines new navigation routes (`EnrollmentList`, `EnrollmentEdit`).\u000a- Registers the new ViewModels for dependency injection.\u000a",
        "date" : "2025-11-10 12:05:20 +0530",
        "id" : "14caf5780859a606208cd7c1a7d7687666bafb0e",
        "msg" : "build: Upgrade Android Gradle Plugin to 8.13.0",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
        ],
        "commitId" : "8bb94992fbc2f2d05c6125a85502ff722271dd8f",
        "timestamp" : 1762766073000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Navigate to enrollment list from class details\u000a\u000aThis commit introduces the ability to navigate from the class details screen to a new enrollment list screen for a specific person.\u000a\u000aWhen a user clicks the \"Manage enrollments\" option in the user action menu, they are now navigated to a view showing all enrollments for that person within the current class.\u000a\u000aKey changes:\u000a- Added `EnrollmentListScreen` to display a person's enrollments.\u000a- Implemented `EnrollmentListViewModel` to fetch and provide enrollment data.\u000a- Updated `ClazzDetailViewModel` to handle the navigation to `EnrollmentList`, passing the person's details and class title.\u000a- The `EnrollmentList` navigation route now accepts `personGuid`, `personName`, `role`, and `clazzTitle` to construct the new screen.\u000a- Added new string resources for the enrollment list title.\u000a",
        "date" : "2025-11-10 14:44:33 +0530",
        "id" : "8bb94992fbc2f2d05c6125a85502ff722271dd8f",
        "msg" : "feat: Navigate to enrollment list from class details",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "7c40d3fbc15f9d3a8f18763d19b20df82f5d24e6",
        "timestamp" : 1762767226000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Add action menu to enrollment list items\u000a\u000aThis commit introduces a \"More options\" dropdown menu for each item in the enrollment list screen, providing placeholder actions for \"Edit\" and \"Delete.\"\u000a\u000aAdditionally, it refactors the hardcoded \"More options\" content description in the class details screen to use a string resource for better localization and consistency.\u000a\u000aKey changes:\u000a- Added an `IconButton` with a `MoreVert` icon as the `trailingContent` for each `ListItem` in `EnrollmentListScreen`.\u000a- Implemented a `DropdownMenu` with \"Edit\" and \"Delete\" options.\u000a- Added new string resources for `edit` and `delete`.\u000a- Updated `ClazzDetailScreen` to use the `more_options` string resource for the menu's content description.\u000a",
        "date" : "2025-11-10 15:03:46 +0530",
        "id" : "7c40d3fbc15f9d3a8f18763d19b20df82f5d24e6",
        "msg" : "feat: Add action menu to enrollment list items",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
        ],
        "commitId" : "aed53db75692b8c0dfa11d78c6e12ef988ff2f5e",
        "timestamp" : 1762769455000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Simplify navigation to EnrollmentList screen\u000a\u000aThis commit refactors the navigation from the class details screen to the enrollment list screen. It simplifies the `EnrollmentList` route parameters by removing `personName` and `clazzTitle`, replacing the latter with `clazzGuid`.\u000a\u000aKey changes:\u000a- Updated the `EnrollmentList` navigation route to use `clazzGuid` instead of `clazzTitle` and removed the redundant `personName`.\u000a- Modified `ClazzDetailViewModel` to pass `person.guid`, `role.name`, and `route.guid` (class GUID) when navigating.\u000a- Removed the local `clazzTitle` property from `ClazzDetailViewModel`.\u000a- Simplified `EnrollmentListViewModel` by removing the logic that constructed the app bar title and instead passing list parameters directly to the data source.\u000a",
        "date" : "2025-11-10 15:40:55 +0530",
        "id" : "aed53db75692b8c0dfa11d78c6e12ef988ff2f5e",
        "msg" : "refactor: Simplify navigation to EnrollmentList screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "b714fc5ea5e4d43ece8999420d00eeb9cc99cc15",
        "timestamp" : 1762778071000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Introduce EnrollmentEdit screen\u000a\u000aThis commit introduces a new screen for creating and editing enrollments. It includes the `EnrollmentEditScreen` composable, its corresponding `EnrollmentEditViewModel`, and the necessary navigation setup.\u000a\u000aThe `EnrollmentEdit` screen displays basic enrollment information and includes a \"Save\" button in the action bar. The ViewModel is initialized to either load an existing enrollment by its UID or prepare a new enrollment based on the navigation parameters.\u000a\u000aKey changes:\u000a- Created `EnrollmentEditScreen.kt` and its `EnrollmentEditViewModel`.\u000a- Added the `EnrollmentEdit` destination to `AppNavHost.kt`.\u000a- Updated the `EnrollmentEdit` navigation route in `AppRoutes.kt` to accept parameters (`uid`, `personGuid`, `role`, `clazzGuid`).\u000a- In `EnrollmentListScreen`, the \"Edit\" menu item now navigates to the new `EnrollmentEdit` screen.\u000a- Removed the redundant `roleLabel` parameter from the `PersonListItemWithMenu` composable, as it was unused.\u000a",
        "date" : "2025-11-10 18:04:31 +0530",
        "id" : "b714fc5ea5e4d43ece8999420d00eeb9cc99cc15",
        "msg" : "feat: Introduce EnrollmentEdit screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
        ],
        "commitId" : "9e6cae13119fc2f6ccceea0479c2affa64001648",
        "timestamp" : 1762797247000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Implement field validation and state restoration in EnrollmentEdit screen\u000a\u000aThis commit introduces field validation and state restoration on the enrollment edit screen. When creating a new enrollment, the start and end dates are now validated as required fields before saving.\u000a\u000aAdditionally, the screen's state is now preserved and restored, for instance, after a screen rotation. This is achieved by debouncing entity changes and saving them to the `SavedStateHandle`.\u000a\u000aKey changes:\u000a- Added `beginDateError` and `endDateError` with validation logic to `EnrollmentEditUiState`.\u000a- Implemented `onEntityChanged` in the `EnrollmentEditViewModel` to update the UI state and persist the `Enrollment` entity to the `SavedStateHandle` using a `LaunchDebouncer`.\u000a- Simplified the `EnrollmentEdit` navigation route to only require a `uid`.\u000a- Passed the `onEntityChanged` callback from the `EnrollmentEditViewModel` to the `EnrollmentEditScreen`.\u000a",
        "date" : "2025-11-10 23:24:07 +0530",
        "id" : "9e6cae13119fc2f6ccceea0479c2affa64001648",
        "msg" : "feat: Implement field validation and state restoration in EnrollmentEdit screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
        ],
        "commitId" : "a4151cbc0f9336e34259ca82bce82c0af95e05cc",
        "timestamp" : 1762803076000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Implement enrollment start and end date editing\u000a\u000aThis commit builds out the `EnrollmentEditScreen` to allow editing the start and end dates of an enrollment.\u000a\u000aThe `EnrollmentEdit` navigation route has been updated to include `role`, `personGuid`, and `clazzGuid`. These parameters are now used to correctly initialize and save enrollment data. When a new enrollment is created, it now correctly pops back to the previous screen upon saving.\u000a\u000aKey changes:\u000a- `EnrollmentEditScreen` now contains `RespectLocalDateField` inputs for `beginDate` and `endDate`.\u000a- The `EnrollmentEdit` route now requires `role`, `personGuid`, and `clazzGuid` parameters.\u000a- `EnrollmentListViewModel` now passes the required parameters when navigating to the edit screen.\u000a- `EnrollmentEditViewModel` correctly initializes new enrollments using the route parameters.\u000a- Successfully saving an enrollment now triggers a `NavCommand.PopUp()` to return to the prior screen.\u000a",
        "date" : "2025-11-11 01:01:16 +0530",
        "id" : "a4151cbc0f9336e34259ca82bce82c0af95e05cc",
        "msg" : "feat: Implement enrollment start and end date editing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "8e5c14f944c1f285502b5f6b062d724f593f572d",
        "timestamp" : 1762808458000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Improve navigation after new enrollment creation\u000a\u000aThis commit refactors the navigation logic after creating a new enrollment. Instead of just popping the current screen, it now navigates to the `EnrollmentList` screen, replacing the `EnrollmentEdit` screen in the back stack. This ensures a more intuitive user flow when creating multiple enrollments.\u000a\u000aFor existing enrollments, the behavior remains the same, popping back to the previous screen upon saving.\u000a\u000aMinor code formatting and cleanup have also been applied to `EnrollmentEditScreen.kt`, `AppKoinModule.kt`, and `EnrollmentEditViewModel.kt`.\u000a",
        "date" : "2025-11-11 02:30:58 +0530",
        "id" : "8e5c14f944c1f285502b5f6b062d724f593f572d",
        "msg" : "refactor: Improve navigation after new enrollment creation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "4b750d74d0554884be64fa3493cc954d34dc842f",
        "timestamp" : 1762809903000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "fix: Improve DOB display and enrollment navigation\u000a\u000aThis commit introduces a few small fixes and improvements related to enrollment management and data display.\u000a\u000aIn the `ClazzDetailScreen`, the display for a person's date of birth (DOB) now correctly handles null values by showing a dash (\"-\") instead of crashing.\u000a\u000aThe `EnrollmentListViewModel` now sets the screen title based on the role from the navigation route.\u000a\u000aFinally, the navigation logic in `EnrollmentEditViewModel` has been cleaned up, removing unnecessary parameters when creating a new enrollment, while preserving the pop-up behavior.\u000a\u000aKey changes:\u000a- `ClazzDetailScreen` now displays \"-\" for a null date of birth.\u000a- `EnrollmentListViewModel` sets the screen title using the role from the route.\u000a- Simplified the `Navigate` command in `EnrollmentEditViewModel` for new enrollments.\u000a",
        "date" : "2025-11-11 02:55:03 +0530",
        "id" : "4b750d74d0554884be64fa3493cc954d34dc842f",
        "msg" : "fix: Improve DOB display and enrollment navigation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
        ],
        "commitId" : "c6440cd8e7bdfcc9fe201d9a52766622252087d3",
        "timestamp" : 1762810685000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "fix: Correct navigation parameter order in EnrollmentListViewModel\u000a\u000aThis commit corrects the order of `personGuid` and `clazzGuid` parameters when navigating from the enrollment list to the `EnrollmentEdit` screen.\u000a\u000aIt also removes now-redundant code from the `init` block that was setting the screen title, as this is handled elsewhere.\u000a",
        "date" : "2025-11-11 03:08:05 +0530",
        "id" : "c6440cd8e7bdfcc9fe201d9a52766622252087d3",
        "msg" : "fix: Correct navigation parameter order in EnrollmentListViewModel",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/DateFormatterExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
        ],
        "commitId" : "fa0406a495270f0e9499688d828c665fad9c5da6",
        "timestamp" : 1762850657000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Format enrollment dates on list screen\u000a\u000aThis commit introduces date formatting on the enrollment list screen, changing the display from the `yyyy-MM-dd` format to a localized `dd/MM/yyyy` format.\u000a\u000aA new extension function, `toLocalizedDate`, has been created to handle the conversion. The `EnrollmentListViewModel` now provides an `onDateFormatted` function, which is called by the `EnrollmentListScreen` to display the formatted start and end dates for each enrollment.\u000a\u000aKey changes:\u000a- Added `toLocalizedDate` string extension in `respect-lib-shared`.\u000a- Implemented `onDateFormatted` in `EnrollmentListViewModel` to wrap the new extension.\u000a- Updated `EnrollmentListScreen` to use the formatted begin and end dates in the `ListItem`.\u000a",
        "date" : "2025-11-11 14:14:17 +0530",
        "id" : "fa0406a495270f0e9499688d828c665fad9c5da6",
        "msg" : "feat: Format enrollment dates on list screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/DateFormatterExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
        ],
        "commitId" : "ddcbfb3e0fca13b2e5f9bfc4600643e2c12652a6",
        "timestamp" : 1762851078000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Ensure only one enrollment item's menu can be expanded at a time\u000a\u000aThis commit refactors the state management for the dropdown menu in the `EnrollmentListScreen`.\u000a\u000aPreviously, a single boolean `expanded` state was shared across all list items, causing all menus to open simultaneously. This has been replaced with `expandedItemUid`, which stores the UID of the currently expanded item.\u000a\u000aThis change ensures that clicking the \"More\" icon on one list item only opens the menu for that specific item.\u000a",
        "date" : "2025-11-11 14:21:18 +0530",
        "id" : "ddcbfb3e0fca13b2e5f9bfc4600643e2c12652a6",
        "msg" : "refactor: Ensure only one enrollment item's menu can be expanded at a time",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
        ],
        "commitId" : "6ba833405fb70765384fb849a19c2a4fb484d810",
        "timestamp" : 1762851597000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Add validation for enrollment start and end dates\u000a\u000aThis commit introduces validation to ensure the start date of an enrollment is not later than the end date.\u000a\u000aAn error message will now be displayed on the `EnrollmentEditScreen` if the start date is set after the end date.\u000a\u000aKey changes:\u000a- Added a new string resource `date_later` for the validation error message.\u000a- Updated `EnrollmentEditViewModel` to include logic that compares `beginDate` and `endDate`.\u000a",
        "date" : "2025-11-11 14:29:57 +0530",
        "id" : "6ba833405fb70765384fb849a19c2a4fb484d810",
        "msg" : "feat: Add validation for enrollment start and end dates",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "b2b470a6c056f347b5f2553b12ce6908f27340c3",
        "timestamp" : 1762851987000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Conditionally display gender and DOB in ClazzDetailScreen\u000a\u000aThis commit refactors the `ClazzDetailScreen` to conditionally display a person's gender and date of birth (DOB) only if these values are not null or blank.\u000a\u000aPreviously, the labels for \"Gender\" and \"Date of Birth\" would always be shown, even if the corresponding data was missing, leading to awkward formatting like \"Gender: , Date of Birth:\".\u000a\u000aThe logic has been updated to build a list of details and then join them, ensuring that an item is only added to the display string if its value is present. This prevents empty data points from appearing in the UI.\u000a",
        "date" : "2025-11-11 14:36:27 +0530",
        "id" : "b2b470a6c056f347b5f2553b12ce6908f27340c3",
        "msg" : "refactor: Conditionally display gender and DOB in ClazzDetailScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "6c159950be996d4b0bab638739957dcaa2930799",
        "timestamp" : 1762852122000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Conditionally display gender and DOB in ClazzDetailScreen\u000a",
        "date" : "2025-11-11 14:38:42 +0530",
        "id" : "6c159950be996d4b0bab638739957dcaa2930799",
        "msg" : "refactor: Conditionally display gender and DOB in ClazzDetailScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
        ],
        "commitId" : "02e0dbabb36fa4e723b1962b11bb04c9dfae69db",
        "timestamp" : 1762852250000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Display person and class names in EnrollmentEdit screen\u000a\u000aThis commit updates the `EnrollmentEditViewModel` to fetch and display the person's full name and the class's title.\u000a\u000aPreviously, the `init` block only configured the \"Save\" action bar button. Now, it asynchronously fetches the `Person` and `Clazz` entities using the `personGuid` and `clazzGuid` from the route. Although the fetched names (`personName` and `clazzName`) are stored in local variables, they are not yet used in the UI state. This change prepares the ViewModel for displaying more context on the enrollment editing screen.\u000a",
        "date" : "2025-11-11 14:40:50 +0530",
        "id" : "02e0dbabb36fa4e723b1962b11bb04c9dfae69db",
        "msg" : "feat: Display person and class names in EnrollmentEdit screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
        ],
        "commitId" : "2919955b239a997fea7f8ee82f245413d72be25e",
        "timestamp" : 1762857652000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Update enrollment screen titles to use a formatted string\u000a\u000aThis commit refactors the titles on the enrollment list and edit screens to use a new, formatted string resource.\u000a",
        "date" : "2025-11-11 16:10:52 +0530",
        "id" : "2919955b239a997fea7f8ee82f245413d72be25e",
        "msg" : "refactor: Update enrollment screen titles to use a formatted string",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "70ed7779c2d5c36db6cce239b376b5852150fcc5",
        "timestamp" : 1762859525000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Rename person management functions in ClazzDetail screen\u000a\u000aThis commit renames functions related to person management within the class detail screen for improved clarity and consistency.\u000a\u000aThe `onClickRemovePerson` and `onClickManagePerson` functions have been renamed to `onClickRemovePersonFromClass` and `onClickManageEnrollments` respectively. This change is reflected in the `ClazzDetailScreen`, `ClazzDetailContent`, and `ClazzDetailViewModel` to more accurately describe their actions.\u000a\u000aKey changes:\u000a- Renamed `onClickRemovePerson` to `onClickRemovePersonFromClass` in the `ClazzDetailScreen` and `ClazzDetailViewModel`.\u000a- Renamed `onClickManagePerson` to `onClickManageEnrollments` in the `ClazzDetailScreen` and `ClazzDetailViewModel`.\u000a- Updated the call sites for these functions within the `ClazzDetailContent` composable.\u000a- The `onClickManageEnrollments` function now navigates to the `EnrollmentList` screen.\u000a",
        "date" : "2025-11-11 16:42:05 +0530",
        "id" : "70ed7779c2d5c36db6cce239b376b5852150fcc5",
        "msg" : "refactor: Rename person management functions in ClazzDetail screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "a3e86ec7a7e96518b28f8507d2fca732a2d923cc",
        "timestamp" : 1762864959000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2025-11-11 18:12:39 +0530",
        "id" : "a3e86ec7a7e96518b28f8507d2fca732a2d923cc",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "d7fb64e46efdef755b7deedd5afe9325c6d4ec64",
        "timestamp" : 1762866313000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2025-11-11 18:35:13 +0530",
        "id" : "d7fb64e46efdef755b7deedd5afe9325c6d4ec64",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "a28e5513a350fc60d154d71ecddf866b54f89223",
        "timestamp" : 1762866544000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2025-11-11 18:39:04 +0530",
        "id" : "a28e5513a350fc60d154d71ecddf866b54f89223",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "c9d488788a556497071bf2c97f05d587dada4045",
        "timestamp" : 1762866633000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor\u000a",
        "date" : "2025-11-11 18:40:33 +0530",
        "id" : "c9d488788a556497071bf2c97f05d587dada4045",
        "msg" : "Refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
        ],
        "commitId" : "9a02bcc92d92d9edb62dc9f16bcc81ebf69cfb88",
        "timestamp" : 1762929328000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Implement enrollment deletion\u000a\u000aAdds the functionality to delete an enrollment record. This includes:\u000a- Adding `deleteEnrollment` functions to the `EnrollmentDataSource` interface and its various implementations (HTTP, DB, repository).\u000a- Implementing the database deletion logic in `EnrollmentEntityDao` with a new SQL `DELETE` query.\u000a- Adding a `DELETE` request to the HTTP data source.\u000a- Queuing the deletion for remote write in the repository.\u000a- Calling the new `deleteEnrollment` function from the `EnrollmentListViewModel` and invalidating the paging source to refresh the list.\u000a",
        "date" : "2025-11-12 12:05:28 +0530",
        "id" : "9a02bcc92d92d9edb62dc9f16bcc81ebf69cfb88",
        "msg" : "feat: Implement enrollment deletion",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt"
        ],
        "commitId" : "2774ea56e5bacf03e15ac2e3c61b3aa8b851dc19",
        "timestamp" : 1762929669000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Implement enrollment deletion\u000a",
        "date" : "2025-11-12 12:11:09 +0530",
        "id" : "2774ea56e5bacf03e15ac2e3c61b3aa8b851dc19",
        "msg" : "feat: Implement enrollment deletion",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
        ],
        "commitId" : "32888dc7a6b86a7e774ee0fcf63fc00d63a90af4",
        "timestamp" : 1762929752000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2025-11-12 12:12:32 +0530",
        "id" : "32888dc7a6b86a7e774ee0fcf63fc00d63a90af4",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
        ],
        "commitId" : "82b69855feaab2c1ccb58f75323a5fc7795fbeb1",
        "timestamp" : 1762931490000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2025-11-12 12:41:30 +0530",
        "id" : "82b69855feaab2c1ccb58f75323a5fc7795fbeb1",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedDate.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/util/RememberFormattedDate.jvm.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedDate.android.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/EnrollmentRoleEnumExt.kt"
        ],
        "commitId" : "95f5e9d5b85b5991f21321b23532df0b48b6c4df",
        "timestamp" : 1763125742000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fixes for enrollment list\u000a\u000aMake app route class use type\u000aUse locale based date formatting\u000aUse flow in detail screen so that local first data loads and displays immediately\u000aUse string resource on enrollments list to show role\u000a",
        "date" : "2025-11-14 17:09:02 +0400",
        "id" : "95f5e9d5b85b5991f21321b23532df0b48b6c4df",
        "msg" : "Fixes for enrollment list",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedDate.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/EnrollmentRoleEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedDate.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/util/RememberFormattedDate.jvm.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
        ],
        "commitId" : "90cd7040c7cb08a653ef6893e33bf4075e478d54",
        "timestamp" : 1763288580000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "EnrollmentEdit fixes.\u000aDates are not required fields.\u000a",
        "date" : "2025-11-16 14:23:00 +0400",
        "id" : "90cd7040c7cb08a653ef6893e33bf4075e478d54",
        "msg" : "EnrollmentEdit fixes.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/edit/EnrollmentEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Enrollment.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/time/TimeConstants.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/time/LocalDateExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt",
          "respect-lib-util/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt",
          "respect-datalayer/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/StatusEnum.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrollmentEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/time/UtcStartOfToday.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/time/LocalDateInCurrentTimeZone.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt"
        ],
        "commitId" : "20d9e57e2e3b4490e87b593d47fa11f0ad3e6a1f",
        "timestamp" : 1763302505000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Enrollment fixes: ensure proper filtering so that only current enrollments are displayed.\u000a\u000aUpdate datalayer and queries to handle timezone correctly\u000a",
        "date" : "2025-11-16 18:15:05 +0400",
        "id" : "20d9e57e2e3b4490e87b593d47fa11f0ad3e6a1f",
        "msg" : "Enrollment fixes: ensure proper filtering so that only current enrollments are displayed.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/StatusEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/time/LocalDateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/EnrollmentEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/time/LocalDateInCurrentTimeZone.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/time/TimeConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Enrollment.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/util/time/UtcStartOfToday.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt"
        ],
        "commitId" : "fb731aaf911e0b7a642fd722a3ba8aa9a6f51570",
        "timestamp" : 1763306474000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Make handling of in class on day parameters consistent between person data source and enrollment data source.\u000a",
        "date" : "2025-11-16 19:21:14 +0400",
        "id" : "fb731aaf911e0b7a642fd722a3ba8aa9a6f51570",
        "msg" : "Make handling of in class on day parameters consistent between person data source and enrollment data source.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
        ],
        "commitId" : "186ee35e6f5bf73d3afcb5b3b69777a553c636c8",
        "timestamp" : 1763310834000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement remove from class on class detail screen.\u000a",
        "date" : "2025-11-16 20:33:54 +0400",
        "id" : "186ee35e6f5bf73d3afcb5b3b69777a553c636c8",
        "msg" : "Implement remove from class on class detail screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonStatusEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
        ],
        "commitId" : "bf99dacbc47498b2bbfc19ec71c5edf46c697418",
        "timestamp" : 1763380273000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix handling of pending students and teachers.\u000a",
        "date" : "2025-11-17 15:51:13 +0400",
        "id" : "bf99dacbc47498b2bbfc19ec71c5edf46c697418",
        "msg" : "Fix handling of pending students and teachers.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonStatusEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
      "fullName" : "mandvi.verma"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
      "fullName" : "Mike Dawson"
    }
  ]
}