- Calls keep going with the app in the background: a foreground service (CallService.kt, driven from lib/matrix/call_service.dart) declares the microphone, the camera while it's on and the screen while it's shared. Its notification (CallStyle) shows the call's length, opens the call and hangs up. Swiping the app away ends the call. - Screen sharing on Android: consent, then media projection on the service, then LiveKit publishes a screen-share track. A shared screen replaces the sharer's camera on their tile, shown whole and unmirrored; stopping it from Android's controls stops the share. - Read receipts per thread (MSC3771): an open thread sends receipts with thread_id, "Read" under replies comes from receipts in the thread, and threads with unread replies get a dot on "N replies" and in the list. Not tested on a device yet. README updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Clients
| Directory | What | State |
|---|---|---|
ui/ |
shared Vue 3 + Tailwind design system: tokens, fonts, icons, components | in use by admin and web |
admin/ |
admin web panel, served by its own optional warp-admin binary |
done for the current admin API |
web/ |
web client (Vue SPA on matrix-js-sdk), served by its own optional warp-web binary |
rooms, timeline, sending text and files, invites; E2EE next |
desktop/ |
Wails v3 shell reusing the web frontend | next: web has a timeline |
mobile/ |
Flutter app on the famedly Matrix SDK, Android first | rooms, timeline, files, replies, reactions, threads, spaces, E2EE with QR and emoji verification, push, calls, sliding sync |
The frontend packages are a pnpm workspace (pnpm-workspace.yaml at the
repository root); the Go hosts join go.work.
pnpm install
pnpm admin:dev
pnpm web:dev