diff --git a/.claude/skills/syncing-upstream-healthchat/SKILL.md b/.claude/skills/syncing-upstream-healthchat/SKILL.md index f465eb24cd..b0737490f7 100644 --- a/.claude/skills/syncing-upstream-healthchat/SKILL.md +++ b/.claude/skills/syncing-upstream-healthchat/SKILL.md @@ -96,6 +96,20 @@ zsh: `for c in $VAR` does not split on newlines, a variable named `path` *is* `P `$TAG:file` applies a history modifier — use `while read`, never name a variable `path`, write `${TAG}:file`. +## Embedded Element Call: test every bump against the iPhone + +`gradle/libs.versions.toml` pins `element_call_embedded`, the web app the call screen loads. Upstream +lets Renovate bump it; each bump ships a fresh matrix-js-sdk snapshot, and the Rust SDK on both +HealthChat apps parses the call membership that js-sdk writes. 26.10.0 shipped Element Call 0.28.0, +whose js-sdk dropped `livekit_alias` from `foci_preferred`; ruma requires the field, so the Rust SDK +discarded the membership and the iPhone stopped ringing for Android calls (Android's own +ring-cancel detection broke the same way). Pinned to 0.26.1 in 26.10.1, the version iOS embeds; the +hosted Element Call on the server (`matrix_element_call_version` in the playbook inventory) must stay +on the same version or web and desktop calls stop ringing. 0.27.0 is on Maven without a release. Before lifting the pin or +taking a newer bump: start a call from Android, the current iPhone build must ring, and the room +state must still parse (`has_active_room_call`). Lift only when both apps run a Rust SDK that +accepts memberships without the alias. + ## Git LFS — the part that bites Goldens, compound screenshots, `docs/images-lfs`, and `libraries/mediaupload/impl` test assets diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bcb3d50090..f7a296d40c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -239,7 +239,14 @@ sigpwned_emoji4j = "com.sigpwned:emoji4j-core:16.0.0" metro_runtime = { module = "dev.zacsweers.metro:runtime", version.ref = "metro" } # Element Call -element_call_embedded = "io.element.android:element-call-embedded:0.28.0" +# HealthChat fork: pinned to 0.26.1, the last Element Call that still publishes `livekit_alias` in its +# call membership (element-call #4307, matrix-js-sdk #5573, first shipped in 0.28.0). ruma requires the +# field, so a Rust-SDK client (Element X iOS and this app) drops the membership, `has_active_room_call` +# stays false and no incoming call rings. iOS embeds the same 0.26.1; the hosted Element Call on the +# server must stay on 0.26.1 too, or calls from web and desktop stop ringing. 0.27.0 exists on Maven +# only, without a GitHub release. Lift the pin only when both apps ship a Rust SDK whose ruma accepts +# memberships without the alias. +element_call_embedded = "io.element.android:element-call-embedded:0.26.1" # The native MatrixRTC call component. Versions come from the BOM, so every artifact moves together. element_call_bom = { module = "io.element.android:element-call-bom", version.ref = "element_call" } element_call_api = { module = "io.element.android:element-call-api" }