toga-ai 1.0.394 → 1.0.395

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,5 +3,5 @@
3
3
  | Doc | Summary | Files |
4
4
  |-----|---------|-------|
5
5
  | [TOGa Supply (toga2-supply) Architecture](architecture.md) | `toga2-supply` is the **React + Vite frontend** for TOGa Supply — warehouse fulfillment tooling (shipment selection, fulfill & ship against carrier APIs, NetSui | toga2-supply/src/api/toga.ts, toga2-supply/src/pages/ShipmentItems/view/ShipmentItemsPage.tsx, toga2-supply/src/pages/EditShipment/view/EditShipmentPage.tsx, toga2-supply/src/pages/EditShipment/api/UpdateShipmentApi.ts, toga2-supply/src/pages/Shipments/view/components/ShipmentsCardTableForm/ShipmentsCardTableForm.tsx |
6
- | [Fulfill & Ship](features/fulfill-and-ship.md) | Fulfill & Ship lets a warehouse user select sales-order line items, enter serials, pick a carrier/method, and in one action: create the Item Fulfillment records | toga2-supply/src/components/ui/Tables/BasicTable/BasicTable.tsx, toga2-supply/src/pages/ShipmentItems/view/forms/ShipmentItemsTable.tsx, toga2-supply/src/pages/EditShipment/view/components/forms/EditShipmentForm.tsx, toga2-supply/src/components/ui/BaseInput/UnitSelect.tsx, toga2-supply/src/pages/EditShipment/view/modals/SerialNumbersModal.tsx, toga2-supply/src/pages/ShipmentItems/view/ShipmentItemsPage.tsx, toga2-supply/src/pages/EditShipment/view/EditShipmentPage.tsx, toga2-supply/src/pages/EditShipment/view/components/forms/EditShipmentForm.tsx, toga2-supply/src/pages/EditShipment/view/components/SelectedShipmentItemsTable.tsx, toga2-supply/src/pages/EditShipment/view/helpers/ShipmentDetailsForm/renderEditShipmentFormInput.tsx, toga2-supply/src/pages/EditShipment/viewModel/FIELDS/DUMMYUPDATESHIPMENTFIELDS.json, toga2-supply/src/pages/EditShipment/helpers/ShipmentDetailsForm/renderEditShipmentFormInput.tsx, toga2-supply/tailwind.config.cjs, toga2-supply/src/pages/EditShipment/view/modals/ReturnShippingModal.tsx, toga2-supply/src/styles/index.scss, toga2-supply/src/components/ui/BaseInput/BaseInput.tsx, toga2-supply/src/pages/EditShipment/api/UpdateShipmentApi.ts, toga2-supply/src/pages/EditShipment/viewModel/signatureTypes.ts, toga2-supply/src/pages/EditShipment/view/modals/SelectReturnAddressModal.tsx, toga2-supply/src/pages/EditShipment/helpers/ShipmentDetailsForm/formatShipmentData.ts, toga2-supply/src/pages/EditShipment/types.ts, toga2-supply/src/pages/Shipments/view/ShipmentsPage.tsx, toga2-supply/src/pages/Shipments/view/components/ShipmentsCardTableForm/ShipmentsCardTableForm.tsx, toga2-supply/src/pages/Shipments/api/ShipmentsApi.ts, toga2-supply/src/pages/Shipments/types.ts, toga2-supply/src/pages/FulfilledShipments/view/FulfilledShipmentsPage.tsx, toga2-supply/src/components/ui/CardTable/CardTable.tsx, toga2-supply/src/components/ui/CardTable/types.ts, toga2-supply/src/assets/pen-line.svg, _underscore/Model/Client/ItemFulfillment.php, _underscore/Trait/Netsuite/ItemFulfillment.php, _underscore/Component/Library/Carriers/Ups/Ups.php |
6
+ | [Fulfill & Ship](features/fulfill-and-ship.md) | Fulfill & Ship lets a warehouse user select sales-order line items, enter serials, pick a carrier/method, and in one action: create the Item Fulfillment records | toga2-supply/src/components/ui/Tables/BasicTable/BasicTable.tsx, toga2-supply/src/pages/ShipmentItems/view/forms/ShipmentItemsTable.tsx, toga2-supply/src/pages/ShipmentItems/api/ShipmentItemsApi.ts, toga2-supply/src/pages/ShipmentItems/types.ts, toga2-supply/src/pages/EditShipment/viewModel/FIELDS/RETURNLABELFIELDS.json, toga2-supply/src/pages/EditShipment/view/components/forms/EditShipmentForm.tsx, toga2-supply/src/components/ui/BaseInput/UnitSelect.tsx, toga2-supply/src/pages/EditShipment/view/modals/SerialNumbersModal.tsx, toga2-supply/src/pages/ShipmentItems/view/ShipmentItemsPage.tsx, toga2-supply/src/pages/EditShipment/view/EditShipmentPage.tsx, toga2-supply/src/pages/EditShipment/view/components/forms/EditShipmentForm.tsx, toga2-supply/src/pages/EditShipment/view/components/SelectedShipmentItemsTable.tsx, toga2-supply/src/pages/EditShipment/view/helpers/ShipmentDetailsForm/renderEditShipmentFormInput.tsx, toga2-supply/src/pages/EditShipment/viewModel/FIELDS/DUMMYUPDATESHIPMENTFIELDS.json, toga2-supply/src/pages/EditShipment/helpers/ShipmentDetailsForm/renderEditShipmentFormInput.tsx, toga2-supply/tailwind.config.cjs, toga2-supply/src/pages/EditShipment/view/modals/ReturnShippingModal.tsx, toga2-supply/src/styles/index.scss, toga2-supply/src/components/ui/BaseInput/BaseInput.tsx, toga2-supply/src/pages/EditShipment/api/UpdateShipmentApi.ts, toga2-supply/src/pages/EditShipment/viewModel/signatureTypes.ts, toga2-supply/src/pages/EditShipment/view/modals/SelectReturnAddressModal.tsx, toga2-supply/src/pages/EditShipment/helpers/ShipmentDetailsForm/formatShipmentData.ts, toga2-supply/src/pages/EditShipment/types.ts, toga2-supply/src/pages/Shipments/view/ShipmentsPage.tsx, toga2-supply/src/pages/Shipments/view/components/ShipmentsCardTableForm/ShipmentsCardTableForm.tsx, toga2-supply/src/pages/Shipments/api/ShipmentsApi.ts, toga2-supply/src/pages/Shipments/types.ts, toga2-supply/src/pages/FulfilledShipments/view/FulfilledShipmentsPage.tsx, toga2-supply/src/components/ui/CardTable/CardTable.tsx, toga2-supply/src/components/ui/CardTable/types.ts, toga2-supply/src/assets/pen-line.svg, _underscore/Model/Client/ItemFulfillment.php, _underscore/Trait/Netsuite/ItemFulfillment.php, _underscore/Component/Library/Carriers/Ups/Ups.php |
7
7
  | [AWS Amplify Build & Deploy (non-prod environments)](workflows/amplify-build-and-deploy.md) | How `toga2-supply` (React + Vite) builds and deploys on **AWS Amplify**. | toga2-supply/amplify.yml, toga2-supply/.gitattributes, toga2-supply/.github/workflows/sync-stage-environments.yml, toga2-supply/.env.qc-security |
@@ -11,6 +11,9 @@ owners: [mhammontree]
11
11
  files:
12
12
  - toga2-supply/src/components/ui/Tables/BasicTable/BasicTable.tsx
13
13
  - toga2-supply/src/pages/ShipmentItems/view/forms/ShipmentItemsTable.tsx
14
+ - toga2-supply/src/pages/ShipmentItems/api/ShipmentItemsApi.ts
15
+ - toga2-supply/src/pages/ShipmentItems/types.ts
16
+ - toga2-supply/src/pages/EditShipment/viewModel/FIELDS/RETURNLABELFIELDS.json
14
17
  - toga2-supply/src/pages/EditShipment/view/components/forms/EditShipmentForm.tsx
15
18
  - toga2-supply/src/components/ui/BaseInput/UnitSelect.tsx
16
19
  - toga2-supply/src/pages/EditShipment/view/modals/SerialNumbersModal.tsx
@@ -309,6 +312,33 @@ the call 403s and returns no label.
309
312
 
310
313
  ## Gotchas / known issues
311
314
 
315
+ - **⚠ The item-image tables hardcoded the placeholder and never requested the image.** The Select
316
+ Items (`ShipmentItemsTable`), Update Info, and Add-Serial (`SelectedShipmentItemsTable`) tables
317
+ rendered `imageUrl={placeholderImage}` as a **constant**, so a real item image could never appear.
318
+ The item image is exposed via **two computed SQL fields on the `_underscore` Item model** (referenced,
319
+ not modified this commit) — request **both** in the V2 field selectors and render
320
+ **`item._imageUrl || item._thumbnailImageUrl || placeholder`**:
321
+ - **`_imageUrl`** — resolves `Items.imageId` → `Images.sourceUrl` (the single **primary** image).
322
+ - **`_thumbnailImageUrl`** — resolves from **`ItemImages`** (per-item thumbnail/low/medium/high
323
+ resolutions) via `thumbnailImageId`, ordered `isDefault DESC`, **excluding** `sourceUrl LIKE
324
+ '%Manufacturer%'`.
325
+
326
+ Two distinct DB paths back an item image — `Items.imageId → Images` (one primary) and the `ItemImages`
327
+ table (multi-resolution, `isDefault` flag) — and in both cases the URL lives in `Images.sourceUrl`.
328
+ The `_imageUrl || _thumbnailImageUrl || placeholder` fallback covers imageId-only, ItemImages-only, or
329
+ neither. Wiring an image anywhere in the tool: request **both** computed fields (add to the API field
330
+ selectors + response types), don't hardcode the placeholder. Verified end-to-end against a client DB
331
+ with rolled-back test data. Files: `ShipmentItems/api/ShipmentItemsApi.ts`, `ShipmentItemsTable.tsx`,
332
+ `ShipmentItems/types.ts`, `EditShipment/api/UpdateShipmentApi.ts`, `EditShipmentForm.tsx`,
333
+ `SelectedShipmentItemsTable.tsx`, `EditShipment/types.ts`.
334
+ - **⚠ The shared `ExpandableCellContent` truncates by a FIXED CHARACTER COUNT, not by width — so it
335
+ can't be responsive.** `ExpandableCellContent` cuts a cell at `columnDataLength` characters
336
+ (e.g. 55), so a column truncates early regardless of available width and **does not react to
337
+ window/page resize**. For width-responsive truncation, render the cell as a plain
338
+ `<div className="truncate max-w-[NNvw]" title={full}>` — CSS overflow-ellipsis with a
339
+ viewport-relative max-width so the ellipsis point tracks the page size, and the native `title`
340
+ shows the full text on hover. (Applied to the Description column in `ShipmentItemsTable.tsx` /
341
+ `SelectedShipmentItemsTable.tsx`.)
312
342
  - **⚠ A portaled react-select menu loses the control's inherited font size.** `BaseInput`'s
313
343
  react-select menus now portal to `<body>` (`menuPortalTarget={document.body}` +
314
344
  `styles.menuPortal` `zIndex 9999`, on both single- and multi-select) so the menu can't be
@@ -588,6 +618,18 @@ not the base `_Model_Client_ItemFulfillment`. Tested with GroWrk; UPS support wa
588
618
  for Compass and is not yet in prod.
589
619
 
590
620
  ## Change history
621
+ - 2026-07-21 — TRUE-79191 (commit `dc900ea4e`, toga2-supply item-image + table polish): fixed the
622
+ **item image never rendering** — the Select Items / Update Info / Add-Serial tables hardcoded
623
+ `imageUrl={placeholderImage}` and never requested the image; now request the two `_underscore` Item
624
+ computed fields **`_imageUrl`** (`Items.imageId → Images.sourceUrl`) and **`_thumbnailImageUrl`**
625
+ (from `ItemImages` via `thumbnailImageId`, `isDefault DESC`, excluding `%Manufacturer%`) and render
626
+ `item._imageUrl || item._thumbnailImageUrl || placeholder` — documented the two-path Images/ItemImages
627
+ data model as a gotcha. Documented the **`ExpandableCellContent` fixed-char-count vs width** gotcha
628
+ (truncates at `columnDataLength` chars, not responsive; use `truncate max-w-[NNvw]` + native `title`
629
+ for width-responsive truncation, applied to the Description column). Added Reference 1/2 placeholder
630
+ hint text to the Edit Return Label modal (`RETURNLABELFIELDS.json`) to match Update Info
631
+ ("e.g. NetSuite Sales Order #" / "…Purchase Order #") — cosmetic, Ref 1/2 semantics already recorded.
632
+ (mhammontree)
591
633
  - 2026-07-21 — TRUE-79191 (toga2-supply UI fixes + Figma polish): documented three durable, reusable
592
634
  gotchas — (1) **`BasicTable` header/value misalignment** (daisyUI base `:where(th,td)` ~16px padding;
593
635
  always pass a horizontal `headerCellPadding` matching `cellPadding`, box-shadow-only seam for sticky
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.394",
3
+ "version": "1.0.395",
4
4
  "description": "TOGA Technology Team Claude Knowledge System — shared AI coding harness with skills, knowledge base CLI, and project installer for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",