v2.0.0-alpha.4
What's Changed
Features
- ci(frontend): Lighthouse CI on the logged-in app screens, on dev to main by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/624
- feat(documents): pre-check all original lines when issuing a credit note from an invoice by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/655
- feat(documents): unit picklist on invoice lines, readable VAT rate label by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/656
- feat: per-company default due date for quotes and invoices by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/658
- feat: search the catalog while typing a line Designation by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/659
- Quick client creation from a document, completeness enforced at invoice validation by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/661
Fixes
- fix(ci): stop a countries/data race and accept the real PISTE 4xx rejection by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/629
- fix: require POSTGRES_PASSWORD instead of a hardcoded compose password by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/636
- test(queue): give the PDF warm-up hook room for a cold Chromium launch by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/660
- test(e2e): move the fake Photon server below the ephemeral port range by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/654
- fix(frontend): keyboard navigation in SearchSelect by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/657
- test: give every assertion-less test a real assertion by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/671
- fix: prefill the currency from the country code, whatever the interface language by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/665
- test(signing): read the PAdES signature without trailing-zero trimming by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/680
- test: remove duplicated fixtures from async-send and invoice mandate specs by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/679
- test(pdp): rename superpdp live settings to SUPERPDP_* and resolve sandbox parties by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/681
Per-country compliance
- refactor(tax): read localized invoice mentions from country data by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/651
- refactor(correction-routes): move local cancel availability into the country JSON by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/662
- refactor(revenue-basis): move the default revenue basis into the country JSON by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/663
- refactor: drop dead draft watermark tables, derive national format fallback currency by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/664
- refactor(identifiers): one translated source for identifier help text by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/667
- refactor(company-lookup): read country coverage and notes from data by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/668
- refactor(demo): read demo party identifiers from the country files by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/670
- refactor(formats): read legal-id e-invoice schemes from country data by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/666
Documentation
- docs: add Sponsor links for GitHub Sponsors by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/625
- ci: add a DCO sign-off check by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/649
- docs: add Discord community server links by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/648
Dependencies
- chore(deps): update dependency dompurify to v3.4.16 [security] by @renovate[bot] in https://github.com/invoicerr-app/invoicerr/pull/645
- chore(deps): update dependency markdown-it to v14.3.1 [security] by @renovate[bot] in https://github.com/invoicerr-app/invoicerr/pull/646
- chore(deps): update dependency @modelcontextprotocol/sdk to v1.31.0 [security] by @renovate[bot] in https://github.com/invoicerr-app/invoicerr/pull/673
- fix(deps): update documentation dependencies (minor and patch) by @renovate[bot] in https://github.com/invoicerr-app/invoicerr/pull/653
- chore(deps): pin dependencies by @renovate[bot] in https://github.com/invoicerr-app/invoicerr/pull/652
- fix(deps): bump handlebars to 4.7.10 in the backend by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/678
Other Changes
- fix(frontend): widen the settings content column (#560) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/561
- fix(documents): route country identifier help texts through i18n (#563) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/564
- feat(dz): add Algeria as a country, data only (#558) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/566
- fix(dz): NIF/NIS identifier formats and DZ help texts (#567) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/569
- Translations update from Hosted Weblate by @weblate in https://github.com/invoicerr-app/invoicerr/pull/565
- fix(e2e): assert the demo-mode send-failed row, not a clamped paragraph's visibility (#570) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/573
- feat(documents): download the original of an imported document (#549) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/571
- fix(frontend): correct the Exchange rates card's false copy (#548) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/572
- fix(e2e): stop the demo-mode status-badge check from relying on scroll position (#570) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/576
- feat(company): refresh the exchange-rate pairs a company actually uses by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/575
- feat(clients): restrict a client to a subset of the company's payment methods (#416) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/577
- feat(frontend): mirror the layout for right-to-left locales by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/578
- fix(documents): stop a sent quote from decrementing stock (#579) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/580
- Add a Validate action that numbers and locks an invoice without sending it (#581) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/602
- feat(documents): compose a per-country view from the existing catalogs (#603 step 1) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/614
- feat(documents): plug vat-rates into the composed per-country view (#603 step 2) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/615
- feat(documents): plug every remaining non-DB-mirrored catalog into the composed per-country view (#603 step 4) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/617
- feat(documents): plug the three DB-mirrored catalogs into the composed per-country view (#603 step 5) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/618
- feat(documents): one JSON file per country (#603 step 6) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/619
- fix(documents): ATCUD driven by the country's documentValidationCode fact (#603) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/620
- fix(documents): one reference table for EU and GCC membership (#603) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/626
- chore: Configure Renovate by @renovate[bot] in https://github.com/invoicerr-app/invoicerr/pull/621
- ci(release): categorised release notes and a Discord pre-release summary by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/623
- chore: move builder stages to Node 24, drop 32-bit ARM from docs by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/628
- ci(docker): scan published images with Trivy, fail only on fixable critical by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/622
- fix(deps): bump proxy-addr to 2.0.8 for CVE-2026-90711 by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/672
- ci: run required checks on merge queue groups by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/674
- ci(dco): skip the dev to main promotion pull request by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/675
- dev to main by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/562
New Contributors
- @renovate[bot] made their first contribution in https://github.com/invoicerr-app/invoicerr/pull/621
Full Changelog: https://github.com/invoicerr-app/invoicerr/compare/v2.0.0-alpha.3...v2.0.0-alpha.4