We shipped item write guardrails that refuse oversized payloads before they hit the database — no more silent truncation or surprise failures mid-transaction. The new ceilings (500 documents per call, batch shapes aligned to plugin limits) were load-tested against real publish workloads. This is the foundation for the BOM diff engine landing next.
Change Orders: The Documents tab is now called Attachments. Same functionality, clearer label.
Import wizard: Opens full-screen by default. No more squinting at a card-sized modal.
Integrations page: Only shows up if you have permission to read integrations. Previously it loaded for everyone and failed silently.
Change Orders: Revision editor now locks when you transition a CO to Design status — prevents editing revisions on locked COs.
Item write limits enforced up-front. We now reject oversized item writes (>500 documents, >batch-size children) before opening a transaction. Previously the API would truncate silently or fail mid-write. Load tests confirm the new ceilings handle real publish patterns.
BOM mutation refactor. Split applyBOM out of updateBOM so the diff engine can nest cleanly. Moved relation inputs to the item mutation namespace — sets up the next phase of the BOM rewrite.