toga-ai 1.0.875 → 1.0.876

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.
@@ -6,8 +6,8 @@ project: Worker
6
6
  client: nychh
7
7
  type: client-feature
8
8
  status: active
9
- updated: 2026-09-18
10
- owners: ["bala"]
9
+ updated: 2026-09-23
10
+ owners: ["bala", "rgirish"]
11
11
  files:
12
12
  - worker2/Worker/Client/Nychh/TransferOrderEmails.php
13
13
  - _underscore/Model/Nychh/TransferOrder.php
@@ -211,9 +211,23 @@ Cost of the split, stated so nobody is surprised later:
211
211
  templates and the tracking line are Plus Jakarta Sans. Outlook gets Arial inside an
212
212
  `<!--[if mso]-->` block because it cannot load web fonts.
213
213
  - **Detail box:** *Site Contact* falls back to the person who raised the order — 3 of the 6 supply
214
- orders in prod have no contact, and that is the same fallback the greeting already used. And
215
- `CONCAT_WS` skips NULL but **not** an empty string, so a blank address line 2 produced
216
- `451 Clarkson Ave , Brooklyn`; every part is `NULLIF`'d before joining.
214
+ orders in prod have no contact. (The greeting used to share that fallback; since 2026-09-23 it
215
+ runs the other way round — see below.) And `CONCAT_WS` skips NULL but **not** an empty string, so
216
+ a blank address line 2 produced `451 Clarkson Ave , Brooklyn`; every part is `NULLIF`'d before
217
+ joining.
218
+ - **The greeting addresses the SUBMITTER, the detail box shows the CONTACT.** They are two different
219
+ people and the email shows both:
220
+
221
+ | Slot | Source column | Shape |
222
+ |---|---|---|
223
+ | `greetingName` ("Hi …,") | `CreatedByUsers.firstName` → `submittedByFirstName`, falling back to `Contacts.firstName` | **first name** |
224
+ | *Site Contact* row | `Contacts.firstName`+`lastName` → `siteContactName`, falling back to `submittedByName` | full name |
225
+ | *Submitted by* row | `CreatedByUsers.firstName`+`lastName` → `submittedByName` | full name |
226
+
227
+ Both greeting sources must be **`firstName` columns**. The original fallback was
228
+ `contactFirstName ?: submittedByName`, and `submittedByName` is the `CONCAT_WS` **full** name — so
229
+ an order with no contact greeted *"Hi Carol Ann Rosado,"*. Never fall back from a first-name slot
230
+ to a `…Name` full-name alias.
217
231
 
218
232
  ## Gotchas / known issues
219
233
 
@@ -247,6 +261,15 @@ unescaped values and both detail-box defects were all found there, not in produc
247
261
 
248
262
  ## Change history
249
263
 
264
+ - 2026-09-23 — **The greeting now addresses whoever raised the order, not the site contact.**
265
+ `readTransferOrderForEmail()` selects `CreatedByUsers.firstName AS submittedByFirstName`, and
266
+ `greetingName` flipped from `contactFirstName ?: submittedByName` to
267
+ `submittedByFirstName ?: contactFirstName`. Found live: an order raised by Carol Ann Rosado
268
+ opened *"Hi Shehu,"* — the site contact. Fixing the order of preference also fixed a second
269
+ latent bug: the old fallback reached for `submittedByName`, the **full** name, so it could render
270
+ *"Hi Carol Ann Rosado,"*; both sides of the fallback are now first-name columns. *Site Contact*
271
+ and *Submitted by* in the details box are unchanged. (worker2 `ed6d566` on `_production`)
272
+ (rgirish)
250
273
  - 2026-09-18 — **Moved the whole feature out of `_underscore` into worker2.** Deleted
251
274
  `_Trait_Nychh_TransferOrderEmail`; `worker2/Worker/Client/Nychh/TransferOrderEmails.php` now holds
252
275
  the queued `SendSubmitted` / `SendFulfillment` entry points, the `SendPending` cron, every query
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.875",
3
+ "version": "1.0.876",
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",