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