@cometchat/skills 4.2.1 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -12
  3. package/bin/install.js +59 -4
  4. package/package.json +14 -1
  5. package/skills/cometchat/SKILL.md +460 -77
  6. package/skills/cometchat/references/asking-questions.md +48 -0
  7. package/skills/cometchat-a11y/SKILL.md +3 -2
  8. package/skills/cometchat-android-v5/SKILL.md +2 -1
  9. package/skills/cometchat-android-v5-calls/SKILL.md +36 -22
  10. package/skills/cometchat-android-v5-calls/references/README.md +1 -1
  11. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +7 -5
  12. package/skills/cometchat-android-v5-calls/references/audio-controls.md +4 -4
  13. package/skills/cometchat-android-v5-calls/references/call-layouts.md +33 -25
  14. package/skills/cometchat-android-v5-calls/references/call-session.md +2 -2
  15. package/skills/cometchat-android-v5-calls/references/custom-ui.md +5 -5
  16. package/skills/cometchat-android-v5-calls/references/event-listeners.md +2 -2
  17. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +20 -14
  18. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +1 -1
  19. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +43 -27
  20. package/skills/cometchat-android-v5-calls/references/participant-management.md +3 -3
  21. package/skills/cometchat-android-v5-calls/references/raise-hand.md +25 -19
  22. package/skills/cometchat-android-v5-calls/references/recording.md +2 -2
  23. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +1 -1
  24. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +5 -9
  25. package/skills/cometchat-android-v5-calls/references/session-settings.md +3 -3
  26. package/skills/cometchat-android-v5-calls/references/setup.md +1 -1
  27. package/skills/cometchat-android-v5-calls/references/share-invite.md +9 -4
  28. package/skills/cometchat-android-v5-calls/references/video-controls.md +4 -4
  29. package/skills/cometchat-android-v5-calls/references/voip-calling.md +2 -2
  30. package/skills/cometchat-android-v5-components/SKILL.md +4 -3
  31. package/skills/cometchat-android-v5-core/SKILL.md +20 -2
  32. package/skills/cometchat-android-v5-customization/SKILL.md +171 -7
  33. package/skills/cometchat-android-v5-extensions/SKILL.md +7 -4
  34. package/skills/cometchat-android-v5-features/SKILL.md +5 -4
  35. package/skills/cometchat-android-v5-placement/SKILL.md +2 -1
  36. package/skills/cometchat-android-v5-production/SKILL.md +2 -1
  37. package/skills/cometchat-android-v5-push/SKILL.md +2 -3
  38. package/skills/cometchat-android-v5-testing/SKILL.md +2 -1
  39. package/skills/cometchat-android-v5-theming/SKILL.md +2 -1
  40. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +3 -2
  41. package/skills/cometchat-android-v6/SKILL.md +2 -1
  42. package/skills/cometchat-android-v6-builder-settings/SKILL.md +11 -7
  43. package/skills/cometchat-android-v6-calls/SKILL.md +79 -18
  44. package/skills/cometchat-android-v6-calls/references/advanced-features.md +87 -0
  45. package/skills/cometchat-android-v6-calls/references/call-layouts.md +24 -15
  46. package/skills/cometchat-android-v6-calls/references/call-session.md +2 -2
  47. package/skills/cometchat-android-v6-calls/references/device-management.md +17 -16
  48. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +7 -4
  49. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +13 -8
  50. package/skills/cometchat-android-v6-calls/references/raise-hand.md +6 -4
  51. package/skills/cometchat-android-v6-compose-components/SKILL.md +52 -29
  52. package/skills/cometchat-android-v6-compose-customization/SKILL.md +156 -1
  53. package/skills/cometchat-android-v6-compose-placement/SKILL.md +129 -40
  54. package/skills/cometchat-android-v6-compose-theming/SKILL.md +27 -1
  55. package/skills/cometchat-android-v6-core/SKILL.md +389 -9
  56. package/skills/cometchat-android-v6-events/SKILL.md +4 -1
  57. package/skills/cometchat-android-v6-extensions/SKILL.md +2 -1
  58. package/skills/cometchat-android-v6-features/SKILL.md +26 -2
  59. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +31 -1
  60. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +172 -1
  61. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +20 -5
  62. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +36 -5
  63. package/skills/cometchat-android-v6-migration/SKILL.md +44 -42
  64. package/skills/cometchat-android-v6-production/SKILL.md +6 -3
  65. package/skills/cometchat-android-v6-push/SKILL.md +43 -2
  66. package/skills/cometchat-android-v6-testing/SKILL.md +11 -8
  67. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +26 -5
  68. package/skills/cometchat-angular-calls/SKILL.md +256 -389
  69. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +3 -2
  70. package/skills/cometchat-angular-calls/references/call-layouts.md +29 -12
  71. package/skills/cometchat-angular-calls/references/call-session.md +2 -2
  72. package/skills/cometchat-angular-calls/references/custom-ui.md +18 -10
  73. package/skills/cometchat-angular-calls/references/device-management.md +53 -34
  74. package/skills/cometchat-angular-calls/references/group-calls.md +45 -24
  75. package/skills/cometchat-angular-calls/references/idle-timeout.md +31 -15
  76. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +7 -6
  77. package/skills/cometchat-angular-calls/references/raise-hand.md +9 -4
  78. package/skills/cometchat-angular-calls/references/recording-screen-share.md +32 -39
  79. package/skills/cometchat-angular-calls/references/ringing-integration.md +3 -1
  80. package/skills/cometchat-angular-calls/references/share-invite.md +11 -5
  81. package/skills/cometchat-angular-calls/references/virtual-background.md +29 -0
  82. package/skills/cometchat-angular-components/SKILL.md +149 -620
  83. package/skills/cometchat-angular-core/SKILL.md +235 -293
  84. package/skills/cometchat-angular-customization/SKILL.md +415 -223
  85. package/skills/cometchat-angular-features/SKILL.md +216 -334
  86. package/skills/cometchat-angular-patterns/SKILL.md +168 -359
  87. package/skills/cometchat-angular-placement/SKILL.md +189 -560
  88. package/skills/cometchat-angular-production/SKILL.md +241 -92
  89. package/skills/cometchat-angular-push/SKILL.md +280 -294
  90. package/skills/cometchat-angular-testing/SKILL.md +430 -158
  91. package/skills/cometchat-angular-theming/SKILL.md +190 -265
  92. package/skills/cometchat-angular-troubleshooting/SKILL.md +192 -157
  93. package/skills/cometchat-astro-patterns/SKILL.md +22 -1
  94. package/skills/cometchat-calls/SKILL.md +25 -19
  95. package/skills/cometchat-calls/references/use-case-broadcast.md +15 -10
  96. package/skills/cometchat-calls/references/use-case-marketplace.md +2 -3
  97. package/skills/cometchat-calls/references/use-case-support.md +3 -4
  98. package/skills/cometchat-calls/references/use-case-team.md +23 -12
  99. package/skills/cometchat-calls/references/use-case-telehealth.md +3 -4
  100. package/skills/cometchat-components/SKILL.md +163 -25
  101. package/skills/cometchat-core/SKILL.md +412 -13
  102. package/skills/cometchat-customization/SKILL.md +50 -25
  103. package/skills/cometchat-features/SKILL.md +313 -34
  104. package/skills/cometchat-flutter-v5/SKILL.md +10 -4
  105. package/skills/cometchat-flutter-v5-calls/SKILL.md +188 -158
  106. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +48 -24
  107. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +20 -15
  108. package/skills/cometchat-flutter-v5-calls/references/call-session.md +100 -145
  109. package/skills/cometchat-flutter-v5-calls/references/device-management.md +12 -8
  110. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +30 -36
  111. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +15 -13
  112. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +12 -9
  113. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +115 -65
  114. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +41 -30
  115. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +17 -14
  116. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +8 -2
  117. package/skills/cometchat-flutter-v5-conversations/SKILL.md +2 -1
  118. package/skills/cometchat-flutter-v5-core/SKILL.md +20 -2
  119. package/skills/cometchat-flutter-v5-customization/SKILL.md +136 -5
  120. package/skills/cometchat-flutter-v5-events/SKILL.md +2 -1
  121. package/skills/cometchat-flutter-v5-messages/SKILL.md +2 -1
  122. package/skills/cometchat-flutter-v5-production/SKILL.md +15 -6
  123. package/skills/cometchat-flutter-v5-push/SKILL.md +2 -1
  124. package/skills/cometchat-flutter-v5-testing/SKILL.md +17 -6
  125. package/skills/cometchat-flutter-v5-theming/SKILL.md +2 -1
  126. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +7 -6
  127. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +3 -2
  128. package/skills/cometchat-flutter-v6/SKILL.md +17 -16
  129. package/skills/cometchat-flutter-v6-calls/SKILL.md +78 -63
  130. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +8 -6
  131. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +89 -0
  132. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +15 -12
  133. package/skills/cometchat-flutter-v6-calls/references/call-session.md +2 -2
  134. package/skills/cometchat-flutter-v6-calls/references/device-management.md +9 -3
  135. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +10 -10
  136. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +15 -7
  137. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +6 -3
  138. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +23 -16
  139. package/skills/cometchat-flutter-v6-components/SKILL.md +32 -11
  140. package/skills/cometchat-flutter-v6-conversations/SKILL.md +39 -11
  141. package/skills/cometchat-flutter-v6-core/SKILL.md +348 -10
  142. package/skills/cometchat-flutter-v6-customization/SKILL.md +97 -25
  143. package/skills/cometchat-flutter-v6-events/SKILL.md +3 -2
  144. package/skills/cometchat-flutter-v6-features/SKILL.md +15 -6
  145. package/skills/cometchat-flutter-v6-messages/SKILL.md +111 -60
  146. package/skills/cometchat-flutter-v6-migration/SKILL.md +18 -25
  147. package/skills/cometchat-flutter-v6-placement/SKILL.md +79 -50
  148. package/skills/cometchat-flutter-v6-production/SKILL.md +13 -12
  149. package/skills/cometchat-flutter-v6-push/SKILL.md +43 -21
  150. package/skills/cometchat-flutter-v6-testing/SKILL.md +6 -6
  151. package/skills/cometchat-flutter-v6-theming/SKILL.md +38 -5
  152. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +182 -17
  153. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +12 -4
  154. package/skills/cometchat-i18n/SKILL.md +139 -78
  155. package/skills/cometchat-ios/SKILL.md +4 -2
  156. package/skills/cometchat-ios-calls/SKILL.md +225 -95
  157. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +11 -9
  158. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +45 -0
  159. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +6 -7
  160. package/skills/cometchat-ios-calls/references/call-layouts.md +31 -91
  161. package/skills/cometchat-ios-calls/references/call-session.md +51 -54
  162. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +33 -29
  163. package/skills/cometchat-ios-calls/references/custom-ui.md +38 -38
  164. package/skills/cometchat-ios-calls/references/group-calls.md +33 -70
  165. package/skills/cometchat-ios-calls/references/idle-timeout.md +24 -25
  166. package/skills/cometchat-ios-calls/references/in-call-chat.md +19 -23
  167. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +128 -70
  168. package/skills/cometchat-ios-calls/references/picture-in-picture.md +20 -20
  169. package/skills/cometchat-ios-calls/references/raise-hand.md +14 -227
  170. package/skills/cometchat-ios-calls/references/recording-screen-share.md +35 -122
  171. package/skills/cometchat-ios-calls/references/ringing-integration.md +17 -16
  172. package/skills/cometchat-ios-calls/references/share-invite.md +8 -12
  173. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +4 -4
  174. package/skills/cometchat-ios-components/SKILL.md +200 -12
  175. package/skills/cometchat-ios-core/SKILL.md +281 -11
  176. package/skills/cometchat-ios-customization/SKILL.md +276 -110
  177. package/skills/cometchat-ios-features/SKILL.md +64 -36
  178. package/skills/cometchat-ios-placement/SKILL.md +15 -12
  179. package/skills/cometchat-ios-production/SKILL.md +12 -4
  180. package/skills/cometchat-ios-push/SKILL.md +53 -19
  181. package/skills/cometchat-ios-testing/SKILL.md +14 -9
  182. package/skills/cometchat-ios-theming/SKILL.md +39 -3
  183. package/skills/cometchat-ios-troubleshooting/SKILL.md +41 -21
  184. package/skills/cometchat-native-bare-patterns/SKILL.md +56 -18
  185. package/skills/cometchat-native-calls/SKILL.md +89 -19
  186. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +2 -2
  187. package/skills/cometchat-native-calls/references/call-layouts.md +15 -14
  188. package/skills/cometchat-native-calls/references/call-session.md +2 -2
  189. package/skills/cometchat-native-calls/references/custom-ui.md +12 -8
  190. package/skills/cometchat-native-calls/references/device-management.md +53 -30
  191. package/skills/cometchat-native-calls/references/group-calls.md +35 -30
  192. package/skills/cometchat-native-calls/references/idle-timeout.md +6 -6
  193. package/skills/cometchat-native-calls/references/in-call-chat.md +10 -8
  194. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +2 -2
  195. package/skills/cometchat-native-calls/references/raise-hand.md +15 -13
  196. package/skills/cometchat-native-calls/references/recording-screen-share.md +49 -170
  197. package/skills/cometchat-native-calls/references/share-invite.md +7 -5
  198. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +4 -2
  199. package/skills/cometchat-native-components/SKILL.md +91 -57
  200. package/skills/cometchat-native-core/SKILL.md +281 -9
  201. package/skills/cometchat-native-customization/SKILL.md +150 -28
  202. package/skills/cometchat-native-expo-patterns/SKILL.md +77 -27
  203. package/skills/cometchat-native-features/SKILL.md +79 -49
  204. package/skills/cometchat-native-placement/SKILL.md +19 -10
  205. package/skills/cometchat-native-production/SKILL.md +9 -3
  206. package/skills/cometchat-native-push/SKILL.md +2 -1
  207. package/skills/cometchat-native-testing/SKILL.md +1 -2
  208. package/skills/cometchat-native-theming/SKILL.md +54 -29
  209. package/skills/cometchat-native-troubleshooting/SKILL.md +71 -3
  210. package/skills/cometchat-nextjs-patterns/SKILL.md +48 -6
  211. package/skills/cometchat-placement/SKILL.md +42 -3
  212. package/skills/cometchat-production/SKILL.md +12 -5
  213. package/skills/cometchat-react-calls/SKILL.md +220 -10
  214. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +4 -3
  215. package/skills/cometchat-react-calls/references/call-layouts.md +5 -6
  216. package/skills/cometchat-react-calls/references/call-session.md +1 -1
  217. package/skills/cometchat-react-calls/references/custom-ui.md +61 -15
  218. package/skills/cometchat-react-calls/references/device-management.md +55 -51
  219. package/skills/cometchat-react-calls/references/group-calls.md +18 -23
  220. package/skills/cometchat-react-calls/references/idle-timeout.md +25 -12
  221. package/skills/cometchat-react-calls/references/in-call-chat.md +7 -7
  222. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +9 -11
  223. package/skills/cometchat-react-calls/references/raise-hand.md +14 -14
  224. package/skills/cometchat-react-calls/references/recording-screen-share.md +39 -38
  225. package/skills/cometchat-react-calls/references/ringing-integration.md +2 -2
  226. package/skills/cometchat-react-calls/references/share-invite.md +4 -5
  227. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +20 -2
  228. package/skills/cometchat-react-calls/references/virtual-background.md +32 -0
  229. package/skills/cometchat-react-patterns/SKILL.md +57 -4
  230. package/skills/cometchat-react-push/SKILL.md +258 -72
  231. package/skills/cometchat-react-router-patterns/SKILL.md +43 -4
  232. package/skills/cometchat-react-testing/SKILL.md +14 -5
  233. package/skills/cometchat-theming/SKILL.md +181 -18
  234. package/skills/cometchat-troubleshooting/SKILL.md +40 -20
@@ -1,12 +1,12 @@
1
1
  # Group calls — broadcast meeting pattern (Flutter V5)
2
2
 
3
- Group calls use a **different signaling channel than 1:1 user calls**. The Ringing flow (`CometChat.initiateCall` → `onIncomingCallReceived` on peer) is **1:1 user only**. For groups, the kit broadcasts a **custom message of type `"meeting"`** to the group; receivers see a "Join meeting" card in `CometChatMessageList` (kit) or need an explicit `MessageListener.onCustomMessageReceived` (custom UI).
3
+ Group calls use a **different signaling channel than 1:1 user calls**. The Ringing flow (`CometChat.initiateCall` → `onIncomingCallReceived` on peer) is **1:1 user only**. For groups, broadcast a **custom message of type `"meeting"`** to the group; receivers handle it via `MessageListener.onCustomMessageReceived` and join the WebRTC session whose `sessionId = group GUID`.
4
4
 
5
- By-design kit behavior — same semantic across all CometChat kits.
5
+ By-design signaling semantic — same across all CometChat kits.
6
6
 
7
7
  **Canonical docs:** https://www.cometchat.com/docs/calls/flutter/group-calls
8
8
 
9
- V5 specifics: Flutter V5 uses `cometchat_chat_uikit ^5.2` + `cometchat_calls_uikit ^5.0` (separate calls package). GetX-based state. The signaling semantic below is identical to Flutter V6.
9
+ V5 specifics: Flutter V5 uses `cometchat_chat_uikit ^5.2` (GetX chat kit) + the **raw `cometchat_calls_sdk ^5.0.2`** (direct dependency) — you build a custom meeting/ongoing-call surface. The signaling semantic below is identical to Flutter V6.
10
10
 
11
11
  ---
12
12
 
@@ -15,15 +15,14 @@ V5 specifics: Flutter V5 uses `cometchat_chat_uikit ^5.2` + `cometchat_calls_uik
15
15
  ```
16
16
  Caller (uidA, member of groupX) CometChat Receivers (members of groupX)
17
17
  │ │ │
18
- CometChatCallButtons sends │ │
19
- CustomMessage(GUID, GROUP, "meeting", │ │
20
- │ { callType, sessionId }) │ │
18
+ sendCustomMessage(GUID, GROUP, │ │
19
+ "meeting", { callType, sessionId }) │ │
21
20
  ├──────────────────────────────────────>│ │
22
21
  │ │ onCustomMessageReceived │
23
22
  │ ├─────────────────────────────>│
24
23
  │ caller pushes OngoingCallScreen │ receiver taps Join │
25
- │ with sessionID = groupGuid │ → CometChatUIKitCalls
26
- │ │ .startSession(...)
24
+ │ with sessionID = groupGuid │ → CometChatCalls
25
+ │ │ .joinSession(...)
27
26
  ├──────────────────────────────────────>│ <─────────────────────────── │
28
27
  │ ───── WebRTC session active (sessionId = group GUID) ─────│
29
28
  ```
@@ -39,26 +38,13 @@ Caller (uidA, member of groupX) CometChat Receivers (membe
39
38
 
40
39
  ## Hard rules
41
40
 
42
- 1. **Group calls broadcast a custom message; they do NOT use the call listener.** Custom UI must add a `MessageListener`.
41
+ 1. **Group calls broadcast a custom message; they do NOT use the call listener.** Add a `MessageListener`.
43
42
  2. **Session ID = group GUID.** Persistent.
44
- 3. **`CometChatUIKitCalls.init()` must complete AFTER `CometChatUIKit.init()`** (CALLS_INIT_AFTER_CHAT_INIT rule from SKILL.md) — same as 1:1.
45
- 4. **No `CometChat.endCall` for groups.** Use `CometChatUIKitCalls.endSession()` only.
43
+ 3. **`CometChatCalls.init()` must complete AFTER `CometChatUIKit.init()`** (CALLS_INIT_AFTER_CHAT_INIT rule from SKILL.md) — same as 1:1.
44
+ 4. **No `CometChat.endCall` for groups.** Use `CallSession.getInstance()?.leaveSession()` only.
46
45
 
47
46
  ---
48
47
 
49
- ## Caller side — kit-based
50
-
51
- ```dart
52
- import 'package:cometchat_calls_uikit/cometchat_calls_uikit.dart';
53
-
54
- // Inside a chat surface (e.g. inside CometChatMessageHeader):
55
- CometChatCallButtons(
56
- group: group,
57
- )
58
- ```
59
-
60
- Tap → kit sends meeting `CustomMessage` + pushes outgoing-call screen → transitions to ongoing call with `sessionId = group.guid`.
61
-
62
48
  ## Caller side — custom UI
63
49
 
64
50
  ```dart
@@ -97,10 +83,6 @@ Future<void> startGroupCall(String groupGuid, String callType) async {
97
83
 
98
84
  ---
99
85
 
100
- ## Receiver side — kit-based
101
-
102
- `CometChatMessageList(group: group)` auto-renders the meeting message as a "Join meeting" card. Tap → kit calls `generateToken` and pushes the ongoing-call screen with `sessionId = group.guid`.
103
-
104
86
  ## Receiver side — custom UI
105
87
 
106
88
  ```dart
@@ -138,6 +120,19 @@ void unregisterGroupMeetingListener() {
138
120
 
139
121
  Wire register in `initState` / GetX controller `onInit`, unregister in `dispose` / `onClose`. Register AFTER `CometChatUIKit.login()` succeeds.
140
122
 
123
+ On Join tap, join the WebRTC session with the group GUID as the sessionId (5.x raw SDK):
124
+
125
+ ```dart
126
+ CometChatCalls.joinSession( // cometchatcalls.dart:735
127
+ sessionId: groupGuid, // sessionId == group GUID
128
+ sessionSettings: (SessionSettingsBuilder()..setTitle('Meeting')).build(),
129
+ onSuccess: (Widget? widget) { /* render via SizedBox.expand */ },
130
+ onError: (CometChatCallsException e) { /* surface */ },
131
+ );
132
+ ```
133
+
134
+ > **Legacy 4.x-kit alternative (incompatible with the 5.x calls SDK).** The old `cometchat_calls_uikit` path used `CometChatCallButtons(group: group)` for the caller, auto-rendered the meeting card in `CometChatMessageList(group: group)`, and joined via `CometChatUIKitCalls.startSession`. Those widgets are 4.x-bound and cannot run against `cometchat_calls_sdk ^5.0.2` — replicate with the custom-message + `joinSession` flow above.
135
+
141
136
  ---
142
137
 
143
138
  ## Edge cases
@@ -152,7 +147,7 @@ Meeting `CustomMessage.metadata.pushNotification = "meeting"` — delivered as r
152
147
 
153
148
  ### `navigatorKey` requirement (V5 too)
154
149
 
155
- If you use the kit's outgoing-call screen for groups, ensure `MaterialApp` has `navigatorKey: CallNavigationContext.navigatorKey` — same requirement as 1:1 (rule 1.7 in SKILL.md).
150
+ Set `MaterialApp.navigatorKey` to a plain `GlobalKey<NavigatorState>` so the meeting flow can navigate from anywhere — same requirement as 1:1 (rule 1.7 in SKILL.md). (Do NOT use `CallNavigationContext.navigatorKey` — that is a 4.x-kit symbol.)
156
151
 
157
152
  ---
158
153
 
@@ -168,12 +163,11 @@ If you use the kit's outgoing-call screen for groups, ensure `MaterialApp` has `
168
163
 
169
164
  ## Verification checklist
170
165
 
171
- - [ ] If using kit caller: `CometChatCallButtons(group: group)` tap initiates meeting message
172
- - [ ] If using custom caller: `CometChat.sendCustomMessage` called with `type: 'meeting'`, `category: MessageCategoryConstants.custom`, `customData: {callType, sessionId}`, `metadata: { pushNotification: 'meeting' }`
173
- - [ ] If using kit receiver: `CometChatMessageList(group: group)` renders meeting card
174
- - [ ] If using custom receiver: `CometChat.addMessageListener` registered with category+type filter, AFTER login
175
- - [ ] `MaterialApp.navigatorKey = CallNavigationContext.navigatorKey` set (kit-driven UI path)
176
- - [ ] On hangup: `CometChatUIKitCalls.endSession()` only (no `CometChat.endCall`)
166
+ - [ ] Caller: `CometChat.sendCustomMessage` called with `type: 'meeting'`, `category: MessageCategoryConstants.custom`, `customData: {callType, sessionId}`, `metadata: { pushNotification: 'meeting' }`
167
+ - [ ] Receiver: `CometChat.addMessageListener` registered with category+type filter, AFTER login
168
+ - [ ] Join action calls `CometChatCalls.joinSession(sessionId: groupGuid, ...)`
169
+ - [ ] `MaterialApp.navigatorKey` is a `GlobalKey<NavigatorState>`
170
+ - [ ] On hangup: `CallSession.getInstance()?.leaveSession()` only (no `CometChat.endCall`)
177
171
  - [ ] Late-joining tested
178
172
  - [ ] Push notifications fire for offline members
179
173
 
@@ -182,6 +176,6 @@ If you use the kit's outgoing-call screen for groups, ensure `MaterialApp` has `
182
176
  ## Pointers
183
177
 
184
178
  - `ringing-integration.md` — 1:1 user calls (different signaling channel)
185
- - `cometchat-flutter-v5-calls/SKILL.md` — V5 hard rules (cometchat_calls_uikit peer, Jetifier, etc.)
179
+ - `cometchat-flutter-v5-calls/SKILL.md` — V5 hard rules (raw `cometchat_calls_sdk ^5.0.2`, Jetifier, etc.)
186
180
  - Canonical docs: https://www.cometchat.com/docs/calls/flutter/group-calls
187
181
  - Cross-platform reference (semantic ground-truth): `cometchat-react-calls/references/group-calls.md`
@@ -1,6 +1,6 @@
1
- # Idle timeout on Flutter V5 (GetX-based)
1
+ # Idle timeout on Flutter V5 (GetX-based, 5.x Calls SDK)
2
2
 
3
- Same SDK API. Flutter-specific: `CallSettingsBuilder` setter API + `showDialog` / overlay for the prompt.
3
+ Flutter-specific: `SessionSettingsBuilder` setter API + `showDialog` / overlay for the prompt.
4
4
 
5
5
  **Canonical docs:** https://www.cometchat.com/docs/calls/flutter/idle-timeout
6
6
  **Read first:** `cometchat-react-calls/references/idle-timeout.md` — settings + archetype timeouts.
@@ -9,25 +9,26 @@ Same SDK API. Flutter-specific: `CallSettingsBuilder` setter API + `showDialog`
9
9
 
10
10
  ## SDK API
11
11
 
12
+ In 5.x the idle period is a single value (in **seconds**) on `SessionSettingsBuilder` — `setIdleTimeoutPeriod(int timeoutSeconds)` (`cometchat_calls_sdk-5.0.2` `src/builder/session_settings.dart:185`). There is no separate before/after-prompt split.
13
+
12
14
  ```dart
13
- import 'package:cometchat_calls_uikit/cometchat_calls_uikit.dart';
15
+ import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
14
16
 
15
- final settings = CallSettingsBuilder()
16
- ..setIdleTimeoutPeriodBeforePrompt = 60000
17
- ..setIdleTimeoutPeriodAfterPrompt = 120000;
18
- final builtSettings = settings.build();
17
+ final settings = (SessionSettingsBuilder()
18
+ ..setIdleTimeoutPeriod(180)) // seconds — session_settings.dart:185
19
+ .build();
19
20
  ```
20
21
 
21
- Listener — implement on the GetX controller (cf. `references/raise-hand.md`):
22
+ Listener — implement `SessionStatusListeners` on the GetX controller (cf. `references/raise-hand.md`); `onSessionTimedOut` is `src/listener/session_status_listeners.dart:22`:
22
23
 
23
24
  ```dart
24
- class CallController extends GetxController implements CometChatCallsEventsListener {
25
+ class CallController extends GetxController implements SessionStatusListeners {
25
26
  @override
26
27
  void onSessionTimedOut() {
27
28
  Get.snackbar('Call ended', 'You were inactive for too long');
28
29
  Get.until((route) => route.isFirst); // pop to home
29
30
  }
30
- // ... other handlers
31
+ // ... other SessionStatusListeners handlers (no-ops or pass-through)
31
32
  }
32
33
  ```
33
34
 
@@ -57,8 +58,9 @@ Future<void> showIdleTimeoutPrompt(BuildContext context) async {
57
58
  );
58
59
 
59
60
  if (result == 'end') {
60
- // CometChatCalls.endSession() does NOT exist on Flutter — use the CallSession instance.
61
- await CallSession.getInstance().leaveSession();
61
+ // 5.x teardown: the CallSession INSTANCE leaveSession() (call_session.dart:272).
62
+ // The static CometChatCalls.endSession exists but is @Deprecated.
63
+ await CallSession.getInstance()?.leaveSession();
62
64
  } else {
63
65
  // 'stay' or null — reset custom timer
64
66
  }
@@ -81,7 +83,7 @@ Web sister rules apply, plus Flutter-specific:
81
83
 
82
84
  ## Verification checklist
83
85
 
84
- - [ ] CallSettingsBuilder sets both idle periods
86
+ - [ ] `SessionSettingsBuilder()..setIdleTimeoutPeriod(seconds)` (single value, in seconds)
85
87
  - [ ] `onSessionTimedOut` snackbar + nav cleanup
86
88
  - [ ] Dialog `barrierDismissible: false`
87
89
  - [ ] `mounted` check before showing prompt
@@ -10,20 +10,23 @@ Same SDK shape. Flutter-specific: `showModalBottomSheet` with `isScrollControlle
10
10
  ## SDK API
11
11
 
12
12
  ```dart
13
- import 'package:cometchat_calls_uikit/cometchat_calls_uikit.dart';
13
+ import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
14
14
  import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
15
15
 
16
- // Wire chat button visibility via the call settings builder
17
- final settings = CallSettingsBuilder()
18
- ..hideChatButton = false;
16
+ // Wire chat button visibility via the (non-deprecated) SessionSettingsBuilder
17
+ final settings = (SessionSettingsBuilder()
18
+ ..hideChatButton(false)) // session_settings.dart:299
19
+ .build();
19
20
 
20
- // In your CometChatCallsEventsListener:
21
+ // The chat-button tap arrives on ButtonClickListeners (src/listener/button_click_listeners.dart:34),
22
+ // registered via CallSession.getInstance()?.addButtonClickListener(...) (call_session.dart:90):
21
23
  @override
22
24
  void onChatButtonClicked() {
23
25
  Get.find<CallController>().openChat();
24
26
  }
25
27
 
26
- CometChatCalls.setChatButtonUnreadCount(5);
28
+ // Unread badge — INSTANCE method on the session singleton (call_session.dart:489):
29
+ CallSession.getInstance()?.setChatButtonUnreadCount(5);
27
30
  ```
28
31
 
29
32
  ---
@@ -68,7 +71,7 @@ class CallController extends GetxController {
68
71
  enableDrag: true,
69
72
  );
70
73
  unread.value = 0;
71
- CometChatCalls.setChatButtonUnreadCount(0);
74
+ CallSession.getInstance()?.setChatButtonUnreadCount(0);
72
75
  }
73
76
  }
74
77
 
@@ -116,8 +119,8 @@ Web sister rules apply, plus Flutter-specific:
116
119
 
117
120
  ## Verification checklist
118
121
 
119
- - [ ] `hideChatButton = false` in CallSettings
120
- - [ ] `onChatButtonClicked` opens bottom sheet
122
+ - [ ] `SessionSettingsBuilder()..hideChatButton(false)`
123
+ - [ ] `onChatButtonClicked` (ButtonClickListeners, registered on `CallSession.getInstance()`) opens bottom sheet
121
124
  - [ ] `Get.bottomSheet` uses `isScrollControlled: true` + transparent barrier
122
125
  - [ ] `MediaQuery.viewInsets.bottom` padding for keyboard
123
126
  - [ ] Group resolved before opening sheet
@@ -1,19 +1,24 @@
1
- # CometChat Calls Flutter SDK v4 → v5 migration
1
+ # CometChat Calls Flutter SDK v4 → v5 migration (raw SDK)
2
2
 
3
- `cometchat_calls_uikit: ^5.0.15` is the v5 calls package for Flutterdrop-in replacement for the v4 calls SDK.
3
+ Moving the **Calls SDK** from 4.x to **`cometchat_calls_sdk ^5.0.2`** on the Flutter V5 (GetX) chat UI Kit per the product decision that all families use the V5 calls SDK.
4
4
 
5
- **Important:** This migrates the **Calls SDK** (v4v5), not the UI Kit cohort (V5 GetX → V6 Bloc, which is `cometchat-flutter-v6-migration`). You can be on UI Kit V5 + Calls SDK v5 they version independently.
5
+ **Important:** This migrates the **Calls SDK** (4.x5.x), not the chat UI Kit cohort (V5 GetX → V6 Bloc, which is `cometchat-flutter-v6-migration`). The chat UI Kit stays on V5 GetX; only the calls layer changes.
6
6
 
7
+ > **Why you can't just bump `cometchat_calls_uikit`.** The latest `cometchat_calls_uikit` (5.0.16) still transitively pins `cometchat_calls_sdk ^4.2.2`, and its prebuilt call widgets (`CometChatCallButtons`/`CometChatIncomingCall`/`CometChatOutgoingCall`/`CometChatOngoingCall`) are compiled against the 4.x API. To run the 5.x calls SDK you **drop `cometchat_calls_uikit`** and integrate the **raw `cometchat_calls_sdk ^5.0.2`** directly with a custom call surface.
8
+
9
+ **Substrate of record:** `~/.pub-cache/hosted/pub.dev/cometchat_calls_sdk-5.0.2/lib/`
7
10
  **Canonical docs:** https://www.cometchat.com/docs/calls/flutter/migration-guide-v5
8
11
 
9
12
  ---
10
13
 
11
- ## Step 1 — Bump pubspec
14
+ ## Step 1 — Swap the dependency
12
15
 
13
- ```yaml
14
- # pubspec.yaml
15
- dependencies:
16
- cometchat_calls_uikit: ^5.0.15
16
+ ```diff
17
+ # pubspec.yaml
18
+ dependencies:
19
+ cometchat_chat_uikit: ^5.2.14 # chat UI Kit stays on V5 (GetX)
20
+ - cometchat_calls_uikit: ^5.0.15 # 4.x-bound — remove
21
+ + cometchat_calls_sdk: ^5.0.2 # raw 5.x calls SDK (direct dependency)
17
22
  ```
18
23
 
19
24
  ```bash
@@ -25,110 +30,152 @@ cd ios && pod install # if you have iOS
25
30
 
26
31
  ## Step 2 — Migrate init
27
32
 
33
+ `init` takes a `CallAppSettings` built via `CallAppSettingBuilder` (`src/builder/call_app_settings_request.dart:36`) and runs with `onSuccess`/`onError` callbacks (`cometchatcalls.dart:172`).
34
+
28
35
  ```diff
29
36
  - final callSettings = CallAppSettingsBuilder()
30
37
  - ..setAppId('APP_ID')
31
38
  - ..setRegion('REGION');
32
39
  - await CometChatCalls.init(callSettings);
33
40
 
34
- + final settings = CallAppSettings(appId: 'APP_ID', region: 'REGION');
35
- + await CometChatCalls.init(settings);
41
+ + final callAppSettings = (CallAppSettingBuilder()
42
+ + ..appId = 'APP_ID'
43
+ + ..region = 'REGION')
44
+ + .build();
45
+ + CometChatCalls.init(
46
+ + callAppSettings,
47
+ + onSuccess: (String s) {},
48
+ + onError: (CometChatCallsException e) {},
49
+ + );
36
50
  ```
37
51
 
38
52
  ---
39
53
 
40
- ## Step 3 — Add Calls SDK login
54
+ ## Step 3 — Add the 5.x Calls SDK login
55
+
56
+ 4.x had no calls login (it took a per-call auth token). 5.x has its own login that caches the token internally (`cometchatcalls.dart:316`).
41
57
 
42
58
  ```dart
43
- // After CometChat.login completes
44
- final user = (await CometChatUIKit.getLoggedInUser())!;
45
- final authToken = user.authToken;
46
- await CometChatCalls.login(authToken: authToken);
59
+ // After CometChat.login completes:
60
+ final authToken = await CometChat.getUserAuthToken(); // static; no User.getAuthToken() method
61
+ if (authToken != null) {
62
+ CometChatCalls.loginWithAuthToken(
63
+ authToken: authToken,
64
+ onSuccess: (user) {},
65
+ onError: (CometChatCallsException e) {},
66
+ );
67
+ }
47
68
  ```
48
69
 
49
70
  ---
50
71
 
51
72
  ## Step 4 — Migrate session settings
52
73
 
74
+ `SessionSettingsBuilder` replaces `CallSettingsBuilder` (the latter is `@Deprecated`, `src/builder/call_settings.dart:209`). Methods are chainable / cascade setters (`src/builder/session_settings.dart`).
75
+
53
76
  ```diff
54
- - final callSettings = CallSettingsBuilder()
77
+ - final callSettings = (CallSettingsBuilder()
55
78
  - ..setSessionType(SessionType.video)
56
79
  - ..startWithAudioMuted(false)
57
- - ..showRecordingButton(true);
58
-
59
- + final sessionSettings = SessionSettings(
60
- + sessionType: SessionType.video,
61
- + startAudioMuted: false,
62
- + hideRecordingButton: false, // INVERTED
63
- + layout: CallLayout.tile,
64
- + );
80
+ - ..showRecordingButton(true))
81
+ - .build();
82
+
83
+ + final sessionSettings = (SessionSettingsBuilder()
84
+ + ..setType(SessionType.video) // session_settings.dart:197
85
+ + ..startAudioMuted(false) // :173
86
+ + ..startVideoPaused(false) // :167
87
+ + ..setLayout(LayoutType.tile) // :179
88
+ + ..hideRecordingButton(false)) // :227 (INVERTED sense vs show*)
89
+ + .build();
65
90
  ```
66
91
 
67
92
  ---
68
93
 
69
- ## Step 5 — Migrate listener to event subscriptions
94
+ ## Step 5 — Migrate the listener to the 5 split listeners
95
+
96
+ The single `CometChatCallsEventsListener` is `@Deprecated` (`src/listener/cometchat_calls_events_listener.dart:16`). 5.x splits events across `SessionStatusListeners`, `ParticipantEventListeners`, `MediaEventListeners`, `ButtonClickListeners`, `LayoutListeners` — registered on `CallSession.getInstance()` (after `joinSession.onSuccess`).
70
97
 
71
98
  ```diff
72
99
  - class MyEvents implements CometChatCallsEventsListener {
73
100
  - @override
74
101
  - void onCallEnded() { /* ... */ }
75
102
  - @override
76
- - void onUserJoined(User user) { /* ... */ }
103
+ - void onUserJoined(RTCUser user) { /* ... */ }
77
104
  - // ...
78
105
  - }
79
- - CometChatCalls.addCallsEventsListener('id', MyEvents());
80
-
81
- + final unsub1 = CometChatCalls.addEventListener(CallEvent.sessionLeft, () { /* ... */ });
82
- + final unsub2 = CometChatCalls.addEventListener(CallEvent.participantJoined, (participant) { /* ... */ });
83
- + final unsub3 = CometChatCalls.addEventListener(CallEvent.participantLeft, (participant) { /* ... */ });
106
+ - CometChatCalls.addCallsEventListeners('id', MyEvents());
107
+
108
+ + class MyEvents implements SessionStatusListeners, ParticipantEventListeners {
109
+ + @override
110
+ + void onSessionLeft() { /* was onCallEnded */ } // session_status_listeners.dart:10
111
+ + @override
112
+ + void onParticipantJoined(Participant p) { /* was onUserJoined */ } // participant_event_listeners.dart:12
113
+ + @override
114
+ + void onParticipantLeft(Participant p) { /* was onUserLeft */ } // :15
115
+ + // ... remaining interface methods (no-ops or pass-through)
116
+ + }
117
+ +
118
+ + // inside joinSession.onSuccess:
119
+ + final events = MyEvents();
120
+ + CallSession.getInstance()?.addSessionStatusListener(events); // call_session.dart:66
121
+ + CallSession.getInstance()?.addParticipantEventListener(events); // :74
84
122
  +
85
123
  + @override
86
124
  + void dispose() {
87
- + unsub1.call();
88
- + unsub2.call();
89
- + unsub3.call();
125
+ + CallSession.getInstance()?.removeSessionStatusListener(events);
126
+ + CallSession.getInstance()?.removeParticipantEventListener(events);
90
127
  + super.dispose();
91
128
  + }
92
129
  ```
93
130
 
94
131
  ---
95
132
 
96
- ## Step 6 — Method renames + receiver shift
133
+ ## Step 6 — Start/join + control method renames + receiver shift
97
134
 
98
- v5 moved most call-control APIs from static methods on `CometChatCalls` to **instance methods on `CallSession`** (the singleton fetched via `CallSession.getInstance()`). The static `endSession()` is preserved as a deprecated shim — the others were removed.
135
+ The two-step `generateToken` + `startSession` collapses into a single `joinSession` (`cometchatcalls.dart:735`). In-call controls move from static methods on `CometChatCalls` to **instance methods on `CallSession`** (the singleton via `CallSession.getInstance()`).
99
136
 
100
137
  ```diff
101
- // session lifecycle — receiver changes from CometChatCalls (static) to CallSession (singleton)
102
- - CometChatCalls.endSession()
103
- + await CallSession.getInstance()?.leaveSession()
104
-
105
- // media controls — same receiver shift
106
- - CometChatCalls.muteAudio(true)
107
- + CallSession.getInstance()?.muteAudio()
108
- - CometChatCalls.muteAudio(false)
109
- + CallSession.getInstance()?.unmuteAudio()
110
-
111
- - CometChatCalls.startScreenShare()
112
- + CallSession.getInstance()?.startScreenShare()
113
-
114
- // layout stays static
115
- - CometChatCalls.setMode(mode)
116
- + CometChatCalls.setLayout(layout)
138
+ // start the session
139
+ - CometChatCalls.generateToken(sessionId, authToken, onSuccess: (t) {
140
+ - CometChatCalls.startSession(t.token!, callSettings, onSuccess: (w) {}, onError: (e) {});
141
+ - }, onError: (e) {});
142
+ + CometChatCalls.joinSession(
143
+ + sessionId: sessionId, // SDK mints the call token internally
144
+ + sessionSettings: sessionSettings,
145
+ + onSuccess: (Widget? w) {},
146
+ + onError: (CometChatCallsException e) {},
147
+ + );
148
+
149
+ // teardown — receiver changes from CometChatCalls (static) to CallSession (singleton)
150
+ - CometChatCalls.endSession(onSuccess: (_) {}, onError: (e) {})
151
+ + await CallSession.getInstance()?.leaveSession() // call_session.dart:272
152
+
153
+ // media controls — same receiver shift, now no-arg
154
+ - CometChatCalls.muteAudio()
155
+ + CallSession.getInstance()?.muteAudio() // call_session.dart:131
156
+ + CallSession.getInstance()?.unMuteAudio() // :145
157
+ - CometChatCalls.pauseVideo() / resumeVideo()
158
+ + CallSession.getInstance()?.pauseVideo() / resumeVideo() // :168 / :182
159
+
160
+ // layout — also moves to the instance (NOT static in 5.x)
161
+ - CometChatCalls.setLayout(CallLayout.spotlight)
162
+ + CallSession.getInstance()?.setLayout(LayoutType.spotlight) // :394
117
163
  ```
118
164
 
119
- **`CallSession.getInstance()` returns `CallSession?` (nullable)** — null when there's no active session. Use `?.` to safely chain; calling on null is a no-op.
165
+ **`CallSession.getInstance()` returns `CallSession?` (nullable)** — null when there's no active session. Use `?.` to safely chain.
120
166
 
121
167
  ---
122
168
 
123
169
  ## Step 7 — GetX state preservation
124
170
 
125
- If you're using GetX controllers around the calls (per `cometchat-flutter-v5-calls/SKILL.md`), the state shape doesn't change — only the underlying SDK calls. Sample diff in a GetX controller:
171
+ If you use GetX controllers around the calls (per `cometchat-flutter-v5-calls/SKILL.md`), the state shape doesn't change — only the underlying SDK calls. Sample diff in a GetX controller:
126
172
 
127
173
  ```diff
128
174
  class CallController extends GetxController {
129
175
  void startCall(String sessionId) async {
130
- - await CometChatCalls.startSession(sessionId, settings: callSettings);
131
- + await CometChatCalls.joinSession(sessionId, settings: sessionSettings);
176
+ - await CometChatCalls.startSession(callToken, settings: callSettings);
177
+ + CometChatCalls.joinSession(sessionId: sessionId, sessionSettings: sessionSettings,
178
+ + onSuccess: (w) {}, onError: (e) {});
132
179
  }
133
180
 
134
181
  void endCall() async {
@@ -142,19 +189,22 @@ If you're using GetX controllers around the calls (per `cometchat-flutter-v5-cal
142
189
 
143
190
  ## Verification checklist
144
191
 
145
- - [ ] `pubspec.yaml` lists `cometchat_calls_uikit: ^5.0.15` (or higher)
192
+ - [ ] `pubspec.yaml` lists `cometchat_calls_sdk: ^5.0.2` and NO `cometchat_calls_uikit`
146
193
  - [ ] `flutter pub get` + `pod install` succeed
147
- - [ ] `CometChatCalls.login(authToken:)` called after `CometChat.login`
148
- - [ ] CallSettingsBuilder replaced with `SessionSettings`
149
- - [ ] CometChatCallsEventsListener replaced with `addEventListener`
150
- - [ ] Method renames applied
151
- - [ ] GetX controllers updated to v5 method names
152
- - [ ] Real-device smoke: iOS + Android, incoming/outgoing/mute/screenshare
194
+ - [ ] `CometChatCalls.loginWithAuthToken(authToken:)` called after `CometChat.login`
195
+ - [ ] `CallSettingsBuilder` replaced with `SessionSettingsBuilder`
196
+ - [ ] Single `CometChatCallsEventsListener` replaced with the 5 split listeners on `CallSession.getInstance()`
197
+ - [ ] `generateToken` + `startSession` collapsed into `joinSession(sessionId:, sessionSettings:, ...)`
198
+ - [ ] In-call controls + `leaveSession` moved to `CallSession.getInstance()?.X()`
199
+ - [ ] Prebuilt `cometchat_calls_uikit` call widgets removed; custom call surface in place
200
+ - [ ] Real-device smoke: iOS + Android, incoming/outgoing/mute/layout/leave
153
201
 
154
202
  ---
155
203
 
156
204
  ## Pointers
157
205
 
158
206
  - Canonical migration: https://www.cometchat.com/docs/calls/flutter/migration-guide-v5
159
- - `cometchat-flutter-v5-calls/SKILL.md` — Flutter calls architecture (GetX patterns)
160
- - `cometchat-flutter-v6-calls/`V6 cohort (Bloc); V6 starts on Calls SDK v5 — no migration needed
207
+ - `cometchat-flutter-v5-calls/SKILL.md` — Flutter calls architecture on the 5.x SDK (GetX patterns)
208
+ - `cometchat-flutter-v5-calls/references/call-session.md`canonical 5.x SDK API surface
209
+ - `cometchat-flutter-v6-calls/` — V6 cohort (Bloc) on the SAME 5.0.2 calls SDK
210
+ ```