Commit Graph

2 Commits

Author SHA1 Message Date
Ronni Baslund d964efcab7 fix(portal): localPart is string | undefined under noUncheckedIndexedAccess
ci / tc_booking (push) Has been skipped
ci / tc_operator (push) Has been skipped
ci / tc_website (push) Has been skipped
ci / changes (push) Successful in 4s
ci / build_portal (push) Successful in 50s
ci / deploy (push) Successful in 39s
ci / tc_platform_api (push) Has been skipped
ci / test_platform_api (push) Has been skipped
ci / build_booking (push) Has been skipped
ci / build_operator (push) Has been skipped
ci / build_platform_api (push) Has been skipped
ci / tc_portal (push) Successful in 26s
split('@')[0] needs a fallback even though the email regex guarantees the
separator — portal typecheck (CI) rejected the mobileconfig route.
2026-06-11 07:49:07 +02:00
Ronni Baslund acf0d082e4 feat(portal): one-click Apple Mail setup via .mobileconfig
Apple Mail ignores RFC 6186 SRV autodiscovery and 'Microsoft Exchange'
needs EWS/EAS that Stalwart doesn't speak — so custom-domain users were
stuck typing IMAP/SMTP servers manually. New session-gated portal route
generates an Apple configuration profile (IMAP 993 + SMTP 465 on the
runtime mail host, username = address, NO password embedded — profiles
are plaintext, Apple prompts at install). 'Add to Apple Mail' buttons on
the three credential screens (invite result, mailbox created, password
reset). CalDAV/CardDAV payloads join when DAV is reachable from outside
(the node's :443 belongs to Traefik for now).
2026-06-11 07:44:49 +02:00