1.3.0¶
Released: 2026-05-29
Highlights¶
- The visual PDF builder now has a home for its layouts: tenants can save, version, and reuse document designs per document type (Quotes, Orders, Invoices, …).
Added¶
- PDF Builder Templates — a new module that stores a versioned, JSON-based builder layout per document type. See PDF Builder Templates.
- GraphQL queries:
pdfBuilderTemplates,pdfBuilderTemplate,pdfBuilderTemplatesByEntityType,defaultPdfBuilderTemplate. - GraphQL mutations:
createPdfBuilderTemplate,updatePdfBuilderTemplate,deletePdfBuilderTemplate. - Types:
PdfBuilderTemplate,PdfBuilderTemplateInput. - A template can be marked the default for its entity type (
isDefault); the backend keeps at most one default per type and exposesdefaultPdfBuilderTemplate(entityType: …)to fetch it.
Changed¶
- Nothing.
Fixed¶
- Nothing.
Migrations¶
add_pdf_builder_templates_table(down_revisionadd_sales_safety_tier_1) — creates thepdf_builder_templatestable (name,entity_type,valuejsonb,version,created_at) with an index onentity_type.add_is_default_to_pdf_builder_templates(down_revisionadd_pdf_builder_templates_table) — adds theis_defaultcolumn and a partial unique index enforcing one default per entity type.
No one-off scripts required.
Frontend impact¶
- The PDF builder serializes its canvas to a JSON object and persists it as
valueon aPdfBuilderTemplate, along with aversionstring and anentityType(one of thePdfSourceTypeenum values). - Full CRUD plus fetch-by-entity-type is available, so the builder can list "templates for Quotes", load one to edit, save a new version, and delete.
Versioning notes¶
- Bumped with
uv run python scripts/bump_version.py 1.3.0 --changelog-stub. - MINOR bump: additive GraphQL surface and a new table; no breaking changes and no deploy-order constraints beyond applying the migration.