Make an org without a domain enterable

Featurekamo-internal
Shipped
August 24, 2026 at 9:34 PM UTC
Author
kamo
Commit
a531233

Entering an org meant navigating to **************** With no domain that URL rendered as the literal **************** so Enter was disabled and owners were routed to /setup/dns instead -- DNS was the doorway, not a white-label option. The workspace now opens on the CURRENT origin when there is no live custom host, and the session names the org. A tenant with a working custom domain still opens on its own host, so nothing changes for anyone white-labelled. An unfinished custom domain is treated like no domain: that HOST cannot serve yet, which is not the same as the org being unreachable. canEnterOrg therefore keys on the thing that was always the real precondition -- a usable membership -- rather than on a domain. needsDomainSetup and orgStatus deliberately keep reporting an unfinished domain: it is no longer a barrier, but it is still somebody's outstanding task, and the estate view is where that gets noticed. The shell also had to stop asking the hostname which org it is in. The root layout stripped "internal." and looked the host up, which answers "who owns this name" -- the same question as "which workspace am I in" only while every tenant had a host to itself. On the platform host it returns the platform owner, so a member entering a domainless org would have been shown KamoCRM Inc.'s branding, features and rights. It now asks the session first via /api/org/current and falls back to the host when there is no session, which keeps the signed-out shell rendering. The *** cookie is what makes that reachable at all -- sessionStorage is invisible to a document request. 2857 tests and all 7 guard scripts pass.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing