CluPilotCloud/resources/views/livewire/admin
nexxo 4477a7699e Die Mailseite fragt drei Fragen statt eine Wand zu zeigen
Vier Karten in einer schmalen Spalte, und die letzten beiden allein
zweiundzwanzig gleich aussehende Zeilen: fuenf Zwecke, siebzehn Mailarten,
jede „Beschriftung, Auswahlfeld", darunter zweimal derselbe Speichern-Knopf.
Wer die Zuordnung EINER Mailart aendern wollte, scrollte an allem anderen
vorbei und fand am Ende eine Wand. Der Betreiber hat die Seite als unlesbar
gemeldet.

Jetzt drei Reiter nach dem Muster von Admin\Integrations, das aus demselben
Grund umgebaut wurde — geteilt nach der Frage, die man mitbringt: WOMIT
gesendet wird, WER sendet, WAS von wo rausgeht. Der offene Reiter steht in der
Adresszeile, ein Neuladen landet dort, wo man war.

Die eigentliche Wand war die Zuordnung, und zwar nicht wegen ihrer Laenge:
dass die Wegwahl je Mailart auf den Zweck zurueckfaellt, stand nur als Satz in
der leeren Auswahl — siebzehnmal derselbe Satz neben siebzehn Zeilen, die alle
gleich aussahen. Jetzt steht jede Mailart unter ihrem Zweck: oben das Postfach
des Zwecks, darunter eingerueckt, was davon abweichen darf. Die Regel ist die
Form geworden.

Die leere Auswahl nennt die Adresse, die stattdessen greift — und zwar die,
die WIRKLICH greift. Ein Codex-Befund am eigenen Umbau: ein abgeschaltetes
Postfach faellt in MailboxResolver::for() auf „System" zurueck, und
writePurposes() erlaubt genau das. Das Etikett haette eine Adresse genannt,
die nichts verschickt, an der Stelle, an der man nachsieht, um es richtig zu
machen. Es fragt deshalb dieselbe Aufloesung, die beim Senden entscheidet.

Ein Knopf statt zwei: Zwecke und Wegwahl sind fuer den Betreiber ein Vorgang.
Die Reihenfolge ist die Zusicherung — die Zwecke werden geprueft und werfen,
BEVOR eine einzige Wegwahl geschrieben ist, sonst hinterliesse eine abgelehnte
Eingabe die halbe Zuordnung. savePurposes() und saveRoutes() bleiben, was sie
waren.

Beide Warnungen stehen ueber den Reitern: sie gelten fuer die ganze Seite, und
wer nachsieht, warum keine Mail ankam, soll nicht erst den richtigen Reiter
suchen.

Vier bestehende Tests zeigen jetzt auf den Postfach-Reiter, fuenf neue kamen
dazu — darunter der Regressionstest zum Codex-Befund, der gegen die alte
Fassung faellt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 22:06:50 +02:00
..
capacity.blade.php Ein angehefteter Host umging die Reservierung 2026-08-01 18:53:11 +02:00
check-result.blade.php Pruefergebnis als Modal statt am Seitenende 2026-07-31 21:36:43 +02:00
close-dunning-case.blade.php Mahnwesen: Einstellungen und die zwei Eingriffe von Hand 2026-07-31 22:43:52 +02:00
confirm-delete-datacenter.blade.php One definition of the navigation, and the country instead of the building 2026-07-27 16:09:39 +02:00
confirm-delete-incident.blade.php Let an incident be deleted, and start measuring whether the hosts answer 2026-07-29 15:16:48 +02:00
confirm-delete-plan-draft.blade.php feat(admin): a console for creating, pricing and scheduling plans 2026-07-26 12:41:51 +02:00
confirm-delete-vpn-peer.blade.php feat(admin): VPN access management with live peer state 2026-07-25 21:38:12 +02:00
confirm-disable-two-factor.blade.php Replace native confirm() dialogs with the app's own modal pattern 2026-07-28 19:34:27 +02:00
confirm-end-other-sessions.blade.php Show where an account is signed in, and let it sign the other places out 2026-07-28 23:38:17 +02:00
confirm-forget-secret.blade.php Replace native confirm() dialogs with the app's own modal pattern 2026-07-28 19:34:27 +02:00
confirm-generate-ssh-key.blade.php Hetzner-Cloud-DNS, Bereitschaftsseite aus sich heraus behebbar 2026-07-31 19:50:01 +02:00
confirm-publish-dpa.blade.php Deliver the processing agreement, and hold the proof it was accepted 2026-07-30 16:56:57 +02:00
confirm-reissue-vpn-peer.blade.php Replace native confirm() dialogs with the app's own modal pattern 2026-07-28 19:34:27 +02:00
confirm-release-block.blade.php Sperren sehen und aufheben: Portalseite fuer den Inhaber, Abschnitte in der Konsole 2026-08-03 15:53:24 +02:00
confirm-release-reservation.blade.php Ein reservierter Host gehoert seinem Kunden 2026-08-01 16:06:14 +02:00
confirm-remove-host.blade.php One definition of the navigation, and the country instead of the building 2026-07-27 16:09:39 +02:00
confirm-restart-instance.blade.php Restart a machine, enforce the quota that was sold, end a route that ended 2026-07-29 18:28:28 +02:00
confirm-save-env.blade.php Add a raw .env editor to the Integrations page, with a net under it 2026-07-29 01:51:27 +02:00
confirm-save-secret.blade.php Replace native confirm() dialogs with the app's own modal pattern 2026-07-28 19:34:27 +02:00
confirm-switch-mode.blade.php Put the switch where it governs, and say when it is thrown 2026-07-30 15:09:38 +02:00
confirm-sync-catalogue.blade.php Hetzner-Cloud-DNS, Bereitschaftsseite aus sich heraus behebbar 2026-07-31 19:50:01 +02:00
customer-detail.blade.php Sperren sehen und aufheben: Portalseite fuer den Inhaber, Abschnitte in der Konsole 2026-08-03 15:53:24 +02:00
customers.blade.php Ask whether they are a consumer, and let one change their mind 2026-07-29 21:06:06 +02:00
datacenters.blade.php Let a datacenter code be corrected while nothing depends on it, and say which building 2026-07-28 22:25:21 +02:00
edit-customer.blade.php Take the address by field, fix the customer type, ask why they leave 2026-07-30 16:41:32 +02:00
edit-datacenter.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
edit-export-target.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
edit-invoice-series.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
edit-mail-template.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
edit-plan-family.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
extend-dunning-deadline.blade.php Mahnwesen: Einstellungen und die zwei Eingriffe von Hand 2026-07-31 22:43:52 +02:00
finance.blade.php Quote what a person pays, and tab the settings page 2026-07-29 19:18:10 +02:00
grant-plan.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
host-create.blade.php Host anlegen: die Seite beschrieb das Rettungssystem und startete die Pipeline 2026-08-02 01:38:48 +02:00
host-detail.blade.php Sperren sehen und aufheben: Portalseite fuer den Inhaber, Abschnitte in der Konsole 2026-08-03 15:53:24 +02:00
host-terminal.blade.php Wortmarke breiter, und die Hostzeile steht wieder auf einer Linie 2026-08-02 23:21:24 +02:00
hosts.blade.php Wortmarke breiter, und die Hostzeile steht wieder auf einer Linie 2026-08-02 23:21:24 +02:00
inbox.blade.php Read the mailbox password where it actually is, and let the console test it 2026-07-30 13:12:29 +02:00
incidents.blade.php Let an incident be deleted, and start measuring whether the hosts answer 2026-07-29 15:16:48 +02:00
instance-admin-access.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
instances.blade.php Restart a machine, enforce the quota that was sold, end a route that ended 2026-07-29 18:28:28 +02:00
integrations.blade.php Der Tunnel bekommt einen eigenen Container 2026-08-03 07:49:29 +02:00
invoices.blade.php Write an invoice for work that came off no price list 2026-07-29 20:12:26 +02:00
mail-log.blade.php Keep a register of what was sent, and answer the customer from here 2026-07-29 21:02:36 +02:00
mail-pace.blade.php Sicht auf die Spuren, und ein Schalter, der die Drossel abstellt 2026-08-03 17:44:29 +02:00
mail-preview.blade.php Accept terms instead of a start date, and fix the sender no server accepts 2026-07-30 15:22:35 +02:00
mail-templates.blade.php Say that a click landed, and make moving one actually move it 2026-07-29 23:06:30 +02:00
mail.blade.php Die Mailseite fragt drei Fragen statt eine Wand zu zeigen 2026-08-03 22:06:50 +02:00
maintenance.blade.php Show times on the operator's clock, keep storing them in UTC 2026-07-27 17:32:21 +02:00
new-invoice.blade.php Write an invoice for work that came off no price list 2026-07-29 20:12:26 +02:00
open-work.blade.php Zwei Attrappen: ein Banner ohne Hintergrund und Rechte, die ihren Schluessel statt ihrer Beschreibung zeigten 2026-08-02 16:47:15 +02:00
overview.blade.php Keep a register of what was sent, and answer the customer from here 2026-07-29 21:02:36 +02:00
payment-problems.blade.php Ein Waechter, der aufraeumt — und die vier offenen Punkte aus dem Betrieb 2026-08-03 09:43:33 +02:00
plan-versions.blade.php Schalter je Paket, ehrliche Statusanzeige, Reste der alten Leiter 2026-08-01 17:53:06 +02:00
plans.blade.php Schalter je Paket, ehrliche Statusanzeige, Reste der alten Leiter 2026-08-01 17:53:06 +02:00
processing-agreements.blade.php Store the agreement where the web process can actually read it 2026-07-30 17:19:39 +02:00
provisioning.blade.php Match the panel to the approved template, measured rather than assumed 2026-07-27 17:08:05 +02:00
proxy-hosts.blade.php Fill the hostname page from the installation, not from a blank form 2026-07-31 00:53:12 +02:00
readiness.blade.php Hetzner-Cloud-DNS, Bereitschaftsseite aus sich heraus behebbar 2026-07-31 19:50:01 +02:00
record-withdrawal.blade.php Charge the price the website shows, and hand a withdrawal back in full 2026-07-29 22:42:02 +02:00
reissue-takeover.blade.php Release v1.3.82 — Übernahme-Befehlszeile neu ausstellen 2026-08-01 01:00:53 +02:00
resolve-failed-checkout.blade.php R20: Begruendung im Modal, und der Waechter sieht jetzt auch Listenzeilen 2026-07-31 22:09:05 +02:00
revenue.blade.php Match the panel to the approved template, measured rather than assumed 2026-07-27 17:08:05 +02:00
roles.blade.php Zwei Attrappen: ein Banner ohne Hintergrund und Rechte, die ihren Schluessel statt ihrer Beschreibung zeigten 2026-08-02 16:47:15 +02:00
settings.blade.php Ein Waechter, der aufraeumt — und die vier offenen Punkte aus dem Betrieb 2026-08-03 09:43:33 +02:00
two-factor-setup.blade.php Quote what a person pays, and tab the settings page 2026-07-29 19:18:10 +02:00
vpn-config-access.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
vpn.blade.php Release v1.3.84 — VPN-Zugänge nach Personen und Hosts getrennt 2026-08-01 02:34:15 +02:00