## What & why

<!-- What does this change, and what problem does it solve?
     For anything bigger than a fix, link the issue where we discussed it. -->

## How I tested it

<!-- There's no test suite yet, so this section carries the weight. -->

- [ ] Verified with a real call (two tabs, or tab + desktop app)
- [ ] Typecheck/build passes (`npm run build` in the packages I touched)
- [ ] If this touches passwords or encryption: tested in a password-protected room (E2EE path)

<!-- Screenshots or a short capture are very welcome for UI changes. -->
