{
  "_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/dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 642,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "860b3f6d10c00e06580690356df286f6129ac7f1",
            "branch" : [
              {
                "SHA1" : "860b3f6d10c00e06580690356df286f6129ac7f1",
                "name" : "refs/remotes/origin/dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "860b3f6d10c00e06580690356df286f6129ac7f1",
            "branch" : [
              {
                "SHA1" : "860b3f6d10c00e06580690356df286f6129ac7f1",
                "name" : "refs/remotes/origin/dev"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "860b3f6d10c00e06580690356df286f6129ac7f1",
        "branch" : [
          {
            "SHA1" : "860b3f6d10c00e06580690356df286f6129ac7f1",
            "name" : "refs/remotes/origin/dev"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/younex1/erp-nuxt-frontend.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#642",
  "duration" : 62171,
  "estimatedDuration" : 57393,
  "executor" : None,
  "fullDisplayName" : "build-logship-frontend #642",
  "id" : "642",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 642,
  "queueId" : 5253,
  "result" : "SUCCESS",
  "timestamp" : 1781222400933,
  "url" : "https://jenkins.younex.de/job/build-logship-frontend/642/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "android/app/build.gradle",
          "android/update-files/version.json"
        ],
        "commitId" : "d4225a17e2f7a04c2b1ae4b56fd7ee7a5efc4d23",
        "timestamp" : 1781161581000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "add biometric to android native\u000a",
        "date" : "2026-06-11 09:06:21 +0200",
        "id" : "d4225a17e2f7a04c2b1ae4b56fd7ee7a5efc4d23",
        "msg" : "add biometric to android native",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "android/app/build.gradle"
          },
          {
            "editType" : "edit",
            "file" : "android/update-files/version.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/mobile/index.vue",
          "nuxt.config.ts"
        ],
        "commitId" : "3d98d54f7d88326419b81c755704d9d10798c1ac",
        "timestamp" : 1781162512000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Fix stale dashboard counts + app pointing at dev Strapi host\u000a\u000aDashboard: the mobile index is keep-alive'd, so the openso-count/shipped\u000auseFetch never re-ran on revisit (stale counts). Capture refresh and re-fetch\u000aon page re-activation and on app foreground.\u000a\u000aApp Strapi host: the bundled app baked config.public.strapi from the local\u000a.env (a dev host, unreachable from devices) while /api goes to prod — breaking\u000aproduct thumbnails and media uploads. In the app build, strapi base/token now\u000afollow apiBase (CAP_STRAPI_BASE/CAP_STRAPI_TOKEN override), so /files-api and\u000a/media-api resolve on the same prod host as the API. Web build unchanged.\u000a\u000aCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\u000a",
        "date" : "2026-06-11 09:21:52 +0200",
        "id" : "3d98d54f7d88326419b81c755704d9d10798c1ac",
        "msg" : "Fix stale dashboard counts + app pointing at dev Strapi host",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/mobile/index.vue"
          },
          {
            "editType" : "edit",
            "file" : "nuxt.config.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "package.json"
        ],
        "commitId" : "e3623b1e780125b9d34da31e3993e4010320082a",
        "timestamp" : 1781162686000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "build:app uses .env-prod (production app build)\u000a\u000aThe bundled app is a production app (apiBase = app.logship.de), so build it\u000awith the prod env. This bakes the PROD Strapi token (dev≠prod), fixing media\u000auploads, and aligns all public config to prod. For a dev app build, override\u000athe env/CAP_* vars.\u000a\u000aCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\u000a",
        "date" : "2026-06-11 09:24:46 +0200",
        "id" : "e3623b1e780125b9d34da31e3993e4010320082a",
        "msg" : "build:app uses .env-prod (production app build)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "package.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".gitignore",
          "android/app/capacitor.build.gradle",
          "app/composables/useChatSocket.ts",
          "server/utils/fcmNotifier.ts",
          "server/api/push/register-native.post.ts",
          "android/app/google-services.json",
          "server/api/chat/voice.post.ts",
          "android/capacitor.settings.gradle",
          "android/update-files/version.json",
          "android/app/build.gradle",
          "nuxt.config.ts",
          "server/utils/fcmDb.ts",
          "package.json",
          "server/routes/chat/ws.ts",
          "app/plugins/20.native-push.client.ts",
          ".env-prod"
        ],
        "commitId" : "cd3e4c34a3ba58e56b3ad45158f0e047b55ed0e9",
        "timestamp" : 1781166611000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Integrate Android Native Push Messaging on Chat with Firebase\u000a",
        "date" : "2026-06-11 10:30:11 +0200",
        "id" : "cd3e4c34a3ba58e56b3ad45158f0e047b55ed0e9",
        "msg" : "Integrate Android Native Push Messaging on Chat with Firebase",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "android/capacitor.settings.gradle"
          },
          {
            "editType" : "add",
            "file" : "server/api/push/register-native.post.ts"
          },
          {
            "editType" : "edit",
            "file" : ".gitignore"
          },
          {
            "editType" : "edit",
            "file" : "android/update-files/version.json"
          },
          {
            "editType" : "edit",
            "file" : "package.json"
          },
          {
            "editType" : "edit",
            "file" : "android/app/capacitor.build.gradle"
          },
          {
            "editType" : "add",
            "file" : "server/utils/fcmNotifier.ts"
          },
          {
            "editType" : "add",
            "file" : "server/utils/fcmDb.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/useChatSocket.ts"
          },
          {
            "editType" : "edit",
            "file" : "nuxt.config.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/routes/chat/ws.ts"
          },
          {
            "editType" : "add",
            "file" : "android/app/google-services.json"
          },
          {
            "editType" : "edit",
            "file" : "android/app/build.gradle"
          },
          {
            "editType" : "add",
            "file" : "app/plugins/20.native-push.client.ts"
          },
          {
            "editType" : "edit",
            "file" : ".env-prod"
          },
          {
            "editType" : "edit",
            "file" : "server/api/chat/voice.post.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/mobile/index.vue"
        ],
        "commitId" : "d0ccdc3e4e26e7ea789d8b3813f0acd875ee8be8",
        "timestamp" : 1781167451000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Add chat entry point to the mobile dashboard\u000a\u000aThe chat window (/chat) was bundled into the app but unreachable — the desktop\u000a<ChatBadge> lives in navbars the /mobile/* pages don't use, and the mobile\u000alayout has no shared nav. Add the chat entry to the mobile dashboard:\u000a- <ChatBadge> in the header (live unread badge; taps → /chat on mobile),\u000a- a gated \"Chat\" tile in the task grid for discoverability.\u000a\u000aBoth reuse useChatEligible/useChatUnread (no new state, no server change) and\u000aself-hide for non-staff / when chat is disabled.\u000a\u000aCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\u000a",
        "date" : "2026-06-11 10:44:11 +0200",
        "id" : "d0ccdc3e4e26e7ea789d8b3813f0acd875ee8be8",
        "msg" : "Add chat entry point to the mobile dashboard",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/mobile/index.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/mobile/index.vue"
        ],
        "commitId" : "a95497c94c62d0e7c8cd1c8c5730f0da32f48d7e",
        "timestamp" : 1781169743000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Restructure + restyle the mobile dashboard header (Option A)\u000a\u000aModernize the cramped header: replace the centered \"LogShip Mobile\" title and\u000athe 4-button cluster with a clean profile-driven bar.\u000a\u000a- Left: gradient avatar (user initials) + first name + warehouse/org; tapping\u000a  opens the profile sheet.\u000a- Right: only the two task actions — scanner toggle and chat (with a live red\u000a  unread-count badge).\u000a- Theme toggle + logout move into the profile sheet (UModal, now titled\u000a  \"Profil\"), decluttering the bar.\u000a\u000aChat unread badge reuses useChatUnread; the chat button is gated by\u000auseChatEligible (hidden for non-staff). No server change.\u000a\u000aCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\u000a",
        "date" : "2026-06-11 11:22:23 +0200",
        "id" : "a95497c94c62d0e7c8cd1c8c5730f0da32f48d7e",
        "msg" : "Restructure + restyle the mobile dashboard header (Option A)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/mobile/index.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "android/app/build.gradle",
          "android/update-files/version.json"
        ],
        "commitId" : "ce4a701251b6e94be5f0a1bf251e4cc969852d08",
        "timestamp" : 1781170461000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "changes to mobile header\u000a",
        "date" : "2026-06-11 11:34:21 +0200",
        "id" : "ce4a701251b6e94be5f0a1bf251e4cc969852d08",
        "msg" : "changes to mobile header",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "android/app/build.gradle"
          },
          {
            "editType" : "edit",
            "file" : "android/update-files/version.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/api/chat/voice.post.ts",
          "server/routes/chat/ws.ts"
        ],
        "commitId" : "73dc5819a3a0a6870053a356ebd2ed03ba392914",
        "timestamp" : 1781170694000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "chat: push to all devices, not only when the user is fully offline\u000a\u000aPresence is per-USER (online if ANY socket is connected), but the FCM/web-push\u000afallback was gated on the whole user being offline. With two devices on one\u000alogin, a foreground device kept the user \"online\", so the server skipped the\u000apush entirely and the backgrounded 2nd device got nothing.\u000a\u000aSend the native FCM to ALL the recipient's devices on every message, regardless\u000aof presence. Foreground devices receive it silently (no pushNotificationReceived\u000ahandler → no tray; the live socket already rendered it), so there's no\u000adouble-notify; backgrounded/killed devices now get the tray notification.\u000aWeb push stays offline-only (an active browser tab already showed it live).\u000a\u000aApplied in both the text (ws.ts) and voice-note (voice.post.ts) paths.\u000a\u000aCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\u000a",
        "date" : "2026-06-11 11:38:14 +0200",
        "id" : "73dc5819a3a0a6870053a356ebd2ed03ba392914",
        "msg" : "chat: push to all devices, not only when the user is fully offline",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "server/api/chat/voice.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/routes/chat/ws.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "android/app/src/main/AndroidManifest.xml",
          "android/app/src/main/res/drawable/ic_stat_notify.xml",
          "app/composables/useChatSocket.ts",
          "server/utils/fcmNotifier.ts",
          "android/app/src/main/java/com/logship/mobile/MainActivity.java"
        ],
        "commitId" : "346a27eec2e6129c0607b7b41c4805ca4eb20e59",
        "timestamp" : 1781172054000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Fix background chat push not displaying on Android + in-app toast deep-link\u000a\u000aBackground FCM pushes played a sound but showed nothing in the tray/heads-up:\u000athe 'chat' notification channel was only created from JS (never runs on a\u000akilled app), with no small icon and no manifest fallback — so Android 8+\u000asilently dropped the notification (posted to a non-existent channel).\u000a\u000a- MainActivity: create the high-importance 'chat' channel NATIVELY in onCreate\u000a  so it always exists (persists when killed) → heads-up + shade.\u000a- ic_stat_notify.xml: a proper white notification small icon.\u000a- AndroidManifest: firebase default_notification_icon + default_notification_channel_id='chat'.\u000a- fcmNotifier: log sends (no-credential / no-tokens / sent N/M / per-token error)\u000a  so we can confirm pushes are actually sent vs a display problem.\u000a- useChatSocket: the in-app toast's \"open\" now navigates to /chat on mobile\u000a  (it previously only toggled the desktop drawer, which doesn't render on mobile).\u000a\u000aCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\u000a",
        "date" : "2026-06-11 12:00:54 +0200",
        "id" : "346a27eec2e6129c0607b7b41c4805ca4eb20e59",
        "msg" : "Fix background chat push not displaying on Android + in-app toast deep-link",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "android/app/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/fcmNotifier.ts"
          },
          {
            "editType" : "add",
            "file" : "android/app/src/main/res/drawable/ic_stat_notify.xml"
          },
          {
            "editType" : "edit",
            "file" : "android/app/src/main/java/com/logship/mobile/MainActivity.java"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/useChatSocket.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "android/app/build.gradle",
          "android/update-files/version.json"
        ],
        "commitId" : "96c1a8ae05278cee2c12cee066e03ea59634a5f7",
        "timestamp" : 1781172157000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Fix Android OS Level notification\u000a",
        "date" : "2026-06-11 12:02:37 +0200",
        "id" : "96c1a8ae05278cee2c12cee066e03ea59634a5f7",
        "msg" : "Fix Android OS Level notification",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "android/app/build.gradle"
          },
          {
            "editType" : "edit",
            "file" : "android/update-files/version.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/api/chat/voice/[id].get.ts",
          "app/components/chat/Drawer.vue",
          "app/pages/chat.vue",
          "app/composables/useImageDownscale.ts",
          "server/api/chat/image/[id].get.ts",
          "server/utils/chatDb.ts",
          "app/composables/useChatMedia.ts",
          "app/composables/useChat.ts",
          "server/api/chat/image.post.ts"
        ],
        "commitId" : "3b24faa650308e06fc6dd652371f416b59b91483",
        "timestamp" : 1781176390000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "chat: image sharing (send + view photos), mirroring the voice-note pattern\u000a\u000aAdds image messages to the staff chat, stored self-contained in chat.db like\u000avoice notes (no Strapi/iDempiere coupling):\u000a\u000a- chatDb: image_notes table + insert/get/link fns + retention sweep.\u000a- POST /api/chat/image: multipart upload → image_notes + a message carrying\u000a  meta {kind:'image', imageId}, fanned out over the socket + pushed (\ud83d\udcf7 Bild\u000a  label). Type guard (jpeg/png/webp/gif) + 8MB cap. No post-processing.\u000a- GET /api/chat/image/:id: serves the blob, party-authorized like the voice route.\u000a- useChat.sendImage (optimistic localUrl preview) + a shared downscaleImage util\u000a  (≤1600px / q0.82, GIFs passed through) so blobs stay small in sqlite.\u000a- Drawer.vue + pages/chat.vue (kept in sync): a \ud83d\udcf7 composer button (hidden\u000a  <input accept=image/*> → Android camera/gallery), an image bubble (thumbnail\u000a  opens full-size), and image CSS.\u000a\u000aAlso fixes media loading in the bundled app: <img>/<audio> element loads bypass\u000athe fetch wrapper, so chatMediaUrl() makes voice/image URLs absolute + token-bearing\u000ain the app, and the voice/image serve routes accept ?access_token= as an auth\u000afallback (web is unchanged — relative + cookie). This also makes VOICE playback\u000awork in the app for the first time.\u000a\u000aCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\u000a",
        "date" : "2026-06-11 13:13:10 +0200",
        "id" : "3b24faa650308e06fc6dd652371f416b59b91483",
        "msg" : "chat: image sharing (send + view photos), mirroring the voice-note pattern",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "server/api/chat/voice/[id].get.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/chat/image.post.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/chat/image/[id].get.ts"
          },
          {
            "editType" : "add",
            "file" : "app/composables/useImageDownscale.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/components/chat/Drawer.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/useChat.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/chatDb.ts"
          },
          {
            "editType" : "add",
            "file" : "app/composables/useChatMedia.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/chat.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "android/app/build.gradle",
          "android/update-files/version.json",
          "app/components/chat/Drawer.vue",
          "app/pages/chat.vue",
          "server/api/chat/image/[id].get.ts",
          "server/utils/chatDb.ts",
          "app/composables/useChat.ts",
          "server/api/chat/image.post.ts"
        ],
        "commitId" : "10feacd40f1f4e945f057bbeb44cd9972da8d3d2",
        "timestamp" : 1781182062000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "add image handling and vice voice german transcritpion\u000a",
        "date" : "2026-06-11 14:47:42 +0200",
        "id" : "10feacd40f1f4e945f057bbeb44cd9972da8d3d2",
        "msg" : "add image handling and vice voice german transcritpion",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "android/app/build.gradle"
          },
          {
            "editType" : "edit",
            "file" : "android/update-files/version.json"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/chat.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/chat/image.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/chatDb.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/components/chat/Drawer.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/useChat.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/chat/image/[id].get.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "android/app/build.gradle",
          "android/update-files/version.json",
          "server/api/partners/agreements/destroy.delete.ts",
          "app/components/partners/PartnerForm.vue",
          "app/components/partners/PartnerAgreementNotesEditor.vue",
          "server/api/partners/agreements/update.put.ts",
          "app/components/RichTextEditor.vue",
          "reference/recipes.md",
          "server/api/partners/agreements/store.post.ts",
          "server/api/partners/agreements/index.get.ts",
          "app/assets/langs/shared.js"
        ],
        "commitId" : "8eb323432715780fe53e768237f38112b4c77756",
        "timestamp" : 1781186917000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "add agreement notes to bpartner\u000a",
        "date" : "2026-06-11 16:08:37 +0200",
        "id" : "8eb323432715780fe53e768237f38112b4c77756",
        "msg" : "add agreement notes to bpartner",
        "paths" : [
          {
            "editType" : "add",
            "file" : "server/api/partners/agreements/update.put.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/partners/agreements/destroy.delete.ts"
          },
          {
            "editType" : "edit",
            "file" : "android/app/build.gradle"
          },
          {
            "editType" : "edit",
            "file" : "reference/recipes.md"
          },
          {
            "editType" : "add",
            "file" : "server/api/partners/agreements/index.get.ts"
          },
          {
            "editType" : "edit",
            "file" : "android/update-files/version.json"
          },
          {
            "editType" : "edit",
            "file" : "app/components/partners/PartnerForm.vue"
          },
          {
            "editType" : "add",
            "file" : "app/components/RichTextEditor.vue"
          },
          {
            "editType" : "add",
            "file" : "app/components/partners/PartnerAgreementNotesEditor.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          },
          {
            "editType" : "add",
            "file" : "server/api/partners/agreements/store.post.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/components/RichTextEditor.vue",
          "nuxt.config.ts",
          "app/components/partners/PartnerAgreementNotesEditor.vue",
          "server/api/partners/agreements/store.post.ts",
          "server/api/partners/agreements/update.put.ts",
          "app/assets/langs/shared.js"
        ],
        "commitId" : "e0259e37b18917e174f7d0436a1fca990a7106da",
        "timestamp" : 1781188747000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "add agreement notes to bpartner\u000a",
        "date" : "2026-06-11 16:39:07 +0200",
        "id" : "e0259e37b18917e174f7d0436a1fca990a7106da",
        "msg" : "add agreement notes to bpartner",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/components/partners/PartnerAgreementNotesEditor.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/partners/agreements/update.put.ts"
          },
          {
            "editType" : "edit",
            "file" : "nuxt.config.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/partners/agreements/store.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          },
          {
            "editType" : "edit",
            "file" : "app/components/RichTextEditor.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/components/dashboard/PicklistGenerateModal.vue",
          "app/composables/usePicklistPdf.ts"
        ],
        "commitId" : "860b3f6d10c00e06580690356df286f6129ac7f1",
        "timestamp" : 1781200468000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "add shipment printing to dashboard picklist card\u000a",
        "date" : "2026-06-11 19:54:28 +0200",
        "id" : "860b3f6d10c00e06580690356df286f6129ac7f1",
        "msg" : "add shipment printing to dashboard picklist card",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/components/dashboard/PicklistGenerateModal.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/usePicklistPdf.ts"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.younex.de/user/info",
      "fullName" : "info"
    }
  ]
}