v3.2.0 — Editor Consolidation & Cost Accuracy
Highlights
Single routing editor — Replaced 5 duplicate BOM/routing editor components with one RoutingEditorContent, cutting ~2,850 lines of duplicated code. The same component now powers both the Items page (modal) and BOM page (embedded).
Material cost accuracy — Fixed a UOM conversion bug where filament material costs were ~1000x too high. The unit_cost property now correctly divides by purchase_factor (e.g., $20/KG ÷ 1000 = $0.02/G).
Datetime stability — Resolved timezone naive/aware mismatches across 9 locations in 7 backend files that could cause TypeError crashes on quote expiration checks, production operation completion, command center overrun detection, and more.
What's Changed
Refactored
- Consolidated BOM/routing editors: 5 components → 1
RoutingEditorContent(#358)
Fixed
- Material
unit_costnow divides bypurchase_factorfor correct UOM conversion (#358) - Fulfillment queue material consumption had the same UOM bug (#358)
- Timezone naive/aware datetime mismatches in quote expiry, auth token purge, password reset, command center, operation completion, maintenance checks, inventory approval, fiscal period close (#358)
- Work center rate field mismatch: unsaved operations showed $0.00 cost (#358)
- Operation rows now use backend-computed
calculated_cost; materials showextended_cost(#358) - CodeRabbit review fixes: stale closure, fetch fan-out, embedded save, stale materials (#358)
- BOM page material save restored (#357)
Performance
- Fixed N+1 query patterns in items list and dashboard (#356)
Added
Dependencies
- 12 dependency upgrades via Dependabot consolidation (#354)
Full Changelog: v3.1.1...v3.2.0
37 files changed | +3,511 | -4,134 (net -623 lines)