Skip to content

Changes

Started by timer
Started 3 hr 11 min ago
Took 1 min 7 sec on built-in

Summary

  1. release app 1.0.68 (code 69): WMS app login only for mobile workers — corrects the unshipped 1.0.69 bump from the interrupted release run (details)
  2. Software offer type "LogShip Cloud" + maintainable catalog in iDempiere (details)
  3. LogShip offer: onboarding package marked optional, "ab" price, travel costs excluded (details)
  4. LogShip offer: editable fee-line name and subtext, package taglines (details)
  5. Returns: count only received customer returns as returned qty, link receipt lines to reused marketplace RMA lines (details)
  6. quick-rma: prefer line-number match over product match for unlinked RMA lines (details)
  7. Product variants: master (IsSummary) articles + ParentId grouping, Varianten card and list column; Hess/Livipur demo catalog tooling (details)
  8. Docs: product variant model recipe, Hess demo tooling, Jenkins trigger crumb note (details)
  9. Variants: read ParentId under its REST key (parentId) (details)
  10. Hess catalog: distinct variation names (append missing attribute values) (details)
  11. Security keys: Nuxt UI enrol wizard + revoke dialog, working grid actions, phone layout (details)
  12. Recipe: duplicate nuxt dev server symptoms (client never mounts, stale style module 404) (details)
  13. Docs: Hess as second 3PL on the demo instance (restricted admin role, merchant onboarding gotchas) (details)
Commit cedd49d1ef03513a99128d8eab938399f83ab8ef by info
release app 1.0.68 (code 69): WMS app login only for mobile workers — corrects the unshipped 1.0.69 bump from the interrupted release run
The file was modifiedandroid/update-files/version.json (diff)
The file was modifiedandroid/app/build.gradle (diff)
Commit 7247b7d3b3973109586dfc39741d445d9fa06b91 by info
Software offer type "LogShip Cloud" + maintainable catalog in iDempiere

Second offer type next to the 3PL fulfillment quote on the lead page: a SaaS
offer for the LogShip Cloud product with its own modal (packages, overage
staffel, feature matrix, add-ons, onboarding package with phases/highlights,
positions, requirements, texts) and branded PDF (package card, prices, 4–5
column package comparison, onboarding section, example calculation). Header
switch "Fulfillment | LogShip Cloud" in both modals; offers/quote preview+send
branch on payload.offerType, conditions saved as offer_conditions.softwareQuote.

Catalog persisted in iDempiere (CUST_SoftwarePlan / CUST_SoftwareCatalogItem,
enum columns as AD_Reference lists): server util with 5-min cache and fail-soft
defaults, routes for read / lists / whole-catalog save / seed / seed-lists,
staff gate option requireChat=false. Settings → Software-Katalog is a matrix
editor (packages = columns, features = rows, click cell = minimum package,
mode pill, drag & drop rows/columns, inline rename, details panel, add-ons
list, one save) — linked from Sales in both menus. Offers carry a catalog
snapshot so old PDFs stay reproducible.

Also: backdrop close only on a real backdrop click (both offer modals), feature
rows no longer squeezed by the global select width, dark-mode styling for the
catalog page, the KI console and the offer modals, template clean-up keeps the
two new tables, recipe .claude/rules/offers/software-quote.md.
The file was modifiedapp/composables/menu/admin/sales.ts (diff)
The file was modifiedserver/utils/chatAccess.ts (diff)
The file was modifiedapp/pages/users/leads/[id]/edit.vue (diff)
The file was modifiedserver/api/offers/quote/send.post.ts (diff)
The file was addedserver/api/offers/software-catalog/index.get.ts
The file was addedserver/api/settings/software-catalog/lists.get.ts
The file was addedserver/utils/offers/softwareQuotePdf.ts
The file was modifiedserver/api/offers/quote/preview.post.ts (diff)
The file was modifiedreference/template-cleanup/README.md (diff)
The file was addedreference/test-scripts/software-catalog-seed-lists.mts
The file was addedserver/utils/offers/softwareCatalog.ts
The file was addedserver/api/settings/software-catalog/seed.post.ts
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedserver/api/offers/conditions/index.post.ts (diff)
The file was addedapp/pages/settings/software-catalog/index.vue
The file was addedapp/utils/softwareCatalogDefaults.ts
The file was addedserver/api/settings/software-catalog/save.post.ts
The file was addedapp/composables/useOfferSoftwareQuote.ts
The file was addedapp/components/offers/SoftwareQuoteModal.vue
The file was modifiedapp/components/offers/QuoteModal.vue (diff)
The file was added.claude/rules/offers/software-quote.md
The file was addedserver/api/settings/software-catalog/seed-lists.post.ts
The file was modifiedapp/components/MainNavigationMenu.vue (diff)
The file was modifiedreference/template-cleanup/01-idempiere-truncate.sql (diff)
The file was modifiedapp/components/leads/ChatConsoleModal.vue (diff)
Commit e41d3f6dc8550eda20b6a57c1a42ccba2ca35f50 by info
LogShip offer: onboarding package marked optional, "ab" price, travel costs excluded

The onboarding package prints as optional with an "ab 3.250 €" starting price
(final fixed price after the kickoff) and a note that travel and accommodation
costs for on-site appointments are billed as incurred — in the price table, the
onboarding section, the example calculation and the Hinweise. Both aspects are
per-offer switches in the modal (default on) and persist with the conditions.
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/components/offers/SoftwareQuoteModal.vue (diff)
The file was modifiedapp/composables/useOfferSoftwareQuote.ts (diff)
The file was modifiedserver/utils/offers/softwareQuotePdf.ts (diff)
Commit a08361cbd2c664f0b42f95f54c50f2e7272e01ac by info
LogShip offer: editable fee-line name and subtext, package taglines

The monthly software-fee row prints "<package> — monatliche Softwaregebühr"
with the package tagline (catalog Description) and the included volumes as
subtext; name and subtext can be overridden per offer (empty = automatic).
The package card shows the tagline too. Default catalog names are now
Start / Wachstum / Premium / Enterprise with taglines (e.g. Start: "Der
komplette Fulfillment-Kern für Ihren Einstieg."); the live rows were updated
to match. Modal gets tagline, fee-name and fee-subtext fields (de/en/es).
The file was modifiedserver/utils/offers/softwareQuotePdf.ts (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/composables/useOfferSoftwareQuote.ts (diff)
The file was modifiedapp/utils/softwareCatalogDefaults.ts (diff)
The file was modifiedapp/components/offers/SoftwareQuoteModal.vue (diff)
Commit a332853cd2e7e11a943633fdca396c6ac7a54586 by info
Returns: count only received customer returns as returned qty, link receipt lines to reused marketplace RMA lines

The mobile + desktop return pages summed every completed M_RMA on the
shipment as already returned. Marketplace-imported RMAs (Amazon) are
Completed with the expected qty before the parcel arrives, so unprocessed
returns showed Remaining 0/1 and could not be entered (e.g. shipment
536925 / RMA 30614). Shared useReturnedQty composable now counts only
completed/closed customer-return receipts linked via M_RMA_ID.

quick-rma: when reusing such an RMA, receipt lines are matched to RMA
lines by shipment line id (then product, then line number restricted to
unlinked lines) instead of the bare line number, which the Amazon
importer assigns as a counter. Orphan check also accepts closed receipts.
The file was modifiedapp/pages/integrations/returns-desktop.vue (diff)
The file was modifiedapp/pages/mobile/return.vue (diff)
The file was modifiedserver/api/inouts/quick-rma.post.ts (diff)
The file was addedapp/composables/useReturnedQty.ts
Commit ba5f7e6b2a5f8f26ee1dd348cc9d7103c25b8c6d by info
quick-rma: prefer line-number match over product match for unlinked RMA lines

Keeps the previous behaviour for RMAs created without M_InOutLine_ID
(sales-order return page) when the same product appears on two lines.
The file was modifiedserver/api/inouts/quick-rma.post.ts (diff)
Commit bf69e20f22003bbc73714edec19512152cea83bd by info
Product variants: master (IsSummary) articles + ParentId grouping, Varianten card and list column; Hess/Livipur demo catalog tooling
The file was addedreference/demo-instance/hess/build-catalog.py
The file was modifiedapp/pages/materials/products/[id]/edit.vue (diff)
The file was addedreference/demo-instance/add-purchase-prices.sh
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedserver/utils/productsGrid.ts (diff)
The file was addedapp/components/materials/ProductVariantsCard.vue
The file was addedreference/demo-instance/hess/masters.json
The file was addedreference/demo-instance/set-parent-ids.sh
The file was addedreference/demo-instance/hess/cattree.json
The file was addedreference/demo-instance/create-master-articles.sh
The file was addedserver/api/materials/products/[id]/variants.get.ts
The file was addedreference/demo-instance/hess/catalog.json
The file was modifiedapp/pages/materials/products/index.vue (diff)
Commit c1fc1c30ccab14645c0baf48a5c72ea6986ce862 by info
Docs: product variant model recipe, Hess demo tooling, Jenkins trigger crumb note
The file was added.claude/rules/materials/product-variants.md
The file was modifiedreference/ci/README.md (diff)
The file was addedreference/demo-instance/README.md
Commit 106bde8bfced6763eb4dbed5eab19ca36e10b69d by info
Variants: read ParentId under its REST key (parentId)
The file was modifiedserver/utils/productsGrid.ts (diff)
The file was modifiedserver/api/materials/products/[id]/variants.get.ts (diff)
Commit dfef60a31ee23e7beb1ffa4d485ca6956e603d06 by info
Hess catalog: distinct variation names (append missing attribute values)
The file was modifiedreference/demo-instance/hess/build-catalog.py (diff)
The file was modifiedreference/demo-instance/hess/catalog.json (diff)
Commit b6f8902e5a86439a36af8f88c9be9e31cf5fff70 by info
Security keys: Nuxt UI enrol wizard + revoke dialog, working grid actions, phone layout

- /users/security-keys: real Vue cell renderers (user + actions) with handlers via
  cellRendererParams — the shared AgGrid cellClick is selection-changed and never fired the
  Revoke/user-link in raw-HTML cells; 44px rows, stats, search, UIcon icons
- Phone (< 900px): grouped employee cards, sticky "Enrol key" button, full-screen wizard with
  NFC/USB hints per device (Android/iOS/Windows/macOS/app)
- Shared UsersSecurityKeyEnrolModal (details → tap → done/error, UForm validation, employee
  picker with key counts, auto "YubiKey <first name>", cancel aborts at every stage) and
  UsersSecurityKeyRevokeModal (key/user/dates, last-key warning, toasts) used by the overview,
  the profile panel and the user-edit panel; UsersSecurityKeys.vue rebuilt on them
- useSecurityKeyFormat (relative dates, transports, initials, WebAuthn error texts),
  useWebAuthn.cancelCeremony/isNativeApp + register({ isCancelled }), AgGrid rowHeight prop
- Translations en/de/es (+ ne fallback); recipes: webauthn UI, icon + Tailwind colour gaps
The file was modified.claude/rules/nuxt/ui-components.md (diff)
The file was modified.claude/rules/auth/webauthn-security-keys.md (diff)
The file was addedapp/components/AgGrid/Users/AgSecurityKeyActions.vue
The file was addedapp/composables/useSecurityKeyFormat.ts
The file was modifiedapp/assets/langs/shared.js (diff)
The file was addedapp/components/AgGrid/Users/AgSecurityKeyUser.vue
The file was addedapp/components/users/SecurityKeyEnrolModal.vue
The file was modifiedapp/composables/useWebAuthn.ts (diff)
The file was modifiedapp/components/AgGrid.vue (diff)
The file was addedapp/components/users/SecurityKeyRevokeModal.vue
The file was modifiedapp/components/users/SecurityKeys.vue (diff)
The file was modifiedapp/pages/users/security-keys/index.vue (diff)
Commit 9371c6664d11ca13d1295dc13b1dd8e845ebdbf4 by info
Recipe: duplicate nuxt dev server symptoms (client never mounts, stale style module 404)
The file was modified.claude/rules/nuxt/dev-server-troubleshooting.md (diff)
Commit c03ffecdc39c2fb48e278b6fed453fb530fd8237 by info
Docs: Hess as second 3PL on the demo instance (restricted admin role, merchant onboarding gotchas)
The file was modifiedreference/demo-instance/README.md (diff)