e14c541e5e
/join-now: public self-enroll page gated behind config.dappFallbackPublic (default off -> redirects to /start, invisible until needed). Auto-assigns the current rotation sponsor via /api/public/current-sponsor, registers the user's own wallet, then redirects to /my/<newId> so new members land on their live position instead of guessing their ID. HTML lives in private/, served only via the flagged route. Reuses the proven contract engine. Admin /direct-join now also shows a 'View position ->' link to /my/<newId> after a successful join. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>