CluPilotCloud/resources/views
nexxo a87a4f512d feat(billing): one plan change at a time, and every price says what it is
Two contradicting plan upgrades sat in the cart at 799 and 399 € — no checkout
could resolve which one the customer meant. Choosing another now replaces the
pending one and says so; add-ons still stack, because buying 200 GB as two packs
is a sensible thing to want.

Every price now states net or gross and how often. The cart shows net per line
with "pro Monat" or "einmalig", then subtotal, VAT and gross — and separates
the monthly recurring amount from a one-off traffic top-up sharing the same
cart, because those are two different commitments. The rate is configurable
(CLUPILOT_TAX_PERCENT, 20 % default) since it follows the seller's country.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-26 09:23:49 +02:00
..
components/ui feat(vpn): explain a missing download, and offer a way out 2026-07-26 01:20:04 +02:00
errors fix(pages): the update and placeholder pages must not need a build 2026-07-26 01:56:23 +02:00
layouts fix(portal): move notices into the header, so the page stops scrolling twice 2026-07-26 00:13:20 +02:00
livewire feat(billing): one plan change at a time, and every price says what it is 2026-07-26 09:23:49 +02:00
mail feat(admin): email affected customers when maintenance is cancelled (ledger-guarded) 2026-07-25 16:07:21 +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 fix(pages): the update and placeholder pages must not need a build 2026-07-26 01:56:23 +02:00
landing.blade.php feat(brand): CluPilot logo mark + SVG favicon across layouts 2026-07-25 15:31:33 +02:00
legal.blade.php feat(landing): public marketing homepage at / (+ legal placeholders) 2026-07-25 08:59:39 +02:00
welcome.blade.php feat(portal): design foundation — Tailwind v3, tokens, self-hosted fonts 2026-07-25 00:43:01 +02:00