HomeChangelog
Changelog

What's new in EYP Ops

Product updates, improvements and fixes — most recent first. We ship every week.

2026.04.17Major17 April 2026

Phase B — Commercial launch foundations

  • Self-serve signup with 14-day free trial
  • Plan gate UI (GROWTH $149, PRO $349, ENTERPRISE)
  • White-label addon (+$50/mo)
  • Demo environment at demo.eypops.cloud
  • Comprehensive help center
  • Marketing site deep revision with new pricing, blog and changelog
2026.04.16Update16 April 2026

Phantom Bar fix + OPERATOR page guards + i18n tooling

  • Fixed phantom Bar location showing negative stock balance from intra-outlet transfers
  • OPERATOR role now has page-level module access guards across all protected routes
  • i18n key validation tooling — catches missing/mismatched translation keys at build time
  • baseUnit drift audit — identified and corrected 14 items with inconsistent base unit assignments
2026.04.13Update13 April 2026

Vendor → Supplier rename complete

  • Full rename: schema, DB, routes, API, i18n — "vendor" is now "supplier" throughout
  • /vendor-returns → /supplier-returns 301 redirect in next.config.ts
  • Legacy QBO CSV headers (VendorName, Vendor) and Excel import aliases preserved intentionally
  • Supplier balance and aging reports updated with new labels
2026.04.10Update10 April 2026

Reports: sortable columns + actual food cost segmentation

  • Period Inventory report: all columns now sortable (name, category, opening, closing, variance, cost)
  • Actual food cost segmented by Item.costType — FOOD items only count toward FC% calculation
  • Food cost VALUE now uses consumption-based calculation matching Period Inventory figures
  • Negative stock quantity in snapshots clamped to 0 to prevent inflated opening balances
2026.04.07Major7 April 2026

Two-layer stock model — outlet-level variance as primary metric

  • Outlet-level variance is now the primary stock accuracy metric; per-location negative balance is expected behaviour for intra-outlet transfers
  • StockMove unitCost immutability enforced architecturally — no report path recomputes cost at report time
  • Location policy enforcement: storage locations cannot receive RECIPE_OUT, production locations cannot receive INVOICE_IN
  • Sales location resolver updated: Recipe.locationId → sole PRODUCTION → primary storage with loud warning