CluPilotCloud/resources/views
nexxo 92bcdcd186
tests / pest (push) Failing after 7m32s Details
tests / assets (push) Successful in 22s Details
tests / release (push) Has been skipped Details
Send the invoice with the invoice attached
The PDF is rendered when the mail goes out rather than fetched from anywhere,
because nothing stores it — and rendering from the frozen snapshot means the
attachment is the document as issued no matter when the queue gets to it or how
often it retries. fromData rather than fromPath: there is no path.

Three attempts at testing it, and the first two were wrong in ways worth
recording. Attachment::$data does not exist — the closure lives in a protected
$resolver, and reaching for it was me testing the framework's internals rather
than my own code. And a byte comparison of the PDF cannot work at all: TCPDF
embeds a creation time and a document id, so two renders of one invoice differ.

Split into the two things that can actually go wrong. The mail carries an
attachment with the right filename and type — that is metadata, and it is
asserted as metadata. And the renderer produces a real PDF rather than an empty
one, asserted where the renderer is, because an attachment closure that returns
nothing still makes a perfectly valid mail with a nought-byte file on it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 02:13:41 +02:00
..
components Merge credentials and infrastructure into one Integrations page 2026-07-29 01:49:39 +02:00
errors Refuse a portal login for an address that already belongs to an operator 2026-07-28 14:42:16 +02:00
layouts Answer a check at once, start an update at once, and count down to neither 2026-07-28 22:25:07 +02:00
livewire Add a raw .env editor to the Integrations page, with a net under it 2026-07-29 01:51:27 +02:00
mail Send the invoice with the invoice attached 2026-07-29 02:13:41 +02:00
pdf Issue an invoice from what somebody bought, and freeze it there 2026-07-29 02:09:05 +02:00
vendor/wire-elements-modal fix(admin): no admin lockout (is_admin fallback); centered modal width; datacenter edit modal + country dropdown 2026-07-25 18:09:17 +02:00
coming-soon.blade.php One design system for every surface 2026-07-27 16:03:47 +02:00
landing.blade.php Say EU and stop there, as the approved template does 2026-07-28 09:19:24 +02:00
legal.blade.php feat(landing): public marketing homepage at / (+ legal placeholders) 2026-07-25 08:59:39 +02:00
status.blade.php Show times on the operator's clock, keep storing them in UTC 2026-07-27 17:32:21 +02:00
welcome.blade.php feat(portal): design foundation — Tailwind v3, tokens, self-hosted fonts 2026-07-25 00:43:01 +02:00