The previous commit carried only the fallback split. This one carries the rest of Libby's two blockers and Heimdall's decision:
- config.json keeps only the registration block over dev's; clientDefaultServer is dev's again (the gamecult.org default is #86).
- registerErrorTrouble maps a register error code to registerTroubleMessage (new troubles: password-weak, password-short, unknown); PasswordRegisterForm shows those, never the server's text.
- RegisterRoute: switch on, /register offers the account service link and redirects there; switch off, the in-client form.
- Tests: registerErrors.test.ts (code to words, no Matrix code leaks), RegisterRoute.test.tsx (on, off, unusable url).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- The gamecult.org default homeserver moves to its own PR (#86); config.json and clientDefaultServer are dev's again.
- PasswordRegisterForm no longer shows a server's own error text or the old "Failed to register" lines: registerErrorTrouble maps the error code to registerTroubleMessage (new troubles for weak and short passwords and for the unknown case). A consumer-side test goes through the code to the words and checks no Matrix code leaks.
- Per Heimdall: with the Register switch on, /register is RegisterRoute, which sends a stranger to the account service's page (one way to register); with it off the in-client form stays. Tested through the component, rendered on and off and with an unusable url.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
/signed-up/ sat inside AuthLayout, which discovers a homeserver and sends paths it does
not know to sign in, so it never rendered. The signed-out routes move to authRoutes.tsx
with the return page beside the layout (its own card, no discovery); a test matches the
real route table and renders the page. Drop the visible notice version from the entry
(it stays in registrationEntry's data and tests) and the unused getSignedUpPath.
clientDefaultServer falls back to gamecult.org, and the repo config.json lists it first
and defaults to it; a config that names its own list (the production pin) is unaffected.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
config.registration {enabled, url}: off by default and in config.json. When on with a
http(s) url, the sign-in page shows Register (a link to the account service's own page)
with the consent sentence and its version, both read from trainingNotice.ts
(new TRAINING_NOTICE_VERSION shared with the room notice). /signed-up/ is the return
page: it says to follow the steps from the sign-up page and promises nothing about mail;
with the switch off it redirects to sign in. Off keeps the existing Register link.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>