{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.model.Cause$UserIdCause",
          "shortDescription" : "Started by user Pooja Ravi",
          "userId" : "pooja",
          "userName" : "Pooja Ravi"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/main-maestro-cloud-run" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 10,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "4c7679e7b9c80b89ea503c28608711ef175a6ba3",
            "branch" : [
              {
                "SHA1" : "4c7679e7b9c80b89ea503c28608711ef175a6ba3",
                "name" : "refs/remotes/origin/main-maestro-cloud-run"
              }
            ]
          },
          "revision" : {
            "SHA1" : "4c7679e7b9c80b89ea503c28608711ef175a6ba3",
            "branch" : [
              {
                "SHA1" : "4c7679e7b9c80b89ea503c28608711ef175a6ba3",
                "name" : "refs/remotes/origin/main-maestro-cloud-run"
              }
            ]
          }
        },
        "refs/remotes/origin/main" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 31,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "1b858342ed1877d987422a87b22c30028dc34110",
            "branch" : [
              {
                "SHA1" : "1b858342ed1877d987422a87b22c30028dc34110",
                "name" : "refs/remotes/origin/main"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1b858342ed1877d987422a87b22c30028dc34110",
            "branch" : [
              {
                "SHA1" : "1b858342ed1877d987422a87b22c30028dc34110",
                "name" : "refs/remotes/origin/main"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "1b858342ed1877d987422a87b22c30028dc34110",
        "branch" : [
          {
            "SHA1" : "1b858342ed1877d987422a87b22c30028dc34110",
            "name" : "refs/remotes/origin/main"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/UstadMobile/Respect.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#31",
  "duration" : 1060400,
  "estimatedDuration" : 1608818,
  "executor" : None,
  "fullDisplayName" : "RESPECT-end-to-end #31",
  "id" : "31",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 31,
  "queueId" : 4161,
  "result" : "FAILURE",
  "timestamp" : 1762758862444,
  "url" : "https://devserver3.ustadmobile.com/jenkins/job/RESPECT-end-to-end/31/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_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/person/edit/PersonEditScreen.kt",
          "gradle/libs.versions.toml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validateemail/ValidateEmailUseCase.kt"
        ],
        "commitId" : "5e149402d39d01e6ec9ce36ae49a23a1573ad285",
        "timestamp" : 1761116355000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Validate date of birth on save\u000a\u000aThis commit introduces validation to prevent the date of birth from being in the future. The validation is now handled in the `PersonEditViewModel` when the save button is clicked, rather than restricting the date selection in the UI.\u000a\u000aKey changes:\u000a- Removed the future date restriction from the `RespectLocalDateField` date picker, allowing users to select any date.\u000a- Added a new string resource `date_of_birth_in_future` for the error message.\u000a- Updated `PersonEditViewModel` to validate the date of birth upon saving. If the selected date is in the future, an error message is displayed and the save is aborted.\u000a- Modified `PersonEditScreen` to display the date of birth validation error message below the input field.\u000a",
        "date" : "2025-10-22 12:29:15 +0530",
        "id" : "5e149402d39d01e6ec9ce36ae49a23a1573ad285",
        "msg" : "feat: Validate date of birth on save",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validateemail/ValidateEmailUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "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/util/ext/PersonExt.kt"
        ],
        "commitId" : "a281e9ecc4a9774b415f5be4a65261bc42fc3219",
        "timestamp" : 1761121700000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Improve `fullName` generation in `PersonExt`\u000a\u000aThis commit refactors the `fullName` extension function for the `Person` model to more robustly handle whitespace and optional name parts.\u000a\u000aThe function now trims leading/trailing whitespace from `givenName`, `middleName`, and `familyName`. It also ensures that spaces are only added between name parts if the preceding part is not empty, preventing extra spaces in the final output.\u000a",
        "date" : "2025-10-22 13:58:20 +0530",
        "id" : "a281e9ecc4a9774b415f5be4a65261bc42fc3219",
        "msg" : "refactor: Improve `fullName` generation in `PersonExt`",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
        ],
        "commitId" : "f8fea3845d7c67a49aad982df18c113f30e474e8",
        "timestamp" : 1761122152000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Clear email error on change\u000a\u000aThis commit clears the email validation error message in the `PersonEditViewModel` when the user modifies the email address. The phone number error handling already had similar logic, and this change makes the email field consistent.\u000a",
        "date" : "2025-10-22 14:05:52 +0530",
        "id" : "f8fea3845d7c67a49aad982df18c113f30e474e8",
        "msg" : "feat: Clear email error on change",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "74b2f944d1230e5fd55316ba473d9a4a1c2ade7f",
        "timestamp" : 1761219231000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2025-10-23 17:03:51 +0530",
        "id" : "74b2f944d1230e5fd55316ba473d9a4a1c2ade7f",
        "msg" : "commit",
        "paths" : [
          {
            "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/util/ext/PersonExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "b7ca8abb109f3d97b7f4af365f0a5a3474c3556d",
        "timestamp" : 1761219565000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "If Using family name it is duplicating the other family name and middle name so changed to given name\u000a",
        "date" : "2025-10-23 17:09:25 +0530",
        "id" : "b7ca8abb109f3d97b7f4af365f0a5a3474c3556d",
        "msg" : "If Using family name it is duplicating the other family name and middle name so changed to given name",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.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/edit/ClazzEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "21f0337b914b017d984896d30b577a42e4c58d57",
        "timestamp" : 1761557109000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Enhance ClazzDetailScreen with more information\u000a\u000aThis commit updates the class details screen to provide more comprehensive information about the class and its pending members.\u000a\u000aKey changes:\u000a- Displays the class description in the `TopAppBar`.\u000a- Shows a count of pending teacher and student requests in the \"Pending requests\" section header.\u000a- For pending teachers and students, the list now shows their role (teacher or student), gender, and date of birth.\u000a- In the class edit screen, the `*` indicating a required field has been removed from the \"Class Name\" label to simplify the UI.\u000a",
        "date" : "2025-10-27 14:55:09 +0530",
        "id" : "21f0337b914b017d984896d30b577a42e4c58d57",
        "msg" : "feat: Enhance ClazzDetailScreen with more information",
        "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/edit/ClazzEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows-in-progress/001_001_invite_using_invite_code_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "c181fd69bd4464a339a0d20aa562760cf27818b0",
        "timestamp" : 1762338600000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Updated test\u000a",
        "date" : "2025-11-05 14:30:00 +0400",
        "id" : "c181fd69bd4464a339a0d20aa562760cf27818b0",
        "msg" : "Updated test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows-in-progress/001_001_invite_using_invite_code_test.yaml"
          }
        ]
      },
      {
        "_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/person/edit/PersonEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt"
        ],
        "commitId" : "baa66c60f3cad741ab08547fcaad4dfb11c434a3",
        "timestamp" : 1762359975000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Use fullName for person display and internationalize labels\u000a\u000aThis commit updates the `ClazzDetailScreen` to use the `person.fullName()` extension function for displaying user names, ensuring a consistent format. It also replaces hardcoded text labels for \"Gender\" and \"DOB\" with internationalized string resources.\u000a",
        "date" : "2025-11-05 21:56:15 +0530",
        "id" : "baa66c60f3cad741ab08547fcaad4dfb11c434a3",
        "msg" : "refactor: Use fullName for person display and internationalize labels",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.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/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "8e1da350c253cf76bbe63330e7bdccba3af09e1d",
        "timestamp" : 1762409241000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "chore: Fix Kotlin linting issues\u000a\u000aThis commit addresses several Kotlin linting errors by removing unnecessary whitespace. The changes include:\u000a- Removing space before `else` keywords.\u000a- Fixing spacing around commas.\u000a- Removing space before `if` conditions.\u000a",
        "date" : "2025-11-06 11:37:21 +0530",
        "id" : "8e1da350c253cf76bbe63330e7bdccba3af09e1d",
        "msg" : "chore: Fix Kotlin linting issues",
        "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/person/edit/PersonEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt"
        ],
        "commitId" : "11f753affc07d7a0a84720faa0a2be2b10ce4fad",
        "timestamp" : 1762414200000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Make email optional for persons\u000a\u000aThis commit updates the validation and display logic to correctly handle cases where a person's email is not provided.\u000a",
        "date" : "2025-11-06 13:00:00 +0530",
        "id" : "11f753affc07d7a0a84720faa0a2be2b10ce4fad",
        "msg" : "feat: Make email optional for persons",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt"
        ],
        "commitId" : "ac4cd32c2d0dc354fc19e472431f6408d3ca44ad",
        "timestamp" : 1762416457000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Add validation for first and last name\u000a\u000aThis commit introduces validation to ensure that the first and last name fields are not blank when editing a person's details.\u000a",
        "date" : "2025-11-06 13:37:37 +0530",
        "id" : "ac4cd32c2d0dc354fc19e472431f6408d3ca44ad",
        "msg" : "feat: Add validation for first and last name",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validateemail/ValidateEmailUseCaseTest.kt"
        ],
        "commitId" : "70bf7b3436bcedab2807f7ca724ffc88bb0f4aa6",
        "timestamp" : 1762420972000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "feat: Add validation for first and last name\u000a\u000aThis commit introduces validation to ensure that the first and last name fields are not blank when editing a person's details.\u000a",
        "date" : "2025-11-06 14:52:52 +0530",
        "id" : "70bf7b3436bcedab2807f7ca724ffc88bb0f4aa6",
        "msg" : "feat: Add validation for first and last name",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validateemail/ValidateEmailUseCaseTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "a8b21cd7d6916369a5a2ccdc4d0c4c6f8a0282a8",
        "timestamp" : 1762421097000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Updated mandatory test\u000a",
        "date" : "2025-11-06 13:24:57 +0400",
        "id" : "a8b21cd7d6916369a5a2ccdc4d0c4c6f8a0282a8",
        "msg" : "Updated mandatory test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validateemail/ValidateEmailUseCaseTest.kt"
        ],
        "commitId" : "ff80e4fe637141b36e081ca29aaa23796180448c",
        "timestamp" : 1762421140000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "style: Standardize test function naming\u000a\u000aThis commit updates the test function names in `ValidateEmailUseCaseTest.kt` to follow the camelCase convention, removing backticks and descriptive phrases.\u000a",
        "date" : "2025-11-06 14:55:40 +0530",
        "id" : "ff80e4fe637141b36e081ca29aaa23796180448c",
        "msg" : "style: Standardize test function naming",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validateemail/ValidateEmailUseCaseTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectGenderExposedDropDownMenuField.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
        ],
        "commitId" : "009bbd68b1685ef1641dde338b8c9a874798b679",
        "timestamp" : 1762499460000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Standardize required field validation message\u000a\u000aThis commit replaces the generic `required` string resource with a more specific `required_field` resource for consistency in validation error messages.\u000a\u000aKey changes:\u000a- In `PersonEditViewModel`, the validation logic for first name, last name, and gender now uses `Res.string.required_field`.\u000a- The `PersonEditScreen` and `RespectGenderExposedDropDownMenuField` have been updated to display the specific validation error message from the view model state, falling back to a default required text.\u000a- The gender dropdown component now accepts and displays a `UiText` error message, improving how validation feedback is presented to the user on both the Person Edit and Sign Up screens.\u000a",
        "date" : "2025-11-07 12:41:00 +0530",
        "id" : "009bbd68b1685ef1641dde338b8c9a874798b679",
        "msg" : "refactor: Standardize required field validation message",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectGenderExposedDropDownMenuField.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
        ],
        "commitId" : "9c81891a175e84699f416730355f7f6ea8bce39d",
        "timestamp" : 1762501011000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "refactor: Use UiText for class name validation\u000a\u000aThis commit updates the class name validation to use `UiText` instead of a plain `String`. This allows for more flexible and localized error messages.\u000a\u000aKey changes:\u000a- `ClazzEditUiState.clazzNameError` is now of type `UiText?`.\u000a- The `ClazzEditViewModel` now sets `clazzNameError` to a `UiText` from string resources.\u000a- `ClazzEditScreen` has been updated to use `uiTextStringResource` to display the localized validation message.\u000a- The resource string for the class name label was changed from `class_name` to `name` for consistency.\u000a",
        "date" : "2025-11-07 13:06:51 +0530",
        "id" : "9c81891a175e84699f416730355f7f6ea8bce39d",
        "msg" : "refactor: Use UiText for class name validation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectGenderExposedDropDownMenuField.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt"
        ],
        "commitId" : "3e27825471fa9dd4a06ed125fcf2052df2650b42",
        "timestamp" : 1762501308000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "chore: Format code for consistency\u000a\u000aThis commit applies minor code formatting changes to improve consistency across the codebase. Specifically, it adjusts spacing around operators and in conditional statements.\u000a",
        "date" : "2025-11-07 13:11:48 +0530",
        "id" : "3e27825471fa9dd4a06ed125fcf2052df2650b42",
        "msg" : "chore: Format code for consistency",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectGenderExposedDropDownMenuField.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
        ],
        "commitId" : "079da7e476b8ed4d8bf01d23175549c97aef0ec6",
        "timestamp" : 1762757866000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Minor tidy changes:\u000a1) Remove personedit padding on column - each field has its own padding\u000a2) Remove \"dob\" as a string - this is short, but not clear.\u000a",
        "date" : "2025-11-10 10:57:46 +0400",
        "id" : "079da7e476b8ed4d8bf01d23175549c97aef0ec6",
        "msg" : "Minor tidy changes:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
      "fullName" : "Mike Dawson"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
      "fullName" : "Pooja Ravi"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
      "fullName" : "mandvi.verma"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
      "fullName" : "nikunj.sharma"
    }
  ]
}