The email-connection feature was whole on the server and unreachable in the
product. `ticketing_email_connections` has shipped since 2026_04_08_000008,
the three write routes are live and healthy — an empty POST answers a 422
validation bag — and index() has been computing an `emailConnections` prop on
EVERY settings render. The one thing missing was the segment that lets
somebody look at it: `email` was not in the `{tab}` whitelist, so the only
deep link anybody could guess fell through to the POST-only `/settings/email`
and answered 405 while its five siblings answered 200.
The segment is in the whitelist now, and the shell's Settings.vue grows the
tab that renders the prop (dashboard-shell, same branch).
Two things about the prop had to change before a UI could read it:
· the stored mailbox PASSWORD no longer leaves the server. It was sitting in
`config` on a prop that ships to everyone who can open Help Desk Settings;
nothing rendered it before, so nothing is lost by shaping the rows by hand
and sending `has_password` instead of the credential.
· a save with the password box blank KEEPS the stored password. The form
cannot prefill a password it is never sent, so an empty box has to mean
"unchanged" — otherwise correcting a host would silently disconnect the
mailbox, and the row would still read as configured.
Proof: tests/Feature/Ticketing/EmailConnectionsHaveADoorTest.php (shell) —
17 tests, including every tab key read out of the Vue's own TAB_KEYS and
asserted 200.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
dashboard-ticketing
Description
Languages
PHP
100%