Release Notes

Current version: v1.2.8

v1.2.8Latest

2026-06-02

Slack notifications to #tech_alert when a Liftoff→Helm order sync fails or is skipped — includes store, order number, environment, Helm target, and reason. @-mention a configured on-call user on real failures (skipped alerts stay silent to avoid noise). New Slack Tech Alerts card on the /settings page — toggle, webhook URL, and mention member ID, editable without a redeploy

  • addedSlack tech-alert integration: failed syncs post red "HELM: Order Sync Failed"; routing-skipped syncs post amber "HELM: Order Sync Skipped" with store, order number, environment, Helm target, and the error/reason
  • added@-mention configured Slack user on failed alerts only (member ID via /settings or SLACK_TECH_ALERT_MENTION_USER_ID); top-level text field fires the push/desktop notification
  • addedPer (orderId, environment) dedup window of 1 hour — Liftoff webhook retries can no longer spam the channel; dedup state lives in OrderSyncLog so it survives restarts and PM2 clustering
  • addedSuperAdmin /settings → Slack Tech Alerts card: master toggle, webhook URL (masked input), mention member ID (validated against U… format)
  • addedSettings precedence DB → env var → default, so admins can update Slack config from the UI without a redeploy; empty DB value wins over env so the kill-switch works either way
  • addedSLACK_TECH_ALERT_WEBHOOK_URL, SLACK_ALERTS_ENABLED, SLACK_TECH_ALERT_MENTION_USER_ID env vars (used as fallback when the corresponding Settings row is missing)
  • addedscripts/test-slack-alert.js — operational helper: dry-run prints the Slack payload, "failed"/"skipped"/"both" posts real samples to verify the pipeline without a real failed order
  • changedLiftoffService.processFulfillmentPO now fires a Slack alert immediately after writing a failed or skipped OrderSyncLog row; alert errors are swallowed so Slack outages never break order processing
  • changedSlack alerts now show the Liftoff OrderNumber (e.g. KRA-UK26) as the primary order reference — what reps recognize — instead of the internal numeric OrderId; the internal ID is preserved in the small context line for engineers debugging in DB
  • addedSecond optional @-mention member ID on Slack failed alerts — both users get pinged on the same message; configured via /settings → Slack Tech Alerts (Mention #2) or SLACK_TECH_ALERT_MENTION_USER_ID_2 env var

v1.2.7

2026-04-20

Multi-target Helm routing: one Liftoff store can now fan orders out to multiple Helm instances (Whitestone Global → UK + DE by ship-to country). Case-insensitive duplicate-SKU guardrail prevents silent inventory overwrites. Import Products from Liftoff to Helm with preview, import, and update workflow. Order retry button and variant SKU fix for cross-store order syncs

  • addedMulti-target Helm configuration: stores can register N Helm targets with per-target country allowlists (e.g. UK vs EU-27+EEA+CH)
  • addedCountry-based order routing: ship-to country decides which Helm instance receives the FPO; non-routed countries logged as skipped
  • addedWhitestone Global store (WHITESTONE-MERCH-SHOP) connected to Helm Whitestone Merch UK (333) and Helm Whitestone DE (336)
  • addedConfigure page: editable Helm Targets card with Add/Remove target, region label, and country allowlist per target
  • addedActivity log gains Helm / Ship-to / Routing columns with color-coded decision badges; skipped orders remain visible for audit
  • addedProduct import preview shows a "Target" column per SKU (UK/EU region badges) for multi-target stores
  • addedImport Products toggle (off by default per store) with warning message — prevents accidental Helm inventory changes
  • addedOrder Status card split into three honest signals: Liftoff API reachability, Webhook Delivery (based on log history), Integration state
  • addedImport Products feature: fetch product catalog from Liftoff and create them in Helm via API
  • addedTwo-phase preview + import workflow with SKU-level checkboxes
  • addedDetect name/weight changes on existing Helm products and update them from Liftoff
  • addedProduct cache with 5-min TTL to avoid API rate limits on repeated previews
  • addedForce Refresh button to bypass cache and pull fresh data from both APIs
  • addedRetry button on failed orders in activity log to re-process with one click
  • addedRelease Notes page with version index
  • changedInventory sync now iterates every configured Helm target in parallel and merges results before pushing to Liftoff
  • changedInventory sync blocks when either Helm or Liftoff contains case-insensitive duplicate SKUs (uk/UK/Uk treated as same) — returns a clear error listing every offending row
  • fixedOrder line items now use ProductVariant SKU instead of Product.Code for correct Helm matching
  • fixedOrder retry re-enriches SKUs from Liftoff API to fix previously failed orders
  • fixedHelm-only detection now checks both variant SKUs and product codes from Liftoff
  • fixedLiftoff pagination stopping early on partial pages due to rate limiting
  • fixed504 timeout on product preview — increased nginx proxy timeout and bulk-fetch variants
  • fixedExisting Helm products showing as "New" after import due to rate-limited API response

v1.2.6

2026-02-17

Editable Helm Store Name for cross-store connections

  • addedEditable Helm Store Name field for cross-store connections
  • fixedDynamic store name display and prevent wrong store routing
  • fixedRefresh user role from DB every 60s so role changes take effect without re-login
  • changedOrder Custom Field Mapping for admins, notes visible to all
  • fixedSuperAdmins can always sign in even when new user registration is disabled