<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>733</buildNumber><marked><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><branch><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><branch><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><branch><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#733</displayName><duration>74361</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #733</fullDisplayName><id>733</id><inProgress>false</inProgress><keepLog>false</keepLog><number>733</number><queueId>5679</queueId><result>SUCCESS</result><timestamp>1789084800272</timestamp><url>https://jenkins.younex.de/job/build-logship-frontend/733/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/offers/contract/send.post.ts</affectedPath><affectedPath>server/utils/offers/quoteConfirmation.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/pages/confirm/[token].vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>app/composables/useOfferContract.ts</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>app/pages/sign/[token].vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/utils/offers/contractSigning.ts</affectedPath><commitId>a7aa7ae42b222bbcc0ef3667b6bf58dc4e2892f3</commitId><timestamp>1789024134000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Offer/contract e-mails: button is 'Angebot öffnen' / 'Dokumente öffnen' (view only, non-binding) — accepting or signing is described as a separate, optional step on the page; default message texts, info boxes and modal label reworded accordingly
</comment><date>2026-09-10 09:08:54 +0200</date><id>a7aa7ae42b222bbcc0ef3667b6bf58dc4e2892f3</id><msg>Offer/contract e-mails: button is 'Angebot öffnen' / 'Dokumente öffnen' (view only, non-binding) — accepting or signing is described as a separate, optional step on the page; default message texts, info boxes and modal label reworded accordingly</msg><path><editType>edit</editType><file>app/pages/confirm/[token].vue</file></path><path><editType>edit</editType><file>app/composables/useOfferContract.ts</file></path><path><editType>edit</editType><file>app/pages/sign/[token].vue</file></path><path><editType>edit</editType><file>server/api/offers/contract/send.post.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quoteConfirmation.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path><path><editType>edit</editType><file>server/utils/offers/contractSigning.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/mobile/transcribe-text.post.ts</affectedPath><affectedPath>app/pages/mobile/movement.vue</affectedPath><commitId>fc1d48ab4d2e46c5f22309169e84c1c8a839300d</commitId><timestamp>1789026457000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile movement: opt-in billable ticket after completion — post-completion screen with selectable moved articles/qty, time or direct amount ([Zeitabrechnung]), typed or voice-transcribed note (new sync /api/mobile/transcribe-text), ticket for the partner linked to the source locator's org, audio attached to the ticket
</comment><date>2026-09-10 09:47:37 +0200</date><id>fc1d48ab4d2e46c5f22309169e84c1c8a839300d</id><msg>Mobile movement: opt-in billable ticket after completion — post-completion screen with selectable moved articles/qty, time or direct amount ([Zeitabrechnung]), typed or voice-transcribed note (new sync /api/mobile/transcribe-text), ticket for the partner linked to the source locator's org, audio attached to the ticket</msg><path><editType>add</editType><file>server/api/mobile/transcribe-text.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/movement.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>scripts/upload-mobile-update.sh</affectedPath><affectedPath>scripts/release-app.sh</affectedPath><affectedPath>scripts/stage-mobile-update.sh</affectedPath><commitId>1d1b2d4e81e0dda86dad7771d4f6e9b54d1a265d</commitId><timestamp>1789026991000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile app release channel moved into the logyou.de website repo: new scripts/stage-mobile-update.sh copies APK + version.json into ../logship/logyou-landing/public/logship (archives the replaced APK into history/, merges history.json, keeps last 10); release-app.sh hands off to it (MOBILE_PUBLISH=sftp keeps the SFTP uploader for Blut24, --push also deploys the site); release app 1.0.40 (code 41)
</comment><date>2026-09-10 09:56:31 +0200</date><id>1d1b2d4e81e0dda86dad7771d4f6e9b54d1a265d</id><msg>Mobile app release channel moved into the logyou.de website repo: new scripts/stage-mobile-update.sh copies APK + version.json into ../logship/logyou-landing/public/logship (archives the replaced APK into history/, merges history.json, keeps last 10); release-app.sh hands off to it (MOBILE_PUBLISH=sftp keeps the SFTP uploader for Blut24, --push also deploys the site); release app 1.0.40 (code 41)</msg><path><editType>add</editType><file>scripts/stage-mobile-update.sh</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>scripts/upload-mobile-update.sh</file></path><path><editType>edit</editType><file>scripts/release-app.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/settings/mobile-app/index.vue</affectedPath><affectedPath>scripts/release-app.sh</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>scripts/stage-mobile-update.sh</affectedPath><affectedPath>reference/ci/deploy-production.sh</affectedPath><affectedPath>app/composables/menu/admin/settings.ts</affectedPath><affectedPath>server/api/mobile/app-versions.get.ts</affectedPath><affectedPath>.env</affectedPath><affectedPath>server/api/mobile/app-download-link.get.ts</affectedPath><affectedPath>server/api/settings/mobile-app/publish.post.ts</affectedPath><affectedPath>server/api/mobile/app-version.get.ts</affectedPath><affectedPath>scripts/upload-mobile-update.sh</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/utils/mobileReleases.ts</affectedPath><affectedPath>server/api/public/mobile/[token]/[...path].ts</affectedPath><affectedPath>scripts/publish-mobile-update.sh</affectedPath><affectedPath>.env-prod</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>2ccbd5088aaa0422989f669a9d2e67bf1827d8d7</commitId><timestamp>1789028835000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile app release channel inside the ERP: APK + manifests live server-side in data/mobile-releases (never in the bundle or git), served via expiring HMAC-signed public download URLs (/api/public/mobile/&lt;token&gt;/…, Range support); app-version/app-versions read the local channel for authenticated checks and keep proxying www.logyou.de/logship for old builds (MOBILE_APP_LEGACY_FALLBACK); new Settings → Mobile App page with QR install code, download link and admin upload form; publish endpoint (admin verified via ad_role or service token) + scripts/publish-mobile-update.sh; release-app.sh publishes to erp,landing; deploy script preserves data/mobile-releases
</comment><date>2026-09-10 10:27:15 +0200</date><id>2ccbd5088aaa0422989f669a9d2e67bf1827d8d7</id><msg>Mobile app release channel inside the ERP: APK + manifests live server-side in data/mobile-releases (never in the bundle or git), served via expiring HMAC-signed public download URLs (/api/public/mobile/&lt;token&gt;/…, Range support); app-version/app-versions read the local channel for authenticated checks and keep proxying www.logyou.de/logship for old builds (MOBILE_APP_LEGACY_FALLBACK); new Settings → Mobile App page with QR install code, download link and admin upload form; publish endpoint (admin verified via ad_role or service token) + scripts/publish-mobile-update.sh; release-app.sh publishes to erp,landing; deploy script preserves data/mobile-releases</msg><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>server/api/settings/mobile-app/publish.post.ts</file></path><path><editType>edit</editType><file>scripts/stage-mobile-update.sh</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>add</editType><file>app/pages/settings/mobile-app/index.vue</file></path><path><editType>edit</editType><file>reference/ci/deploy-production.sh</file></path><path><editType>edit</editType><file>server/api/mobile/app-versions.get.ts</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>edit</editType><file>app/composables/menu/admin/settings.ts</file></path><path><editType>add</editType><file>server/api/public/mobile/[token]/[...path].ts</file></path><path><editType>edit</editType><file>scripts/release-app.sh</file></path><path><editType>add</editType><file>server/utils/mobileReleases.ts</file></path><path><editType>add</editType><file>scripts/publish-mobile-update.sh</file></path><path><editType>edit</editType><file>.env</file></path><path><editType>edit</editType><file>server/api/mobile/app-version.get.ts</file></path><path><editType>add</editType><file>server/api/mobile/app-download-link.get.ts</file></path><path><editType>edit</editType><file>scripts/upload-mobile-update.sh</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/products/search.get.ts</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>reference/~$roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</affectedPath><affectedPath>app/pages/mobile/fix-locator-owner.vue</affectedPath><affectedPath>app/pages/mobile/print-labels.vue</affectedPath><affectedPath>reference/roadsurfer_Fulfillment_Anfrage_Preisblatt (3).xlsx</affectedPath><affectedPath>app/pages/mobile/product.vue</affectedPath><affectedPath>server/api/mobile/product-search.post.ts</affectedPath><affectedPath>reference/roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/mobile/movement.vue</affectedPath><commitId>6ec8b08642bd83c7778bedbbc43d14bd77423300</commitId><timestamp>1789030903000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show bom on mobile search
</comment><date>2026-09-10 11:01:43 +0200</date><id>6ec8b08642bd83c7778bedbbc43d14bd77423300</id><msg>show bom on mobile search</msg><path><editType>edit</editType><file>app/pages/mobile/movement.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>add</editType><file>reference/roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</file></path><path><editType>edit</editType><file>app/pages/mobile/product.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/fix-locator-owner.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/print-labels.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>server/api/mobile/product-search.post.ts</file></path><path><editType>add</editType><file>reference/~$roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</file></path><path><editType>add</editType><file>reference/roadsurfer_Fulfillment_Anfrage_Preisblatt (3).xlsx</file></path><path><editType>edit</editType><file>server/api/materials/products/search.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>7dfb2c9d7a1f68be35d33c900a9558fbb28e0b31</commitId><timestamp>1789031079000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release app 1.0.41 (code 42): movement ticket + BOM in mobile search
</comment><date>2026-09-10 11:04:39 +0200</date><id>7dfb2c9d7a1f68be35d33c900a9558fbb28e0b31</id><msg>release app 1.0.41 (code 42): movement ticket + BOM in mobile search</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/release-app.sh</affectedPath><commitId>80eb9f223b2040bdd659ad95c627f20ddd818207</commitId><timestamp>1789031406000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release-app.sh: interactive release — asks for versionName (Enter = auto bump), release notes, publish target (default: ERP channel only; landing/sftp optional, website push asked separately) and a final confirmation with summary; --yes runs non-interactively with the defaults
</comment><date>2026-09-10 11:10:06 +0200</date><id>80eb9f223b2040bdd659ad95c627f20ddd818207</id><msg>release-app.sh: interactive release — asks for versionName (Enter = auto bump), release notes, publish target (default: ERP channel only; landing/sftp optional, website push asked separately) and a final confirmation with summary; --yes runs non-interactively with the defaults</msg><path><editType>edit</editType><file>scripts/release-app.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/mobile/ProductThumb.vue</affectedPath><affectedPath>server/api/materials/products/search.get.ts</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>server/api/mobile/product-thumb/[id].get.ts</affectedPath><affectedPath>app/pages/mobile/print-labels.vue</affectedPath><affectedPath>app/pages/mobile/fix-locator-owner.vue</affectedPath><affectedPath>app/pages/mobile/product.vue</affectedPath><affectedPath>server/api/mobile/product-search.post.ts</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/mobile/movement.vue</affectedPath><commitId>a9d04682477bb7e454899e41ffba3b62510f6ce7</commitId><timestamp>1789032523000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile article search: BOM / JTL-BOM tags on results, "Stücklisten (BOM) ausblenden" filter checkbox (default off, on all 7 pages incl. receive), article names clamped to 3 lines, viewport-lazy product thumbnails (MobileProductThumb + GET /api/mobile/product-thumb/{id}, per-product client + 10-min server cache) — search endpoints return isBOM/isJtlBom/imageUrl
</comment><date>2026-09-10 11:28:43 +0200</date><id>a9d04682477bb7e454899e41ffba3b62510f6ce7</id><msg>Mobile article search: BOM / JTL-BOM tags on results, "Stücklisten (BOM) ausblenden" filter checkbox (default off, on all 7 pages incl. receive), article names clamped to 3 lines, viewport-lazy product thumbnails (MobileProductThumb + GET /api/mobile/product-thumb/{id}, per-product client + 10-min server cache) — search endpoints return isBOM/isJtlBom/imageUrl</msg><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/movement.vue</file></path><path><editType>add</editType><file>app/components/mobile/ProductThumb.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/print-labels.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/fix-locator-owner.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/search.get.ts</file></path><path><editType>add</editType><file>server/api/mobile/product-thumb/[id].get.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/product.vue</file></path><path><editType>edit</editType><file>server/api/mobile/product-search.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>app/plugins/00.capacitor-api.client.ts</affectedPath><affectedPath>app/composables/useAppUpdate.ts</affectedPath><commitId>de1f81e0ec815245ce32ccd881ddcfb7784b93ea</commitId><timestamp>1789034450000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile app update check now authenticated: useAppUpdate uses relative /api/mobile/app-version(s) so the Capacitor fetch wrapper injects the Bearer token (absolute URLs bypassed it and only ever saw the legacy www.logyou.de manifest); the raw-fetch wrapper also handles absolute apiBase/api URLs; release app 1.0.44 (code 45)
</comment><date>2026-09-10 12:00:50 +0200</date><id>de1f81e0ec815245ce32ccd881ddcfb7784b93ea</id><msg>Mobile app update check now authenticated: useAppUpdate uses relative /api/mobile/app-version(s) so the Capacitor fetch wrapper injects the Bearer token (absolute URLs bypassed it and only ever saw the legacy www.logyou.de manifest); the raw-fetch wrapper also handles absolute apiBase/api URLs; release app 1.0.44 (code 45)</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/composables/useAppUpdate.ts</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/plugins/00.capacitor-api.client.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><commitId>9579d52a373e994fba20c9069e0c34d64f5d48df</commitId><timestamp>1789034519000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release app 1.0.45 (code 46): authenticated update check
</comment><date>2026-09-10 12:01:59 +0200</date><id>9579d52a373e994fba20c9069e0c34d64f5d48df</id><msg>release app 1.0.45 (code 46): authenticated update check</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.claude/settings.json</affectedPath><affectedPath>.gitignore</affectedPath><commitId>2d2b2fb44183b2f0fc103fe7b58bb02ef2bf0fae</commitId><timestamp>1789034920000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Track .claude/settings.json so cloud sessions default to bypass permissions
</comment><date>2026-09-10 12:08:40 +0200</date><id>2d2b2fb44183b2f0fc103fe7b58bb02ef2bf0fae</id><msg>Track .claude/settings.json so cloud sessions default to bypass permissions</msg><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>.claude/settings.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductDetailRecordLocatedAt.vue</affectedPath><commitId>811b119c435d102b227b8ba1f4cd92edda76c8a1</commitId><timestamp>1789044442000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product Located-at tab: quantity pills aligned with their column headers, Active column removed, Date Material Policy shown as dd.mm.yyyy
</comment><date>2026-09-10 14:47:22 +0200</date><id>811b119c435d102b227b8ba1f4cd92edda76c8a1</id><msg>Product Located-at tab: quantity pills aligned with their column headers, Active column removed, Date Material Policy shown as dd.mm.yyyy</msg><path><editType>edit</editType><file>app/components/materials/ProductDetailRecordLocatedAt.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductForm.vue</affectedPath><commitId>6c46f67746d277eea733bd682852131879b9ee28</commitId><timestamp>1789044442000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product form: hide Summary Level checkbox (commented out, not needed for now; isSummary stays in the model)
</comment><date>2026-09-10 14:47:22 +0200</date><id>6c46f67746d277eea733bd682852131879b9ee28</id><msg>Product form: hide Summary Level checkbox (commented out, not needed for now; isSummary stays in the model)</msg><path><editType>edit</editType><file>app/components/materials/ProductForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/composables/useTransactionReportPdf.ts</affectedPath><affectedPath>server/api/materials/products/search.get.ts</affectedPath><affectedPath>app/pages/materials/transactions.vue</affectedPath><commitId>8ffa636208f0c71cfa4ff4d8c47b2bc8649ba9fc</commitId><timestamp>1789044442000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Transactions page: product search on the Nuxt UI SelectBox wrapper (tedir-select dropped) with rich results (thumbnail, article no., SKU/MPN/category, BOM + org + inactive tags), selected-product card with product link, ?productId= deep link that preloads the product and its history; PDF report extracted into useTransactionReportPdf; product search returns org/category/active
</comment><date>2026-09-10 14:47:22 +0200</date><id>8ffa636208f0c71cfa4ff4d8c47b2bc8649ba9fc</id><msg>Transactions page: product search on the Nuxt UI SelectBox wrapper (tedir-select dropped) with rich results (thumbnail, article no., SKU/MPN/category, BOM + org + inactive tags), selected-product card with product link, ?productId= deep link that preloads the product and its history; PDF report extracted into useTransactionReportPdf; product search returns org/category/active</msg><path><editType>edit</editType><file>server/api/materials/products/search.get.ts</file></path><path><editType>add</editType><file>app/composables/useTransactionReportPdf.ts</file></path><path><editType>edit</editType><file>app/pages/materials/transactions.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/products/[id]/transaction/index.get.ts</affectedPath><affectedPath>app/components/materials/ProductDetailRecordTransaction.vue</affectedPath><commitId>937074b2db7cebfe41e77f58b283eb186d9fe1da</commitId><timestamp>1789044442000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product Transactions tab: order + shipment links (server resolves M_InOutLine → M_InOut → C_Order with a batched lookup; sales vs purchase routes), dates as dd.mm.yyyy with muted booking time, coloured movement-type icons and signed quantity pills, Active column removed, Report button (PDF preview modal + download) and link to the prefilled transactions page
</comment><date>2026-09-10 14:47:22 +0200</date><id>937074b2db7cebfe41e77f58b283eb186d9fe1da</id><msg>Product Transactions tab: order + shipment links (server resolves M_InOutLine → M_InOut → C_Order with a batched lookup; sales vs purchase routes), dates as dd.mm.yyyy with muted booking time, coloured movement-type icons and signed quantity pills, Active column removed, Report button (PDF preview modal + download) and link to the prefilled transactions page</msg><path><editType>edit</editType><file>server/api/materials/products/[id]/transaction/index.get.ts</file></path><path><editType>edit</editType><file>app/components/materials/ProductDetailRecordTransaction.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/fetchHelper.ts</affectedPath><affectedPath>server/utils/refreshTokenHelper.ts</affectedPath><affectedPath>server/middleware/fetch.ts</affectedPath><commitId>11ac029738ce4ae6caf08464d24d7972fb8c9352</commitId><timestamp>1789048717000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>iDempiere fetch layer: no ofetch auto-retry, 90 s timeout, and no token-refresh retry after backend errors

fetchHelper and event.context.fetch now send retry: 0 (ofetch retried every GET once on 500/502/503/504) plus a timeout (IDEMPIERE_FETCH_TIMEOUT_MS, default 90 s) and record the last iDempiere error on event.context. refreshTokenHelper throws instead of refreshing when that error is not 401/403, so the standard catch → refresh → retry route pattern no longer re-runs a query that just timed out on a stalled backend (2026-09-10 retry storm: 6 → 79 calls/min of one heavy query, 178 of 200 Jetty threads blocked).
</comment><date>2026-09-10 15:58:37 +0200</date><id>11ac029738ce4ae6caf08464d24d7972fb8c9352</id><msg>iDempiere fetch layer: no ofetch auto-retry, 90 s timeout, and no token-refresh retry after backend errors</msg><path><editType>edit</editType><file>server/utils/fetchHelper.ts</file></path><path><editType>edit</editType><file>server/utils/refreshTokenHelper.ts</file></path><path><editType>edit</editType><file>server/middleware/fetch.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/products/qty-on-hand-overview.get.ts</affectedPath><affectedPath>server/utils/productStorageHelper.ts</affectedPath><affectedPath>server/api/materials/products/qty-on-hand-pit.get.ts</affectedPath><affectedPath>server/api/materials/products/index.get.ts</affectedPath><affectedPath>server/api/materials/locators/priority-recommendations.get.ts</affectedPath><affectedPath>server/api/materials/products/qty-on-hand-by-locator.get.ts</affectedPath><affectedPath>server/api/materials/products/ag-grid/products.post.ts</affectedPath><commitId>df9ce51c1905ff2e546a2f03d259fc6d6ae689d0</commitId><timestamp>1789048717000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Products with stock: drop $expand=M_Storage (global-lock hazard in idempiere-rest) for a paged m_storage join

New server/utils/productStorageHelper.ts fetches products plainly and joins m_storage rows in Node (by-id chunks for a page, all rows with a 30 s single-flight cache for full lists), keeping the M_Storage array shape. A detail expand runs DefaultQueryConverter.convertStatement (synchronized singleton) once per parent record — 3.3k products = ~6.6k serialized queries under one lock that every other $filter request waits on. Switched: materials/products (also gains ?top=&amp;skip= and a 60 s per client/role/org response cache with single-flight), ag-grid products, qty-on-hand overview/by-locator/pit, locator priority recommendations.
</comment><date>2026-09-10 15:58:37 +0200</date><id>df9ce51c1905ff2e546a2f03d259fc6d6ae689d0</id><msg>Products with stock: drop $expand=M_Storage (global-lock hazard in idempiere-rest) for a paged m_storage join</msg><path><editType>edit</editType><file>server/api/materials/locators/priority-recommendations.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/qty-on-hand-by-locator.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/qty-on-hand-overview.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/ag-grid/products.post.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/qty-on-hand-pit.get.ts</file></path><path><editType>add</editType><file>server/utils/productStorageHelper.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/synologyHelper.ts</affectedPath><commitId>029c404ada50027cefc2e31638d4ca37741234f4</commitId><timestamp>1789048717000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Synology helper: timeouts on every NAS call, shared session, re-login on session errors

Every Surveillance Station request carries an AbortSignal timeout (15 s API, 5 min download) so a hung NAS cannot pin a request. One login is reused for 30 min across requests instead of login+logout per call; error codes 105/106/107/119 trigger exactly one re-login + retry with the session updated in place. synologyLogout is a no-op unless force=true, so the route handlers are unchanged.
</comment><date>2026-09-10 15:58:37 +0200</date><id>029c404ada50027cefc2e31638d4ca37741234f4</id><msg>Synology helper: timeouts on every NAS call, shared session, re-login on session errors</msg><path><editType>edit</editType><file>server/utils/synologyHelper.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/recipes.md</affectedPath><commitId>8c172c0be5713df8d7222328e4d66d38cf2b47a8</commitId><timestamp>1789048717000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recipes: iDempiere REST load rules (no child $expand over big lists, no blind retries, $top everywhere) and the Synology session/timeout conventions
</comment><date>2026-09-10 15:58:37 +0200</date><id>8c172c0be5713df8d7222328e4d66d38cf2b47a8</id><msg>Recipes: iDempiere REST load rules (no child $expand over big lists, no blind retries, $top everywhere) and the Synology session/timeout conventions</msg><path><editType>edit</editType><file>reference/recipes.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/reconditioning.vue</affectedPath><affectedPath>server/utils/returnLocatorHelper.ts</affectedPath><affectedPath>server/api/mobile/reconditioning/lookup.post.ts</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><affectedPath>server/api/mobile/reconditioning/target-locators.post.ts</affectedPath><affectedPath>server/api/materials/stock-transfers/store.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>06b01d4c15174f621d93d5f66812bee129e41177</commitId><timestamp>1789051910000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile Reconditioning page (/mobile/reconditioning): scan return label (RMA no. / customer-return doc no. / product code) → customer return with lines on non-shippable locators only, select articles + qty (capped by on-hand and already-reconditioned qty), target locator with org default preselected, books an M_Movement linked via M_Movement.M_Customer_Return_ID (fail-soft if column missing), then optional billable 'Reconditioning' ticket (time/amount, articles as message, no note/voice); endpoints /api/mobile/reconditioning/{lookup,target-locators}; dashboard tile + en/de/es/ne translations
</comment><date>2026-09-10 16:51:50 +0200</date><id>06b01d4c15174f621d93d5f66812bee129e41177</id><msg>Mobile Reconditioning page (/mobile/reconditioning): scan return label (RMA no. / customer-return doc no. / product code) → customer return with lines on non-shippable locators only, select articles + qty (capped by on-hand and already-reconditioned qty), target locator with org default preselected, books an M_Movement linked via M_Movement.M_Customer_Return_ID (fail-soft if column missing), then optional billable 'Reconditioning' ticket (time/amount, articles as message, no note/voice); endpoints /api/mobile/reconditioning/{lookup,target-locators}; dashboard tile + en/de/es/ne translations</msg><path><editType>edit</editType><file>server/utils/returnLocatorHelper.ts</file></path><path><editType>add</editType><file>app/pages/mobile/reconditioning.vue</file></path><path><editType>edit</editType><file>server/api/materials/stock-transfers/store.post.ts</file></path><path><editType>add</editType><file>server/api/mobile/reconditioning/lookup.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/mobile/reconditioning/target-locators.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><commitId>59962537dce5a8b573a7c0895f02e00770863f7c</commitId><timestamp>1789052001000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release app 1.0.46 (code 47): mobile Reconditioning page
</comment><date>2026-09-10 16:53:21 +0200</date><id>59962537dce5a8b573a7c0895f02e00770863f7c</id><msg>release app 1.0.46 (code 47): mobile Reconditioning page</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/bi/product-performance.get.ts</affectedPath><affectedPath>app/composables/menu/admin/bi.ts</affectedPath><affectedPath>app/pages/bi/product-performance.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><commitId>63146b1cd06c93d864c5f8c03573b917757d37ba</commitId><timestamp>1789052728000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>BI Product Performance (/bi/product-performance, admins only): per-merchant product sales analytics — rolling window (3d…12m) with previous-period deltas or 12/6/24-month matrix (heat cells, sparklines, 3M-vs-3M trend); sold/returned/return-rate/net revenue/on-hand/coverage per product; scope = top N sellers or manual pick list (persisted per org, pin from table); KPI cards, daily and monthly charts, category share, worst return rates, CSV export; direct-Postgres route server/api/bi/product-performance.get.ts; sidebar + top-menu entries, en/de/es translations
</comment><date>2026-09-10 17:05:28 +0200</date><id>63146b1cd06c93d864c5f8c03573b917757d37ba</id><msg>BI Product Performance (/bi/product-performance, admins only): per-merchant product sales analytics — rolling window (3d…12m) with previous-period deltas or 12/6/24-month matrix (heat cells, sparklines, 3M-vs-3M trend); sold/returned/return-rate/net revenue/on-hand/coverage per product; scope = top N sellers or manual pick list (persisted per org, pin from table); KPI cards, daily and monthly charts, category share, worst return rates, CSV export; direct-Postgres route server/api/bi/product-performance.get.ts; sidebar + top-menu entries, en/de/es translations</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/pages/bi/product-performance.vue</file></path><path><editType>edit</editType><file>app/composables/menu/admin/bi.ts</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>server/api/bi/product-performance.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/bi/product-performance.vue</affectedPath><commitId>77517cfa18d11aab027e793d79f92f3ab9cf573f</commitId><timestamp>1789053260000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>BI Product Performance: hide charts/table until a report is loaded (no stale chart data when switching org or with an empty manual selection), subtle row action buttons
</comment><date>2026-09-10 17:14:20 +0200</date><id>77517cfa18d11aab027e793d79f92f3ab9cf573f</id><msg>BI Product Performance: hide charts/table until a report is loaded (no stale chart data when switching org or with an empty manual selection), subtle row action buttons</msg><path><editType>edit</editType><file>app/pages/bi/product-performance.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/reconditioning.vue</affectedPath><affectedPath>server/api/mobile/reconditioning/lookup.post.ts</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/integrations/returns-desktop.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>6fd692b75c4074aaff411735e54a2ca8301c8de9</commitId><timestamp>1789060461000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile Reconditioning: lookup by RMA number only (no return-doc-no / product-code fallback), return label barcode now encodes the RMA number (was product SKU, so scanning never hit the RMA path), keep-alive focus lifecycle for the hidden scanner input, en/de/es hint texts
</comment><date>2026-09-10 19:14:21 +0200</date><id>6fd692b75c4074aaff411735e54a2ca8301c8de9</id><msg>Mobile Reconditioning: lookup by RMA number only (no return-doc-no / product-code fallback), return label barcode now encodes the RMA number (was product SKU, so scanning never hit the RMA path), keep-alive focus lifecycle for the hidden scanner input, en/de/es hint texts</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/mobile/reconditioning.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>server/api/mobile/reconditioning/lookup.post.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/returns-desktop.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/reconditioning.vue</affectedPath><affectedPath>server/api/mobile/reconditioning/print-report.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>5b77679c090a7efc6f52a11c276005f81798ebcf</commitId><timestamp>1789060807000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile Reconditioning: A4 movement report (Umlagerungsbericht) printed after booking — server-rendered pdfmake sheet grouped by target locator (article, qty, from → to, checkboxes, disposed lines, signature line) sent via lp to the remembered paper printer (CUST_Printer 'pap', default-on toggle + printer select persisted per device); per-line 'Entsorgen' option books non-reconditionable articles OUT via physical inventory (MMIPI, qtyCount = on-hand − disposed, description documents the disposal) instead of moving them, target locator only required when something is moved; ticket + report cover both; en/de/es keys
</comment><date>2026-09-10 19:20:07 +0200</date><id>5b77679c090a7efc6f52a11c276005f81798ebcf</id><msg>Mobile Reconditioning: A4 movement report (Umlagerungsbericht) printed after booking — server-rendered pdfmake sheet grouped by target locator (article, qty, from → to, checkboxes, disposed lines, signature line) sent via lp to the remembered paper printer (CUST_Printer 'pap', default-on toggle + printer select persisted per device); per-line 'Entsorgen' option books non-reconditionable articles OUT via physical inventory (MMIPI, qtyCount = on-hand − disposed, description documents the disposal) instead of moving them, target locator only required when something is moved; ticket + report cover both; en/de/es keys</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/mobile/reconditioning.vue</file></path><path><editType>add</editType><file>server/api/mobile/reconditioning/print-report.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>affedcf372684fb431685c61bb299efef3542419</commitId><timestamp>1789060902000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release app 1.0.47 (code 48): Reconditioning RMA-only scan, A4 movement report, disposal option
</comment><date>2026-09-10 19:21:42 +0200</date><id>affedcf372684fb431685c61bb299efef3542419</id><msg>release app 1.0.47 (code 48): Reconditioning RMA-only scan, A4 movement report, disposal option</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>server/api/print/return-label.post.ts</affectedPath><affectedPath>app/pages/integrations/returns-desktop.vue</affectedPath><commitId>3720a71faf263fcf49588812d303e43e52fd2baa</commitId><timestamp>1789062247000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Return label rebuilt: ONE label per return (was one per article and qty) rendered server-side by POST /api/print/return-label at the printer's real label size (registry → CUPS → legacy fallback, same as product labels) with size-driven layouts (tiny 35×17 / compact 54×29 / standard 74×52, 56×75, 102×152 with continuation pages), vector CODE128 of the RMA or customer-return document number, ad_org.companyname header band, partner · reason · locator line and an article table with quantities; mobile return page + desktop returns page now call the route instead of building jsPDF labels client-side
</comment><date>2026-09-10 19:44:07 +0200</date><id>3720a71faf263fcf49588812d303e43e52fd2baa</id><msg>Return label rebuilt: ONE label per return (was one per article and qty) rendered server-side by POST /api/print/return-label at the printer's real label size (registry → CUPS → legacy fallback, same as product labels) with size-driven layouts (tiny 35×17 / compact 54×29 / standard 74×52, 56×75, 102×152 with continuation pages), vector CODE128 of the RMA or customer-return document number, ad_org.companyname header band, partner · reason · locator line and an article table with quantities; mobile return page + desktop returns page now call the route instead of building jsPDF labels client-side</msg><path><editType>add</editType><file>server/api/print/return-label.post.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/returns-desktop.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>a7077f906fa454a31e9d28a5415ce57f617140ed</commitId><timestamp>1789062317000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release app 1.0.48 (code 49): new return label (one per return, server-rendered)
</comment><date>2026-09-10 19:45:17 +0200</date><id>a7077f906fa454a31e9d28a5415ce57f617140ed</id><msg>release app 1.0.48 (code 49): new return label (one per return, server-rendered)</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/edit.vue</affectedPath><affectedPath>app/pages/settings/order-sources/create.vue</affectedPath><affectedPath>server/api/settings/order-sources/update.put.ts</affectedPath><affectedPath>server/api/settings/order-sources/store.post.ts</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/view.vue</affectedPath><commitId>b0144617e997073012c0381e848fff6798b301d7</commitId><timestamp>1789065370000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Order sources: Amazon returns import flag (isImportReturns) + lookback days (importReturnsDaysFilter) wired through create/edit/view + store/update routes — toggle in the Marketplace-Specific tab's Amazon SP-API block gates the middleware's daily MFN returns → RMA import
</comment><date>2026-09-10 20:36:10 +0200</date><id>b0144617e997073012c0381e848fff6798b301d7</id><msg>Order sources: Amazon returns import flag (isImportReturns) + lookback days (importReturnsDaysFilter) wired through create/edit/view + store/update routes — toggle in the Marketplace-Specific tab's Amazon SP-API block gates the middleware's daily MFN returns → RMA import</msg><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/create.vue</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/store.post.ts</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/view.vue</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></freeStyleBuild>