Reuses an existing secret from storage when present, otherwise generates a
new one and persists it. When storage is unavailable or throws (e.g. Safari
private browsing, restrictive WebViews), a fresh secret is generated without
persistence so a JOIN can still proceed.
Resolve the session-recovery secret.
Reuses an existing secret from storage when present, otherwise generates a new one and persists it. When storage is unavailable or throws (e.g. Safari private browsing, restrictive WebViews), a fresh secret is generated without persistence so a JOIN can still proceed.