Skip to content

Changes

Started by timer
Started 8 days 13 hr ago
Took 1 min 14 sec on built-in

Summary

  1. 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 (details)
  2. 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 (details)
  3. 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) (details)
  4. 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/<token>/…, 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 (details)
  5. show bom on mobile search (details)
  6. release app 1.0.41 (code 42): movement ticket + BOM in mobile search (details)
  7. 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 (details)
  8. 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 (details)
  9. 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) (details)
  10. release app 1.0.45 (code 46): authenticated update check (details)
  11. Track .claude/settings.json so cloud sessions default to bypass permissions (details)
  12. Product Located-at tab: quantity pills aligned with their column headers, Active column removed, Date Material Policy shown as dd.mm.yyyy (details)
  13. Product form: hide Summary Level checkbox (commented out, not needed for now; isSummary stays in the model) (details)
  14. 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 (details)
  15. 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 (details)
  16. iDempiere fetch layer: no ofetch auto-retry, 90 s timeout, and no token-refresh retry after backend errors (details)
  17. Products with stock: drop $expand=M_Storage (global-lock hazard in idempiere-rest) for a paged m_storage join (details)
  18. Synology helper: timeouts on every NAS call, shared session, re-login on session errors (details)
  19. Recipes: iDempiere REST load rules (no child $expand over big lists, no blind retries, $top everywhere) and the Synology session/timeout conventions (details)
  20. 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 (details)
  21. release app 1.0.46 (code 47): mobile Reconditioning page (details)
  22. 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 (details)
  23. 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 (details)
  24. 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 (details)
  25. 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 (details)
  26. release app 1.0.47 (code 48): Reconditioning RMA-only scan, A4 movement report, disposal option (details)
  27. 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 (details)
  28. release app 1.0.48 (code 49): new return label (one per return, server-rendered) (details)
  29. 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 (details)
Commit a7aa7ae42b222bbcc0ef3667b6bf58dc4e2892f3 by info
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
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedserver/utils/offers/contractSigning.ts (diff)
The file was modifiedserver/api/offers/contract/send.post.ts (diff)
The file was modifiedapp/pages/confirm/[token].vue (diff)
The file was modifiedapp/composables/useOfferQuote.ts (diff)
The file was modifiedserver/utils/offers/quoteConfirmation.ts (diff)
The file was modifiedapp/pages/sign/[token].vue (diff)
The file was modifiedserver/api/offers/quote/send.post.ts (diff)
The file was modifiedapp/components/offers/QuoteModal.vue (diff)
The file was modifiedapp/composables/useOfferContract.ts (diff)
Commit fc1d48ab4d2e46c5f22309169e84c1c8a839300d by info
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
The file was modifiedapp/pages/mobile/movement.vue (diff)
The file was addedserver/api/mobile/transcribe-text.post.ts
Commit 1d1b2d4e81e0dda86dad7771d4f6e9b54d1a265d by info
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)
The file was modifiedscripts/release-app.sh (diff)
The file was modifiedscripts/upload-mobile-update.sh (diff)
The file was modifiedandroid/app/build.gradle (diff)
The file was addedscripts/stage-mobile-update.sh
The file was modifiedandroid/update-files/version.json (diff)
Commit 2ccbd5088aaa0422989f669a9d2e67bf1827d8d7 by info
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/<token>/…, 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
The file was modifiedreference/ci/deploy-production.sh (diff)
The file was modified.env-dev (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modified.env-prod (diff)
The file was modifiedapp/composables/menu/admin/settings.ts (diff)
The file was modifiednuxt.config.ts (diff)
The file was addedapp/pages/settings/mobile-app/index.vue
The file was modifiedserver/api/mobile/app-version.get.ts (diff)
The file was addedserver/api/mobile/app-download-link.get.ts
The file was addedserver/utils/mobileReleases.ts
The file was addedserver/api/settings/mobile-app/publish.post.ts
The file was addedscripts/publish-mobile-update.sh
The file was addedserver/api/public/mobile/[token]/[...path].ts
The file was modifiedscripts/release-app.sh (diff)
The file was modified.env (diff)
The file was modified.gitignore (diff)
The file was modifiedscripts/upload-mobile-update.sh (diff)
The file was modifiedscripts/stage-mobile-update.sh (diff)
The file was modifiedserver/api/mobile/app-versions.get.ts (diff)
Commit 6ec8b08642bd83c7778bedbbc43d14bd77423300 by info
show bom on mobile search
The file was modifiedapp/pages/mobile/product.vue (diff)
The file was modifiedapp/pages/mobile/receive.vue (diff)
The file was modifiedapp/pages/mobile/fix-locator-owner.vue (diff)
The file was modifiedserver/api/materials/products/search.get.ts (diff)
The file was addedreference/~$roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx
The file was modifiedapp/pages/mobile/movement.vue (diff)
The file was modifiedapp/pages/mobile/print-labels.vue (diff)
The file was modifiedapp/pages/mobile/inventory.vue (diff)
The file was addedreference/roadsurfer_Fulfillment_Anfrage_Preisblatt (3).xlsx
The file was modifiedapp/pages/mobile/return.vue (diff)
The file was addedreference/roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx
The file was modifiedserver/api/mobile/product-search.post.ts (diff)
Commit 7dfb2c9d7a1f68be35d33c900a9558fbb28e0b31 by info
release app 1.0.41 (code 42): movement ticket + BOM in mobile search
The file was modifiedandroid/app/build.gradle (diff)
The file was modifiedandroid/update-files/version.json (diff)
Commit 80eb9f223b2040bdd659ad95c627f20ddd818207 by info
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
The file was modifiedscripts/release-app.sh (diff)
Commit a9d04682477bb7e454899e41ffba3b62510f6ce7 by info
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
The file was modifiedapp/pages/mobile/product.vue (diff)
The file was modifiedapp/pages/mobile/receive.vue (diff)
The file was addedapp/components/mobile/ProductThumb.vue
The file was modifiedapp/pages/mobile/inventory.vue (diff)
The file was modifiedapp/pages/mobile/print-labels.vue (diff)
The file was modifiedserver/api/mobile/product-search.post.ts (diff)
The file was modifiedapp/pages/mobile/return.vue (diff)
The file was modifiedapp/pages/mobile/fix-locator-owner.vue (diff)
The file was modifiedserver/api/materials/products/search.get.ts (diff)
The file was addedserver/api/mobile/product-thumb/[id].get.ts
The file was modifiedapp/pages/mobile/movement.vue (diff)
Commit de1f81e0ec815245ce32ccd881ddcfb7784b93ea by info
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)
The file was modifiedandroid/app/build.gradle (diff)
The file was modifiedapp/composables/useAppUpdate.ts (diff)
The file was modifiedapp/plugins/00.capacitor-api.client.ts (diff)
The file was modifiedandroid/update-files/version.json (diff)
Commit 9579d52a373e994fba20c9069e0c34d64f5d48df by info
release app 1.0.45 (code 46): authenticated update check
The file was modifiedandroid/update-files/version.json (diff)
The file was modifiedandroid/app/build.gradle (diff)
Commit 2d2b2fb44183b2f0fc103fe7b58bb02ef2bf0fae by info
Track .claude/settings.json so cloud sessions default to bypass permissions
The file was modified.gitignore (diff)
The file was added.claude/settings.json
Commit 811b119c435d102b227b8ba1f4cd92edda76c8a1 by info
Product Located-at tab: quantity pills aligned with their column headers, Active column removed, Date Material Policy shown as dd.mm.yyyy
The file was modifiedapp/components/materials/ProductDetailRecordLocatedAt.vue (diff)
Commit 6c46f67746d277eea733bd682852131879b9ee28 by info
Product form: hide Summary Level checkbox (commented out, not needed for now; isSummary stays in the model)
The file was modifiedapp/components/materials/ProductForm.vue (diff)
Commit 8ffa636208f0c71cfa4ff4d8c47b2bc8649ba9fc by info
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
The file was modifiedserver/api/materials/products/search.get.ts (diff)
The file was addedapp/composables/useTransactionReportPdf.ts
The file was modifiedapp/pages/materials/transactions.vue (diff)
Commit 937074b2db7cebfe41e77f58b283eb186d9fe1da by info
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
The file was modifiedserver/api/materials/products/[id]/transaction/index.get.ts (diff)
The file was modifiedapp/components/materials/ProductDetailRecordTransaction.vue (diff)
Commit 11ac029738ce4ae6caf08464d24d7972fb8c9352 by info
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).
The file was modifiedserver/utils/refreshTokenHelper.ts (diff)
The file was modifiedserver/middleware/fetch.ts (diff)
The file was modifiedserver/utils/fetchHelper.ts (diff)
Commit df9ce51c1905ff2e546a2f03d259fc6d6ae689d0 by info
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=&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.
The file was addedserver/utils/productStorageHelper.ts
The file was modifiedserver/api/materials/products/qty-on-hand-pit.get.ts (diff)
The file was modifiedserver/api/materials/products/index.get.ts (diff)
The file was modifiedserver/api/materials/products/ag-grid/products.post.ts (diff)
The file was modifiedserver/api/materials/locators/priority-recommendations.get.ts (diff)
The file was modifiedserver/api/materials/products/qty-on-hand-overview.get.ts (diff)
The file was modifiedserver/api/materials/products/qty-on-hand-by-locator.get.ts (diff)
Commit 029c404ada50027cefc2e31638d4ca37741234f4 by info
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.
The file was modifiedserver/utils/synologyHelper.ts (diff)
Commit 8c172c0be5713df8d7222328e4d66d38cf2b47a8 by info
Recipes: iDempiere REST load rules (no child $expand over big lists, no blind retries, $top everywhere) and the Synology session/timeout conventions
The file was modifiedreference/recipes.md (diff)
Commit 06b01d4c15174f621d93d5f66812bee129e41177 by info
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
The file was modifiedserver/utils/returnLocatorHelper.ts (diff)
The file was addedserver/api/mobile/reconditioning/lookup.post.ts
The file was addedapp/pages/mobile/reconditioning.vue
The file was modifiedapp/pages/mobile/index.vue (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedserver/api/materials/stock-transfers/store.post.ts (diff)
The file was addedserver/api/mobile/reconditioning/target-locators.post.ts
Commit 59962537dce5a8b573a7c0895f02e00770863f7c by info
release app 1.0.46 (code 47): mobile Reconditioning page
The file was modifiedandroid/app/build.gradle (diff)
The file was modifiedandroid/update-files/version.json (diff)
Commit 63146b1cd06c93d864c5f8c03573b917757d37ba by info
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
The file was addedserver/api/bi/product-performance.get.ts
The file was modifiedapp/components/MainNavigationMenu.vue (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/composables/menu/admin/bi.ts (diff)
The file was addedapp/pages/bi/product-performance.vue
Commit 77517cfa18d11aab027e793d79f92f3ab9cf573f by info
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
The file was modifiedapp/pages/bi/product-performance.vue (diff)
Commit 6fd692b75c4074aaff411735e54a2ca8301c8de9 by info
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
The file was modifiedapp/pages/mobile/return.vue (diff)
The file was modifiedserver/api/mobile/reconditioning/lookup.post.ts (diff)
The file was modifiedapp/pages/mobile/reconditioning.vue (diff)
The file was modifiedapp/pages/integrations/returns-desktop.vue (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
Commit 5b77679c090a7efc6f52a11c276005f81798ebcf by info
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
The file was modifiedapp/pages/mobile/reconditioning.vue (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was addedserver/api/mobile/reconditioning/print-report.post.ts
Commit affedcf372684fb431685c61bb299efef3542419 by info
release app 1.0.47 (code 48): Reconditioning RMA-only scan, A4 movement report, disposal option
The file was modifiedandroid/update-files/version.json (diff)
The file was modifiedandroid/app/build.gradle (diff)
Commit 3720a71faf263fcf49588812d303e43e52fd2baa by info
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
The file was modifiedapp/pages/mobile/return.vue (diff)
The file was modifiedapp/pages/integrations/returns-desktop.vue (diff)
The file was addedserver/api/print/return-label.post.ts
Commit a7077f906fa454a31e9d28a5415ce57f617140ed by info
release app 1.0.48 (code 49): new return label (one per return, server-rendered)
The file was modifiedandroid/update-files/version.json (diff)
The file was modifiedandroid/app/build.gradle (diff)
Commit b0144617e997073012c0381e848fff6798b301d7 by info
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
The file was modifiedapp/components/settings/OrderSourceForm.vue (diff)
The file was modifiedapp/pages/settings/order-sources/create.vue (diff)
The file was modifiedapp/pages/settings/order-sources/[id]/edit.vue (diff)
The file was modifiedapp/pages/settings/order-sources/[id]/view.vue (diff)
The file was modifiedserver/api/settings/order-sources/store.post.ts (diff)
The file was modifiedserver/api/settings/order-sources/update.put.ts (diff)