End of April Fixes
A round of correctness and reliability fixes across messaging, rituals, worksheets, and onboarding:
- Pinned message banner accuracy — concurrent pin requests are now serialized so a channel can only ever show one pinned message, and anonymized messages are excluded from the pinned banner instead of leaking through
- New-message sound for thread replies — incoming replies inside a message thread now play the channel notification sound, matching the behavior of top-level messages
- Ritual document recovery — ritual documents that got stuck in PROCESSING can now self-recover, and retry uses the correct generation job for the session type instead of always re-running the conversation flow
- Print dialog error feedback — when the browser blocks the print popup (popup blockers, mobile Safari, etc.) the user now sees a clear error toast instead of nothing happening
- Client onboarding redirect — completing the onboarding checklist no longer fails when the original destination space or app has been removed; the redirect falls back gracefully
- Version update banner resilience — the “new version available” refresh button keeps working even when an outdated bundle leaves the page in a partially-broken JS state