Changelog
Generated from CHANGELOG.md in the project repository. Never maintained twice.
Unreleased
- changedInvoices: Eight DE tax-case profiles (EU services and goods, export, 0% PV, § 4 exemption, § 13b, OSS, § 19a) are released as version 1 and no longer need
allow_draft. They are PDF previews and have not been reviewed by a tax adviser; the French case stays a draft. Details: Supported combinations.
0.3.0
1 November 2026
- addedInvoices: XRechnung 3.0 and Peppol BIS Billing 3.0 files (UBL 2.1) from the same invoice data via
typstgen e-invoice, checked against the canonical values and validated with Mustang 2.26.0. Details: E-invoice files. - addedTesting:
scripts/validate-einvoice.pyvalidates XRechnung and Peppol files on demand with the pinned KoSIT validator, the official XRechnung configuration and the Peppol BIS Billing 3.0.21 Schematron, including a control that must be rejected. Details: Official rule sets. - addedInvoices:
xrechnung-3.0andpeppol-bis-3.0are selectable outputs of the released DE profiles;validate-documentreports the fields each format needs before the file is written (typstgen 0.6.1). Details: E-invoice files. - addedInvoices: Draft profiles for the 0% rate on photovoltaic systems (
de-zero-rate-section-12-3), § 4 exemptions (de-exempt-section-4), domestic reverse charge (de-domestic-reverse-charge), EU B2C under the Union scheme (de-eu-b2c-oss) and EU small businesses (de-eu-small-business), with examples and CII/UBL validation where the structured file is supported. Details: Further drafts. - addedInvoices: Draft profiles
de-eu-goods-b2b(intra-Community supply, category K) andde-third-country-export(export, category G) with prerequisites, statutory notes, examples and CII/UBL validation;IntraCommunityandExportVAT codes,delivery_country_code,delivery_cityanddelivery_postal_codein the invoice schema (typstgen 0.6.2). Details: EU goods and export. - addedInvoices: Draft profile
de-eu-services-b2bfor German services to business customers in other EU member states (reverse charge, category AE), with prerequisites, statutory note check, CII/UBL validation and an example. Details: EU service profile. - changedDocumentation: README, start page, FAQ and the invoice guides state that the invoice and tax-case profiles are templates not reviewed by a tax adviser, describe the use cases, and list every invoice case with its state (released or draft); the start page table is generated from the profile catalog and a check keeps README, guide and start page in step.
- changedInvoices: Reverse-charge and intra-Community invoices print the recipient's VAT ID, as § 14a UStG requires. Other invoices are unchanged.
- changedTooling: typstgen 0.6.2 is the single pinned compiler version. It is the published crate, so the separate source build for invoice configuration and profile tools is gone: install it with
cargo install typstgen --version 0.6.2 --locked. CI,scripts/test.shand the demo builder use it. - changedInstallation:
scripts/install-package.shcopies the package into Typst's local package directory; README and installation guide describe setup in three steps. - changedMetadata: Year-only prose
created_atlabels remain visible and no longer imply a fabricated PDF calendar date. Details: migration. - changedDocumentation: Useful questions from the retired landing page are consolidated into an updated FAQ, with the historical practice article linked from the migration guide.
- changedPages: GitHub Pages is the single project homepage; the redundant custom-domain link is removed from the header and metadata.
- changedPages: theme 0.11.1; the start page now carries a release teaser and an FAQ.
0.2.0
26 October 2026
- breakingdocgen and the Rust crate are discontinued. The repository is now the Typst package
business-templates0.2.0 intemplates/, compiled with typstgen.cli/,src/, the install script, the release binaries and thesys.inputsadapters for docgen are removed. Client and project management, numbering and--encryptare not carried over. - breakingDiagrams come from chartlet instead of docgen's layout code: the examples in
examples/diagrams/are chartlet specs, rendered as SVG. Thediagramtemplate is removed; the mind map uses chartlet's radial tree and the quadrant a scatter plot with named quadrants (chartlet 0.21). - breaking
locale/moved into the package (templates/locale/). - addedExamples: All eight invoice language demos include a shared fictional SVG logo.
- addedInvoices: Configurable US Letter, US dollar/date formatting and separately calculated sales-tax components, with eight committed language and US demos plus editable inputs.
- addedInvoices: A reusable
invoice-config.jsoncontrols named taxes, required fields, notes, currency and presentation through typstgen's shared invoice preparation API. - addedTesting:
scripts/test.shbuilds the coordinated tools in an isolated cache and retains synthetic package/invoice PDFs, canonical inputs and external validation reports for manual review. - addedInvoices: Shared DE/international rendering with independent language and number formatting, versioned DE standard/§ 19 preview profiles, a French B2B draft and coordinated typstgen contracts.
- addedValidation: Canonical PDF/CII integration checks with optional pinned Mustang and veraPDF validation; unsupported national cases and structured adapters have explicit capability states.
- addedPublications: Compact A4
publicationand landscapebrochureframes, with printable fields, choices, notices, phases, tables, priorities, cards and numbered steps; synthetic multipage examples. - addedCredentials:
mask: truereplaces nonempty password fields before rendering and adds a translated notice; PDF extraction checks verify that synthetic passwords are absent. - addedTask lists: Optional phases and caller-defined role legends supplement the existing
assigneefield with visible responsibility labels. - addedTypst package:
typst.tomlandlib.typ; accounting templates are functions (invoice(data:, company:)…), running-text documents take named parameters and a body - addedLanguage from
company.json: the running-text templates and credentials load the labels forcompany.languagewhen nolocaleis passed (before, they fell back to English labels) - addedTotals check: invoice, offer, credit note and order confirmation stop the build when an item total, the subtotal, the VAT or the total does not add up, to the cent
- added§ 19 UStG note: invoice and credit note print
default_terms.vat_notefromcompany.jsonwhenvat_exemptis set; the old README promised this, but no template did it - addedPDF metadata: accounting documents set the document number as title, the company as author and the document date, which PDF/A-3 needs for ZUGFeRD e-invoices
- addedJSON schemas for every accounting document and
company.jsoninschema/; the example files reference them with$schema - addedExamples for every template, compiled with typstgen, including a ZUGFeRD invoice, a task list, a handout and an architecture diagram in the documentation
- addedFrom casoon-data: the letter takes its text as Typst content (headings, lists, tables), free address
lines, afinalparagraph kept with the closing and a page header from page 2; a recipient's company is not printed twice when it repeats the name; the offer prints the company above the contact person, its project reference, and "Gesamtbetrag (netto)" without VAT; unitstag,monat,jahrtake the plural for quantities other than 1 - addedTask list tags are shown again below each task (removed in 0.6.10)
- added
scripts/check.shand a CI workflow on pull requests: compiles all examples and diagrams, builds the e-invoices, validates the JSON and compares the locale keys - changedPackage: Version 0.2.0 aligns the manifest, local imports, example package path and website; the first standalone template release uses the
templates-v0.2.0tag. - changedPages: A practical MCP workflow and setup guide explain AI-assisted checking, previews and PDF generation; the entry path covers other documents and clarifies invoice language scope.
- changedPages: The homepage, README and documentation explain typstgen as the separate compiler project, with links to its repository and compatible installation instructions.
- changedPages: The hero explains deterministic JSON/Typst document generation with a responsive Chartlet workflow; multilingual invoices remain a concrete application below.
- changedPages: English audience-focused copy, direct PDF/setup links and a shorter example workflow make the document templates easier to explore before installing the tooling.
- changedDocumentation: README, installation and capability reference distinguish published tooling from coordinated development features; Pages includes language/US invoices and publications.
- changedDiagrams: rendered with chartlet 0.21 instead of 0.19. The checked-in SVGs of the architecture, flow and swimlane examples gained a fuller description for screen readers, naming the most connected node, loops and bottlenecks; the drawings themselves are unchanged.
- changedTooling: the pinned versions of typstgen and chartlet live in
tool-versions.json, read by the check workflow and by the start page, instead of being written out in each place. - changedLocales: Partial dictionaries recursively overlay the selected language catalog; null inherits, empty strings suppress labels, and incompatible known types fail with a field path.
- changedMetadata: Running-text documents keep the human title, author, assigned number and explicit date in PDF metadata without inventing missing creation dates.
- changedReleases: Documented independent Typst package tags, pinned installation, legacy migration and family-by-family integration; historical crate tags retain their meaning.
- changedContributors: The existing check command also verifies locale contracts, password masking, document identity, PDF/UA compilation and tagged publication tables with synthetic data.
- fixedInvoices: Unit prices retain their canonical decimal precision in the PDF, matching the CII unit price instead of silently rounding it to EUR cents.
- fixedInvoices: Optional null logos and omitted house numbers work in the profile examples and both address layouts, matching the existing data schema.
- fixedTemplates checked against casoon-data, the production user of the old template copy: the title pages of concept, documentation and protocol look as before the refactoring of January 2026 again (own page without header and footer, bold labels with colon, outlined tags, 24 pt title); accounting documents no longer fail without
languageincompany.json(defaultde); the totals check acceptstotals.discount_total - fixedLogo with the package:
company.logomay be image bytes; a path pointed into the package - fixedTask list ignored a
companypassed to it (colours, logo, language) - fixedReminder failed on a numeric or missing
reminder_leveland on a fee given as string; credit note failed on a salutation without introduction - fixedExample documents that did not compile: the it-consultant order confirmation, time sheet and SLA used wrong field names or unescaped
#/@; the contract template referenced an undefinedstatus; the SLA template built party names as content; the title page failed ontags: none - fixedDelivery note printed Typst code: the address block call was missing its
# - fixedOptional fields: the order confirmation no longer requires
order_numberorterms, and document footers leave out the status line when no status is set - fixedLetter example: the subject was outside
metadata, where the template does not read it - fixedProject page: the caption under the hero invoice made the page wider than a phone screen; it now names the example folder and takes the typstgen version from
tool-versions.json