Commit graph

5 commits

Author SHA1 Message Date
0f5bc33619 fix(calls): resolve call glare via co-presence, not answer
Both users starting a call in the same DM at once collapsed both attempts: two useSwitchOrStartDmCall instances (header outgoing + strip answer) race on the shared callEmbedAtom, the counter-ring surfaces during the outgoing embed's forming window, and answering it disposes+recreates the embed — putting two MembershipManagers on one (user,device) state-key, driving the SDK 'Missing own membership: force re-join' thrash. Fix per MatrixRTC canon (a call is co-presence, there is no 'answer'): a formingCallRoomIdAtom set synchronously before the outgoing awaits marks the room as forming; an incoming call for a room we already hold/are forming becomes a no-op (element-x model), the counter-ring is suppressed while forming, and the native-answer consumer won't tear down our forming call. Root + design from the internal research workflow. Not yet validated on device.
2026-07-04 02:40:47 +03:00
28d266964e docs(calls): refresh android.md and telecom migration journal
android.md: minSdk 26 correction + a Calls (Telecom) orientation section. telecom_migration.md: journal entry for the 2026-07-03 internal review — findings applied, the deferred set with rationale, and the on-device validation checklist.
2026-07-04 02:16:21 +03:00
fe32bed081 fix(calls): harden DM signaling — Doze ring ceiling, FGS onCreate crash, logout teardown, role-aware grace, web ring withdrawal, caller-cancel 2026-06-24 02:44:52 +03:00
501ed9ac96 docs(calls): telecom migration journal + DM-calls techdebt closeout 2026-06-24 00:43:39 +03:00
f2eb363db4 feat(calls): native self-managed Telecom backend for Android (Phase A/B, flag-gated off, validated on Samsung) 2026-06-23 02:47:17 +03:00