Changelog

Posting and job creation run in the app, not edge functions

apiself-hostingaccounting

Posting a document or building a job from a method used to leave the app for a Supabase edge function, which then made its database calls one HTTP request at a time. That work now runs inside the Carbon app, on a direct database connection.

One place for business logic

Posting receipts, shipments and invoices, copying a method onto a job or quote line, issuing material and recalculating job requirements all run in the app server.

The same operations stay available to integrations through the Carbon API with an API key. If you called a Supabase function URL directly, call the Carbon API instead.

Less to run when self-hosting

A self-hosted install no longer deploys a function per operation. One edge function remains, for search embeddings. The architecture page shows the new layout.

Improvements

  • Copying a method onto a job or quote line makes about a third fewer database calls.
  • Model thumbnails are rendered by the assembler service instead of a headless browser.

Fixes

  • A post refused because the document was already posted no longer sets it back to Draft.
  • A failed receipt, shipment or purchase invoice post no longer leaves a fixed asset's cost or status changed.