{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "com.cloudbees.jenkins.GitHubPushCause",
          "shortDescription" : "Started by GitHub push by younex1"
        },
        {
          "_class" : "com.cloudbees.jenkins.GitHubPushCause",
          "shortDescription" : "Started by GitHub push by younex1"
        }
      ]
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/main" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1622,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "b6f8902e5a86439a36af8f88c9be9e31cf5fff70",
            "branch" : [
              {
                "SHA1" : "b6f8902e5a86439a36af8f88c9be9e31cf5fff70",
                "name" : "refs/remotes/origin/main"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b6f8902e5a86439a36af8f88c9be9e31cf5fff70",
            "branch" : [
              {
                "SHA1" : "b6f8902e5a86439a36af8f88c9be9e31cf5fff70",
                "name" : "refs/remotes/origin/main"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "b6f8902e5a86439a36af8f88c9be9e31cf5fff70",
        "branch" : [
          {
            "SHA1" : "b6f8902e5a86439a36af8f88c9be9e31cf5fff70",
            "name" : "refs/remotes/origin/main"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/younex1/erp-nuxt-frontend.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : false,
  "description" : null,
  "displayName" : "#1622",
  "duration" : 570376,
  "estimatedDuration" : 568496,
  "executor" : null,
  "fullDisplayName" : "erp-frontend-pipeline-production #1622",
  "id" : "1622",
  "inProgress" : false,
  "keepLog" : false,
  "number" : 1622,
  "queueId" : 5890,
  "result" : "SUCCESS",
  "timestamp" : 1793045616273,
  "url" : "https://jenkins.younex.de/job/erp-frontend-pipeline-production/1622/",
  "builtOn" : "Application-Node-Production",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/materials/products/index.vue",
          "reference/demo-instance/hess/catalog.json",
          "reference/demo-instance/hess/build-catalog.py",
          "reference/demo-instance/create-master-articles.sh",
          "server/utils/productsGrid.ts",
          "reference/demo-instance/hess/cattree.json",
          "app/components/materials/ProductVariantsCard.vue",
          "reference/demo-instance/add-purchase-prices.sh",
          "app/pages/materials/products/[id]/edit.vue",
          "server/api/materials/products/[id]/variants.get.ts",
          "reference/demo-instance/set-parent-ids.sh",
          "reference/demo-instance/hess/masters.json",
          "app/assets/langs/shared.js"
        ],
        "commitId" : "bf69e20f22003bbc73714edec19512152cea83bd",
        "timestamp" : 1793034452000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Product variants: master (IsSummary) articles + ParentId grouping, Varianten card and list column; Hess/Livipur demo catalog tooling\u000a",
        "date" : "2026-10-26 18:07:32 +0100",
        "id" : "bf69e20f22003bbc73714edec19512152cea83bd",
        "msg" : "Product variants: master (IsSummary) articles + ParentId grouping, Varianten card and list column; Hess/Livipur demo catalog tooling",
        "paths" : [
          {
            "editType" : "add",
            "file" : "reference/demo-instance/create-master-articles.sh"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/materials/products/index.vue"
          },
          {
            "editType" : "add",
            "file" : "server/api/materials/products/[id]/variants.get.ts"
          },
          {
            "editType" : "add",
            "file" : "reference/demo-instance/hess/cattree.json"
          },
          {
            "editType" : "add",
            "file" : "reference/demo-instance/set-parent-ids.sh"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/materials/products/[id]/edit.vue"
          },
          {
            "editType" : "add",
            "file" : "app/components/materials/ProductVariantsCard.vue"
          },
          {
            "editType" : "add",
            "file" : "reference/demo-instance/hess/masters.json"
          },
          {
            "editType" : "add",
            "file" : "reference/demo-instance/hess/build-catalog.py"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/productsGrid.ts"
          },
          {
            "editType" : "add",
            "file" : "reference/demo-instance/add-purchase-prices.sh"
          },
          {
            "editType" : "add",
            "file" : "reference/demo-instance/hess/catalog.json"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "reference/ci/README.md",
          ".claude/rules/materials/product-variants.md",
          "reference/demo-instance/README.md"
        ],
        "commitId" : "c1fc1c30ccab14645c0baf48a5c72ea6986ce862",
        "timestamp" : 1793034546000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Docs: product variant model recipe, Hess demo tooling, Jenkins trigger crumb note\u000a",
        "date" : "2026-10-26 18:09:06 +0100",
        "id" : "c1fc1c30ccab14645c0baf48a5c72ea6986ce862",
        "msg" : "Docs: product variant model recipe, Hess demo tooling, Jenkins trigger crumb note",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "reference/ci/README.md"
          },
          {
            "editType" : "add",
            "file" : "reference/demo-instance/README.md"
          },
          {
            "editType" : "add",
            "file" : ".claude/rules/materials/product-variants.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/api/materials/products/[id]/variants.get.ts",
          "server/utils/productsGrid.ts"
        ],
        "commitId" : "106bde8bfced6763eb4dbed5eab19ca36e10b69d",
        "timestamp" : 1793035132000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Variants: read ParentId under its REST key (parentId)\u000a",
        "date" : "2026-10-26 18:18:52 +0100",
        "id" : "106bde8bfced6763eb4dbed5eab19ca36e10b69d",
        "msg" : "Variants: read ParentId under its REST key (parentId)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "server/api/materials/products/[id]/variants.get.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/productsGrid.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "reference/demo-instance/hess/build-catalog.py",
          "reference/demo-instance/hess/catalog.json"
        ],
        "commitId" : "dfef60a31ee23e7beb1ffa4d485ca6956e603d06",
        "timestamp" : 1793035243000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Hess catalog: distinct variation names (append missing attribute values)\u000a",
        "date" : "2026-10-26 18:20:43 +0100",
        "id" : "dfef60a31ee23e7beb1ffa4d485ca6956e603d06",
        "msg" : "Hess catalog: distinct variation names (append missing attribute values)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "reference/demo-instance/hess/build-catalog.py"
          },
          {
            "editType" : "edit",
            "file" : "reference/demo-instance/hess/catalog.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".claude/rules/nuxt/ui-components.md",
          "app/components/AgGrid/Users/AgSecurityKeyActions.vue",
          "app/components/users/SecurityKeyEnrolModal.vue",
          ".claude/rules/auth/webauthn-security-keys.md",
          "app/components/users/SecurityKeyRevokeModal.vue",
          "app/composables/useSecurityKeyFormat.ts",
          "app/pages/users/security-keys/index.vue",
          "app/components/AgGrid/Users/AgSecurityKeyUser.vue",
          "app/components/AgGrid.vue",
          "app/components/users/SecurityKeys.vue",
          "app/assets/langs/shared.js",
          "app/composables/useWebAuthn.ts"
        ],
        "commitId" : "b6f8902e5a86439a36af8f88c9be9e31cf5fff70",
        "timestamp" : 1793045605000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Security keys: Nuxt UI enrol wizard + revoke dialog, working grid actions, phone layout\u000a\u000a- /users/security-keys: real Vue cell renderers (user + actions) with handlers via\u000a  cellRendererParams — the shared AgGrid cellClick is selection-changed and never fired the\u000a  Revoke/user-link in raw-HTML cells; 44px rows, stats, search, UIcon icons\u000a- Phone (< 900px): grouped employee cards, sticky \"Enrol key\" button, full-screen wizard with\u000a  NFC/USB hints per device (Android/iOS/Windows/macOS/app)\u000a- Shared UsersSecurityKeyEnrolModal (details → tap → done/error, UForm validation, employee\u000a  picker with key counts, auto \"YubiKey <first name>\", cancel aborts at every stage) and\u000a  UsersSecurityKeyRevokeModal (key/user/dates, last-key warning, toasts) used by the overview,\u000a  the profile panel and the user-edit panel; UsersSecurityKeys.vue rebuilt on them\u000a- useSecurityKeyFormat (relative dates, transports, initials, WebAuthn error texts),\u000a  useWebAuthn.cancelCeremony/isNativeApp + register({ isCancelled }), AgGrid rowHeight prop\u000a- Translations en/de/es (+ ne fallback); recipes: webauthn UI, icon + Tailwind colour gaps\u000a",
        "date" : "2026-10-26 21:13:25 +0100",
        "id" : "b6f8902e5a86439a36af8f88c9be9e31cf5fff70",
        "msg" : "Security keys: Nuxt UI enrol wizard + revoke dialog, working grid actions, phone layout",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/components/AgGrid.vue"
          },
          {
            "editType" : "add",
            "file" : "app/components/AgGrid/Users/AgSecurityKeyActions.vue"
          },
          {
            "editType" : "edit",
            "file" : ".claude/rules/nuxt/ui-components.md"
          },
          {
            "editType" : "add",
            "file" : "app/components/users/SecurityKeyEnrolModal.vue"
          },
          {
            "editType" : "edit",
            "file" : ".claude/rules/auth/webauthn-security-keys.md"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/useWebAuthn.ts"
          },
          {
            "editType" : "add",
            "file" : "app/components/users/SecurityKeyRevokeModal.vue"
          },
          {
            "editType" : "add",
            "file" : "app/composables/useSecurityKeyFormat.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/components/users/SecurityKeys.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/users/security-keys/index.vue"
          },
          {
            "editType" : "add",
            "file" : "app/components/AgGrid/Users/AgSecurityKeyUser.vue"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.younex.de/user/info",
      "fullName" : "info"
    }
  ]
}