v2.0.0-alpha.2
Second alpha of Invoicerr v2. Pre-release: not pulled by latest, not for production invoicing.
What's Changed
- ci: stop running the whole suite twice on every push to dev by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/405
- docs: robots.txt and llms.txt for docs.invoicerr.app by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/407
- fix(deps): override transitive versions flagged by Dependabot by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/408
- chore: refuse to commit a credential by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/413
- feat(received-invoices): run OCR in a background job, capped cluster-wide by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/409
- fix(auth): rate limits per client, not per instance by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/411
- fix(chart): the bundled Postgres and Redis can actually start by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/412
- test(load): measure what a node costs per active user by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/410
- fix(lint): format the rate-limit proof script, and add the v2 changelog entry by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/414
- fix(e2e): explicit 10s timeout for time-tracking dialogs closing after a write by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/425
- fix(documents): drop empty line items on save instead of blocking or persisting them by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/422
- Warn before an invoice send locks the document (#322) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/423
- Configurable Reply-To address on outgoing mail by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/424
- feat: show installed version and check for updates on GitHub by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/426
- Optional work date per invoice/quote line (issue #145) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/428
- fix: two CI flakes unrelated to the code under test by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/429
- Settings navigation as a grid of tiles instead of a list by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/427
- fix(i18n): restore the 353 translated strings stranded by the closed PR #439 by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/440
- test: drop the wall-clock and render-race dependencies from two specs by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/442
- The waiting list is a named processing purpose in the privacy policy by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/441
- feat(transports): add Invopop as a transmission platform by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/443
- fix(lint): use Number.isNaN in the credential access audit spec by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/447
- fix(ci): the nightly live job runs Vitest, and fails when it ran nothing by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/449
- test: wait for what is actually in flight, in three tests that raced the app by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/450
- feat(transports): add A-Cube as a transmission platform by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/444
- feat(transports): add Iopole as a transmission platform by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/446
- fix(peppol): Peppol billing profile URN in cbc:ProfileID for French sellers by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/452
- feat(transports): add Billit as a transmission platform by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/445
- fix(xrechnung): the French BT-23 code does not belong in cbc:ProfileID here either by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/453
- fix(documents): a national channel mandate governs domestic operations only by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/454
- test(e2e): clear the rest of the layer-teardown and descriptor-rebuild races by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/455
- fix(brand): centre the lockup mark on the wordmark's optical centre by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/458
- chore(brand): fix the documentation's social card and point brand images at invoicerr-app/brand by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/457
- fix(ui): don't let a deferred focus restore steal focus from a layer the user already opened by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/456
- test(e2e): fix the two flakes of #459 at their cause (02 invalid email, 43 KOR date picker) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/460
- feat(dashboard): metric tiles open the filtered list behind them (#419) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/461
- feat(dashboard): period filter every dashboard widget respects (#418) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/462
- feat(dashboard): "Collections" tile for cash actually received (#417) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/463
- feat(documents): let the issuer mark a sent quote accepted manually (#421) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/465
- feat(clients): import clients from CSV (#204) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/466
- fix(documents): refuse save-draft on issued documents in code, not country data (#468) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/469
- Merge main into dev: bring back the 355 translations #440 restored by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/470
- Adopt the Wyro architecture check: wyro.json and a note under Security by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/476
- fix(documents): give issued credit notes a legal number of their own (#471) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/473
- feat(clients): several contacts per client, one primary (#415) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/474
- feat(quotes): quotes with options, chosen at acceptance (#373) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/475
- test(documents): fix dev red after #473 + #475 (approval spec mock) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/481
- dev to main (permanent PR: keeps dev under test) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/480
- i18n: Kabyle translation into dev (supersedes #464) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/483
- fix(clients): legacy contact clear and concurrent contact saves (#478) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/485
- fix(quotes): accepted option's total everywhere, and no sibling subscription for plain text fields (#479) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/486
- fix(signatures): bind an e-signature to the exact version the client read (#477) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/489
- fix(documents): serve an archived PDF only while it matches the document (#490) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/492
- perf(documents): stop re-rendering every field on each keystroke (#488) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/491
- fix(quotes): totals and settlement never sum a quote's options (#487) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/493
- feat(formats): produce credit notes in every e-invoicing format (#472) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/495
- fix(documents): a delivered PDF prints no transient status (#494) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/498
- feat(pt): ATCUD on credit notes from their own NC series; never declare an unnumbered document (#497) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/500
- feat(pt): declare the real ATCUD, and declare credit notes to the AT (#501) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/505
- test(e2e): read every stack URL from cypress.config.ts, guard literal ports (#502) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/503
- fix(credit-notes): price and render a linked credit note from the invoice it corrects (#507) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/508
- feat(numbering): fix number formats per country and document type (#496) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/504
- fix(settings): number formats card no longer shifts the page on load by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/513
- fix(documents): archive and deliver an issued credit note (#499) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/506
- test(e2e): scroll to the signing page option chooser before asserting it visible (#509) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/511
- test: 60 s timeout for the dangling file references scan by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/510
- fix(signature): keep the next required step in view on the signing page by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/514
- feat(numbering): restart document numbers yearly where the law allows it (#515) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/518
- Currency: dated dashboard consolidation and a cashed-revenue view per period by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/521
- chore: remove em dashes added by #518 by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/523
- feat(address): address autocomplete through a self-chosen Photon server (#197) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/520
- feat(documents): VAT in the national currency on foreign-currency invoices (#517) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/522
- fix: fall back to the statutory rule wording when France's late-fee rate table runs out by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/524
- Operator catalogue: which operators implement each legal channel by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/528
- docs: catch up on the merges of 2026-09-27/28 by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/529
- Channels settings screen: legal channel, then operator (design C) (#527) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/530
- fix(e2e): stub the live company-lookup call flaking the pl-de scenario by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/532
- ci: build and push a dev image on every push to dev by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/538
- Sign-up: hide the invitation code behind a discreet toggle (#534) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/541
- fix(billing): pin Polar-Version 2026-04 on every Polar API request by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/540
- fix(numbering): a kept running series without {year} never restarts by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/544
- fix(billing): a company-less sign-up never sees the seat-check error; Polar provisioning logs its real cause by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/542
- Settings: bring back the sidebar navigation by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/545
- feat(demo): DEMO_MODE flag, seed/reset script, and account lockdown (#533) by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/546
- dev to main by @Impre-visible in https://github.com/invoicerr-app/invoicerr/pull/484
Full Changelog: https://github.com/invoicerr-app/invoicerr/compare/v2.0.0-alpha.1...v2.0.0-alpha.2