Relay 0.5.0

Relay 0.5.0 is here! This is a big update. A feature I never expected to land in Relay was contributed by Andrew Hunter: voice and video calling via MatrixRTC! Read on for the full set of changes.
Voice & Video Calling
- Integrated LiveKit for native voice and video calling via MatrixRTC.
- End-to-end encrypted calls with Element Call interop.
- Group call support with tiled remote participants.
- Camera-off placeholder shown immediately on remote mute.
- Call window auto-closes on clean disconnect.
- Confirmation dialog added to the Call toolbar button.
Search
- Quick Switch (⌘K): Quickly jump to any room.
- Full Search (⌘G): Search messages and rooms across your account.
Share Extension
- Send pictures and attachments to rooms directly from other apps via the system share sheet.
Encryption & Verification
- Recovery key verification support for cross-signing.
- Crypto store is now preserved when clearing cache.
- Verification flow state resets properly before starting a new session.
Unread Indicators
- Unread badges now appear on space avatars.
- Unread indicators moved from row dots to avatar badges.
- Switched to SDK client-side notification counts for more accurate unread state.
Connectivity
- Unified connectivity state machine with debounced network monitoring.
- Automatic reconnect when the SDK reports offline during an active phase.
Timeline & Performance
- Fixed scroll stability, pagination, and read receipt tracking.
- Fixed swipe-to-reply animation.
- Eliminated message flash on new messages.
- Multiple SwiftUI invalidation fixes for significantly smoother scrolling (O(1) row lookups, stabilized environment objects, reduced re-renders).
Composer
- Fixed mention completion failing after switching rooms.
- Fixed duplicate mention mangling.
- Filtered stale mentions from outgoing events.
UI Polish
- Room permissions now surfaced in the timeline and inspector.
- Inspector toolbar button replaced with a capsule toggle.
- Light, dark, and system appearance switcher.
- Simplified space rail selection indicator.
- Link previews no longer generated for bare URLs without a scheme.
- Read marker now always advances regardless of scroll position.
Known Issues
- Calling is experimental; some homeserver configurations may not support MatrixRTC yet.
Come say hello, get a link to the TestFlight builds and chat with us in #relayapp:matrix.org.