@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,9 +1,8 @@
1
1
  ---
2
2
  name: cometchat-android-v6-migration
3
- description: V5→V6 migration recipes for native Android. CometChat ships V5 (chat-uikit-android:5.x — Java + Kotlin Views) and V6 beta (chatuikit-{compose,kotlin}-android:6.x — Compose surface OR Kotlin Views, calls bundled) side-by-side. Covers when to migrate vs stay, the cohort-selection decision (Compose vs Kotlin Views on V6), gradle dependency rewrites, builder API changes (UIKitSettings replaces UIKitSettingsBuilder), theme system rewrite (CometChatTheme.DayNight), calls integration delta (calls bundled drop calls-sdk-android), Activity theme rules, side-by-side cohort selection during migration, and a verification checklist.
3
+ description: V5→V6 migration recipes for native Android. CometChat ships V5 (chat-uikit-android:5.x — Java + Kotlin Views) and V6 (chatuikit-{compose,kotlin}-android:6.x — GA 2026-05-25 — Compose surface OR Kotlin Views, calls bundled) side-by-side. Covers when to migrate vs stay, the cohort-selection decision (Compose vs Kotlin Views on V6), gradle dependency rewrites, builder API changes (UIKitSettings replaces UIKitSettingsBuilder), theme system rewrite (CometChatTheme.DayNight), calls integration delta (calling UI bundled, but calls-sdk-android:5.0.+ is still a required peer dep), Activity theme rules, side-by-side cohort selection during migration, and a verification checklist.
4
4
  license: "MIT"
5
- compatibility: "Migrating FROM com.cometchat:chat-uikit-android:5.x TO com.cometchat:chatuikit-{compose,kotlin}-android:6.0.0-beta2; minSdk 28+ (V6 raised the floor from 21 to 28); Kotlin >= 1.9 for V6 Compose"
6
- allowed-tools: "shell, file-read, file-search, file-list, ask-user"
5
+ compatibility: "Migrating FROM com.cometchat:chat-uikit-android:5.x TO com.cometchat:chatuikit-{compose,kotlin}-android:6.0.+; minSdk 28+ (V6 raised the floor from 21 to 28); Kotlin >= 1.9 for V6 Compose"
7
6
  metadata:
8
7
  author: "CometChat"
9
8
  version: "4.0.0"
@@ -12,7 +11,7 @@ metadata:
12
11
 
13
12
  ## Purpose
14
13
 
15
- Migration recipes for moving from CometChat Android UIKit V5 (`chat-uikit-android:5.x`) to V6 (`chatuikit-{compose,kotlin}-android:6.0.0-beta2`). V6 is beta most production apps should stay on V5 today; this skill is for teams evaluating V6 or planning the eventual migration.
14
+ Migration recipes for moving from CometChat Android UIKit V5 (`chat-uikit-android:5.x`) to V6 (`chatuikit-{compose,kotlin}-android:6.0.+`). V6 is stable (GA 2026-05-25) and the recommended target for new apps; existing V5 apps can migrate when ready there's no forced timeline, and V5 remains supported. This skill covers both the decision and the mechanics.
16
15
 
17
16
  V6 is a different SDK, not a drop-in replacement. The migration is roughly the size of jumping from React Native UIKit v5 to v6 — package coordinates, builder APIs, theme system, calls handling all change.
18
17
 
@@ -23,9 +22,9 @@ V6 is a different SDK, not a drop-in replacement. The migration is roughly the s
23
22
  - `cometchat-android-v6-{compose,kotlin}-{components,placement,theming,customization}` — surface-specific destination skills
24
23
  - `cometchat-android-v6-calls` — calls migration (calls SDK is bundled in V6)
25
24
 
26
- **Ground truth:**
25
+ **Ground truth:** **Official docs:** https://www.cometchat.com/docs/ui-kit/android/v6/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP).
27
26
  - V5 source — installed `com.cometchat:chat-uikit-android@5.x` artifacts under `~/.gradle/caches/`
28
- - V6 source — installed `chatuikit-{compose,kotlin}-android@6.0.0-beta2` artifacts
27
+ - V6 source — installed `chatuikit-{compose,kotlin}-android@6.0.+` artifacts
29
28
  - Sister skill — `cometchat-flutter-v6-migration` (different platform, same migration shape)
30
29
 
31
30
  ---
@@ -44,7 +43,7 @@ V6 is a different SDK, not a drop-in replacement. The migration is roughly the s
44
43
  - You're starting a new project
45
44
  - You're rewriting your existing app's UI to Compose anyway
46
45
  - You need V6 features that aren't backported to V5 (e.g. some AI Agent components)
47
- - You've validated V6 beta against your use cases on a sample project first
46
+ - You've validated V6 against your use cases on a sample project first
48
47
 
49
48
  **The dispatcher (`cometchat-android-v6`) routes by detected version.** Both V5 and V6 skill sets ship in `npx @cometchat/skills add --family android` — the migration here lives under V6 because that's the destination cohort.
50
49
 
@@ -56,8 +55,8 @@ V6 is split into two surfaces:
56
55
 
57
56
  | Surface | Package | When to pick |
58
57
  |---|---|---|
59
- | Compose | `com.cometchat:chatuikit-compose-android:6.0.0-beta2` | New apps; existing apps already on Compose |
60
- | Kotlin Views | `com.cometchat:chatuikit-kotlin-android:6.0.0-beta2` | Existing apps on Java + XML layouts; teams not ready for Compose |
58
+ | Compose | `com.cometchat:chatuikit-compose-android:6.0.+` | New apps; existing apps already on Compose |
59
+ | Kotlin Views | `com.cometchat:chatuikit-kotlin-android:6.0.+` | Existing apps on Java + XML layouts; teams not ready for Compose |
61
60
 
62
61
  **You can mix both in the same app**, but a single chat surface is one or the other — not both.
63
62
 
@@ -81,7 +80,7 @@ dependencies {
81
80
 
82
81
  ```kotlin
83
82
  dependencies {
84
- implementation("com.cometchat:chatuikit-compose-android:6.0.0-beta2")
83
+ implementation("com.cometchat:chatuikit-compose-android:6.0.+")
85
84
  // No separate calls SDK — calls bundled into the same artifact
86
85
  // Compose dependencies (if not already present)
87
86
  implementation(platform("androidx.compose:compose-bom:2024.02.00"))
@@ -95,7 +94,7 @@ dependencies {
95
94
 
96
95
  ```kotlin
97
96
  dependencies {
98
- implementation("com.cometchat:chatuikit-kotlin-android:6.0.0-beta2")
97
+ implementation("com.cometchat:chatuikit-kotlin-android:6.0.+")
99
98
  // No separate calls SDK
100
99
  // Material Components for theming (`CometChatTheme.DayNight` extends Material themes)
101
100
  implementation("com.google.android.material:material:1.11.+")
@@ -135,30 +134,28 @@ CometChatUIKit.init(this, settings, object : CometChat.CallbackListener<String>(
135
134
  })
136
135
  ```
137
136
 
138
- ### V6 — `UIKitSettings.Builder()`
137
+ ### V6 — `UIKitSettings.UIKitSettingsBuilder()`
139
138
 
140
139
  ```kotlin
141
- val settings = UIKitSettings.Builder()
140
+ val settings = UIKitSettings.UIKitSettingsBuilder()
142
141
  .setAppId(BuildConfig.COMETCHAT_APP_ID)
143
142
  .setRegion(BuildConfig.COMETCHAT_REGION)
144
143
  .setAuthKey(BuildConfig.COMETCHAT_AUTH_KEY)
145
144
  .subscribePresenceForAllUsers()
146
- .enableCalling() // ← calls toggled on here, not via separate SDK
145
+ .setEnableCalling(true) // ← calls toggled on here, not via separate SDK
147
146
  .build()
148
147
 
149
- CometChatUIKit.init(this, settings) { result ->
150
- when (result) {
151
- is CometChatUIKit.Result.Success -> { /* ... */ }
152
- is CometChatUIKit.Result.Error -> { /* surface to UI */ }
153
- }
154
- }
148
+ CometChatUIKit.init(this, settings, object : CometChat.CallbackListener<String>() {
149
+ override fun onSuccess(result: String) { /* ... */ }
150
+ override fun onError(e: CometChatException) { /* surface to UI */ }
151
+ })
155
152
  ```
156
153
 
157
154
  Differences:
158
155
 
159
- - Class name: `UIKitSettingsBuilder` `UIKitSettings.Builder()`
160
- - Calls: separate SDK init → `.enableCalling()` flag
161
- - Result: `CallbackListener` `Result.Success` / `Result.Error` sealed class
156
+ - Builder: unchanged both V5 and V6 use `UIKitSettings.UIKitSettingsBuilder()` (nested class)
157
+ - Calls: separate SDK init → `.setEnableCalling(true)` flag on the builder
158
+ - Result handling: unchanged — `init()`/`login()` still take `CometChat.CallbackListener<T>` (onSuccess/onError). There is **no** `Result.Success`/`Result.Error` sealed class in V6.
162
159
 
163
160
  For full builder option mapping, see `cometchat-android-v6-builder-settings`.
164
161
 
@@ -166,7 +163,7 @@ For full builder option mapping, see `cometchat-android-v6-builder-settings`.
166
163
 
167
164
  ## 5. Calls integration migration
168
165
 
169
- V5 has a separate `calls-sdk-android` artifact + a separate `CometChatCalls.init`. V6 bundles calls into `chatuikit-{compose,kotlin}-android` and toggles via `.enableCalling()`.
166
+ V5 has a separate `calls-sdk-android` artifact + a separate `CometChatCalls.init`. V6 bundles calls into `chatuikit-{compose,kotlin}-android` and toggles via `.setEnableCalling(true)`.
170
167
 
171
168
  ### V5 calls init
172
169
 
@@ -184,12 +181,17 @@ CometChatCalls.init(this, callAppSettings, /* callback */)
184
181
  ### V6 calls init
185
182
 
186
183
  ```kotlin
187
- val settings = UIKitSettings.Builder()
184
+ val settings = UIKitSettings.UIKitSettingsBuilder()
188
185
  // ... appId, region, authKey ...
189
- .enableCalling() // ← that's it; calls SDK init happens internally
186
+ .setEnableCalling(true) // ← that's it; calls SDK init happens internally
190
187
  .build()
191
188
 
192
- CometChatUIKit.init(this, settings) { /* ... */ }
189
+ // init takes a CometChat.CallbackListener<String> (an abstract class NOT a
190
+ // fun interface), so use the object form, not a trailing lambda.
191
+ CometChatUIKit.init(this, settings, object : CometChat.CallbackListener<String>() {
192
+ override fun onSuccess(result: String) { /* ready */ }
193
+ override fun onError(e: CometChatException) { /* handle */ }
194
+ })
193
195
  ```
194
196
 
195
197
  ### Permissions + manifest carry over
@@ -255,7 +257,7 @@ This is documented in `cometchat-android-v6-troubleshooting` and surfaced in the
255
257
  1. Audit V5 theme attrs (`grep cometchat res/values/`)
256
258
  2. Map each to its V6 equivalent (most are same names; some have been renamed for Material 3 alignment)
257
259
  3. Activity manifest: change `android:theme="@style/Theme.AppCompat.*"` → `android:theme="@style/Theme.YourApp"` where the new theme inherits `CometChatTheme.DayNight`
258
- 4. Programmatic theme overrides: rewrite via Compose `CometChatTheme(colorScheme = ...)` or Kotlin Views `CometChatTheme.singleton.colors.primary = ...` (depending on surface)
260
+ 4. Programmatic theme overrides: rewrite via Compose `CometChatTheme(colorScheme = ...)` or Kotlin Views `CometChatTheme.setPrimaryColor(...)` (the `CometChatTheme` object exposes `setPrimaryColor`/`setExtendedPrimaryColor*`/`setNeutralColor*` etc. — there is no `.singleton.colors` field; depends on surface)
259
261
 
260
262
  For full mapping, see `cometchat-android-v6-{compose,kotlin}-theming`.
261
263
 
@@ -275,24 +277,24 @@ import com.cometchat.chatuikit.messages.CometChatMessageList
275
277
  ### V6 Compose imports
276
278
 
277
279
  ```kotlin
278
- import com.cometchat.chatuikit.compose.conversations.CometChatConversations
279
- import com.cometchat.chatuikit.compose.messages.CometChatMessageList
280
+ import com.cometchat.uikit.compose.presentation.conversations.ui.CometChatConversations
281
+ import com.cometchat.uikit.compose.presentation.messagelist.ui.CometChatMessageList
280
282
  ```
281
283
 
282
284
  ### V6 Kotlin Views imports
283
285
 
284
286
  ```kotlin
285
- import com.cometchat.chatuikit.kotlin.conversations.CometChatConversations
286
- import com.cometchat.chatuikit.kotlin.messages.CometChatMessageList
287
+ import com.cometchat.uikit.kotlin.presentation.conversations.ui.CometChatConversations
288
+ import com.cometchat.uikit.kotlin.presentation.messagelist.ui.CometChatMessageList
287
289
  ```
288
290
 
289
- The skill rewrites imports during migration. Most projects can do a regex sweep:
291
+ The skill rewrites imports during migration. The V6 namespace is `com.cometchat.uikit.{compose,kotlin}.presentation.<feature>.ui` — NOT the V5 `com.cometchat.chatuikit.*`. Most projects can do a regex sweep:
290
292
 
291
293
  ```bash
292
294
  # Compose path
293
- sed -i 's|com.cometchat.chatuikit.conversations|com.cometchat.chatuikit.compose.conversations|g' app/src/main/kotlin/**/*.kt
295
+ sed -i -E 's|com.cometchat.chatuikit.([a-z]+)|com.cometchat.uikit.compose.presentation.\1.ui|g' app/src/main/kotlin/**/*.kt
294
296
  # Kotlin Views path
295
- sed -i 's|com.cometchat.chatuikit.conversations|com.cometchat.chatuikit.kotlin.conversations|g' app/src/main/kotlin/**/*.kt
297
+ sed -i -E 's|com.cometchat.chatuikit.([a-z]+)|com.cometchat.uikit.kotlin.presentation.\1.ui|g' app/src/main/kotlin/**/*.kt
296
298
  ```
297
299
 
298
300
  But verify each rewrite — some V5 modules have been split or merged in V6 in ways the agent should review case-by-case.
@@ -326,14 +328,14 @@ For an in-progress migration, you can have V5 and V6 in the same module temporar
326
328
 
327
329
  □ Update gradle
328
330
  □ Remove chat-uikit-android:5.x
329
- □ KEEP calls-sdk-android:5.0.+ (V6 needs it as peer dep — see §"Drop the calls-sdk-android dependency" above)
330
- □ Add chatuikit-{compose,kotlin}-android:6.0.0-beta2
331
+ □ KEEP calls-sdk-android:5.0.+ (V6 needs it as peer dep — see §"KEEP calls-sdk-android:5.0.+" above)
332
+ □ Add chatuikit-{compose,kotlin}-android:6.0.+
331
333
  □ Add Compose deps (if applicable) or Material Components (if Kotlin Views)
332
334
 
333
335
  □ Rewrite init
334
- □ UIKitSettingsBuilder → UIKitSettings.Builder()
335
- □ Drop separate CometChatCalls.init; add .enableCalling() on UIKitSettings
336
- □ CallbackListener Result sealed class
336
+ □ UIKitSettingsBuilder → UIKitSettings.UIKitSettingsBuilder()
337
+ □ Drop separate CometChatCalls.init; add .setEnableCalling(true) on UIKitSettings
338
+ init callback stays CometChat.CallbackListener<String> (V6 did NOT switch to a Result/sealed-class API)
337
339
 
338
340
  □ Rewrite themes
339
341
  □ Activity theme parent → CometChatTheme.DayNight (Kotlin Views)
@@ -379,8 +381,8 @@ For an in-progress migration, you can have V5 and V6 in the same module temporar
379
381
  - [ ] `app/build.gradle.kts` has only one CometChat dep tree (V5 OR V6, not both)
380
382
  - [ ] `minSdk = 28` or higher
381
383
  - [ ] All V5 imports rewritten to the V6 surface (`compose` or `kotlin` namespace)
382
- - [ ] `UIKitSettingsBuilder` → `UIKitSettings.Builder()` everywhere
383
- - [ ] `.enableCalling()` on the builder if calls are used
384
+ - [ ] `UIKitSettingsBuilder` → `UIKitSettings.UIKitSettingsBuilder()` everywhere
385
+ - [ ] `.setEnableCalling(true)` on the builder if calls are used
384
386
  - [ ] Activity themes inherit `CometChatTheme.DayNight` (Kotlin Views path)
385
387
  - [ ] No `CometChatCalls.init` calls outside what V6 does internally
386
388
  - [ ] `calls-sdk-android:5.0.+` retained as explicit peer dep (V6 needs it; despite vendor marketing of "bundled calls")
@@ -3,13 +3,14 @@ name: cometchat-android-v6-production
3
3
  description: "CometChat Android UIKit v6 production readiness — token auth, ProGuard/R8, security checklist, release configuration"
4
4
  license: "MIT"
5
5
  compatibility: "Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-compose-android:6.x / com.cometchat:chatuikit-kotlin-android:6.x"
6
- allowed-tools: "shell, file-read, file-search, file-list"
7
6
  metadata:
8
7
  author: "CometChat"
9
8
  version: "3.0.0"
10
9
  tags: "cometchat, android, production, security, proguard, release, auth-token"
11
10
  ---
12
11
 
12
+ > **Ground truth:** `com.cometchat:chatuikit-{compose,kotlin}-android:6.x` (+ `calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android/v6`. **Official docs:** https://www.cometchat.com/docs/fundamentals/user-auth · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
13
+
13
14
  > **Companion skills:** cometchat-android-v6-core (init/login), cometchat-android-v6-builder-settings (UIKitSettings), cometchat-android-v6-push (FCM)
14
15
 
15
16
  ## Purpose
@@ -165,11 +166,13 @@ implementation("androidx.compose.material3:material3")
165
166
  Pin CometChat SDK versions explicitly:
166
167
 
167
168
  ```kotlin
168
- implementation("com.cometchat:chatuikit-compose-android:6.0.0-beta2")
169
+ implementation("com.cometchat:chatuikit-compose-android:6.0.+")
169
170
  // or
170
- implementation("com.cometchat:chatuikit-kotlin-android:6.0.0-beta2")
171
+ implementation("com.cometchat:chatuikit-kotlin-android:6.0.+")
171
172
  ```
172
173
 
174
+ > Never pin `6.0.0-beta2` (or any `-beta` preview) in a production build — V6 went GA on 2026-05-25. The `6.0.+` dynamic pin tracks GA patches forward (ENG-35701). Pin an exact GA patch (e.g. `6.0.1`) if your release process requires reproducible builds.
175
+
173
176
  ## 6. minSdk 28 Implications
174
177
 
175
178
  v6 requires `minSdk = 28` (Android 9.0 Pie). This means:
@@ -3,13 +3,14 @@ name: cometchat-android-v6-push
3
3
  description: "CometChat Android UIKit v6 push notifications — FCM setup, chat/call notification handling, VoIP integration, and deep-linking"
4
4
  license: "MIT"
5
5
  compatibility: "Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-compose-android:6.x / com.cometchat:chatuikit-kotlin-android:6.x"
6
- allowed-tools: "shell, file-read, file-search, file-list"
7
6
  metadata:
8
7
  author: "CometChat"
9
8
  version: "3.0.0"
10
9
  tags: "cometchat, android, push, fcm, firebase, voip, notifications, calls"
11
10
  ---
12
11
 
12
+ > **Ground truth:** `com.cometchat:chatuikit-{compose,kotlin}-android:6.x` (+ `calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android/v6`. **Official docs:** https://www.cometchat.com/docs/notifications/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
13
+
13
14
  > **Companion skills:** cometchat-android-v6-core (init/login), cometchat-android-v6-events (call events), cometchat-android-v6-builder-settings (calling config)
14
15
 
15
16
  ## Purpose
@@ -58,9 +59,49 @@ Add `google-services.json` to your app module's root directory.
58
59
  FirebaseApp.initializeApp(this)
59
60
  ```
60
61
 
62
+ ### 1.3 Register / unregister the push token (the kit's ONLY public push API)
63
+
64
+ This is the single load-bearing client step. `CometChatNotifications.registerPushToken(...)` binds the FCM token to the logged-in CometChat user; `unregisterPushToken(...)` clears it. The Android `PushPlatforms` constant is **`FCM_ANDROID`** (verified in `com.cometchat.chat.enums.PushPlatforms` — the only Android value). Everything in §2 onward is sample-app glue you control; *this* is the real API.
65
+
66
+ ```kotlin
67
+ import com.cometchat.chat.core.CometChatNotifications
68
+ import com.cometchat.chat.enums.PushPlatforms
69
+ import com.cometchat.chat.exceptions.CometChatException
70
+ import com.google.firebase.messaging.FirebaseMessaging
71
+
72
+ // Call AFTER CometChatUIKit.login(...) resolves (a token registered before
73
+ // login is not bound to a user). Also call from FCMService.onNewToken when a
74
+ // session already exists (token rotation).
75
+ fun registerPushToken() {
76
+ FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
77
+ if (!task.isSuccessful) return@addOnCompleteListener
78
+ CometChatNotifications.registerPushToken(
79
+ task.result,
80
+ PushPlatforms.FCM_ANDROID,
81
+ "YOUR_PROVIDER_ID", // FCM Provider ID from the CometChat dashboard (§4 setup)
82
+ object : CometChat.CallbackListener<String>() {
83
+ override fun onSuccess(s: String?) { /* registered */ }
84
+ override fun onError(e: CometChatException) { /* log + retry */ }
85
+ }
86
+ )
87
+ }
88
+ }
89
+
90
+ // Call BEFORE CometChatUIKit.logout() — otherwise the logged-out device keeps
91
+ // receiving pushes for the previous user.
92
+ fun unregisterPushToken(onDone: () -> Unit) {
93
+ CometChatNotifications.unregisterPushToken(object : CometChat.CallbackListener<String>() {
94
+ override fun onSuccess(s: String?) { onDone() }
95
+ override fun onError(e: CometChatException) { onDone() } // proceed with logout regardless
96
+ })
97
+ }
98
+ ```
99
+
100
+ Lifecycle: **register after login resolves** (and on `onNewToken` when a session exists), **unregister before logout**. This mirrors the verified `cometchat-android-v5-push` pattern — the registration API is identical across v5/v6 (it lives in the Chat SDK, not the UI Kit).
101
+
61
102
  ## 2. FCMService Implementation
62
103
 
63
- > **Heads-up — this is a reference pattern.** The classes referenced below (`CometChatVoIP`, `CometChatVoIPConnectionService`, `FCMMessageDTO`, `FCMCallDto`, `FCMService`, `VoIPPermissionListener`, `CometChatVoIPUtils`, `FCMMessageNotificationUtils`) are NOT exported from `com.cometchat:chatuikit-{compose,kotlin}-android:6.x`. They live in the `master-app-jetpack` sample app — copy the relevant source files into your project, or use them as a guide for writing your own equivalents. The kit's only public push surface is `CometChatNotifications.registerPushToken(...)` / `unregisterPushToken(...)`; everything below is glue you control.
104
+ > **Heads-up — this is a reference pattern.** The classes referenced below (`CometChatVoIP`, `CometChatVoIPConnectionService`, `FCMMessageDTO`, `FCMCallDto`, `FCMService`, `VoIPPermissionListener`, `CometChatVoIPUtils`, `FCMMessageNotificationUtils`) are NOT exported from `com.cometchat:chatuikit-{compose,kotlin}-android:6.x`. They are sample-app glue (derived from the CometChat Android push sample app — note: not present in the v6 kit clone, so treat them as a copy-in/reference pattern) — copy the relevant source files into your project, or use them as a guide for writing your own equivalents. The kit's only public push surface is `CometChatNotifications.registerPushToken(...)` / `unregisterPushToken(...)`; everything below is glue you control.
64
105
 
65
106
  Pattern from `master-app-jetpack/fcm/FCMService.kt` (sample-app code, copy into your project):
66
107
 
@@ -3,13 +3,14 @@ name: cometchat-android-v6-testing
3
3
  description: "CometChat Android UIKit v6 testing — unit testing ViewModels, Compose UI testing, Espresso, Maestro, and CI configuration"
4
4
  license: "MIT"
5
5
  compatibility: "Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-compose-android:6.x / com.cometchat:chatuikit-kotlin-android:6.x"
6
- allowed-tools: "shell, file-read, file-search, file-list"
7
6
  metadata:
8
7
  author: "CometChat"
9
8
  version: "3.0.0"
10
9
  tags: "cometchat, android, testing, junit, kotest, compose-testing, espresso, maestro"
11
10
  ---
12
11
 
12
+ > **Ground truth:** `com.cometchat:chatuikit-{compose,kotlin}-android:6.x` (+ `calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android/v6`. **Official docs:** https://www.cometchat.com/docs/ui-kit/android/v6/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
13
+
13
14
  > **Companion skills:** cometchat-android-v6-extensions (ViewModel/DataSource architecture), cometchat-android-v6-compose-components, cometchat-android-v6-kotlin-components
14
15
 
15
16
  ## Purpose
@@ -111,7 +112,7 @@ fun `emitting message event is received by collector`() = runTest {
111
112
  CometChatEvents.messageEvents.collect { events.add(it) }
112
113
  }
113
114
 
114
- CometChatEvents.emitMessageEventSync(
115
+ CometChatEvents.emitMessageEvent(
115
116
  CometChatMessageEvent.MessageSent(mockMessage, MessageStatus.SUCCESS)
116
117
  )
117
118
 
@@ -195,13 +196,15 @@ import io.kotest.property.forAll
195
196
  import io.kotest.property.Arb
196
197
  import io.kotest.property.arbitrary.string
197
198
 
198
- class BubbleFactoryKeyTest : FunSpec({
199
+ class BubbleFactoryTest : FunSpec({
199
200
 
200
- test("factory key format is always category_type") {
201
- forAll(Arb.string(1..20), Arb.string(1..20)) { category, type ->
202
- val key = BubbleFactory.getKey(category, type)
203
- key == "${category}_${type}"
204
- }
201
+ // NOTE: BubbleFactory has NO public getKey(category, type) helper — a factory
202
+ // is matched purely by the getCategory()/getType() pair it overrides. Test that
203
+ // your custom factory reports the category/type it intends to handle.
204
+ test("custom BubbleFactory reports its target category and type") {
205
+ val factory = MyPollBubbleFactory() // your BubbleFactory subclass
206
+ factory.getCategory() shouldBe "custom"
207
+ factory.getType() shouldBe "extension_poll"
205
208
  }
206
209
  })
207
210
  ```
@@ -3,13 +3,14 @@ name: cometchat-android-v6-troubleshooting
3
3
  description: "CometChat Android UIKit v6 troubleshooting — diagnostic table, common issues, and fixes for both Kotlin Views and Compose stacks"
4
4
  license: "MIT"
5
5
  compatibility: "Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-compose-android:6.x / com.cometchat:chatuikit-kotlin-android:6.x"
6
- allowed-tools: "shell, file-read, file-search, file-list"
7
6
  metadata:
8
7
  author: "CometChat"
9
8
  version: "3.0.1"
10
9
  tags: "cometchat, android, troubleshooting, debugging, errors, issues"
11
10
  ---
12
11
 
12
+ > **Ground truth:** `com.cometchat:chatuikit-{compose,kotlin}-android:6.x` (+ `calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android/v6`. **Official docs:** https://www.cometchat.com/docs/ui-kit/android/v6/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
13
+
13
14
  > **Companion skills:** cometchat-android-v6-core (init/login), cometchat-android-v6-compose-theming, cometchat-android-v6-kotlin-theming, cometchat-android-v6-push
14
15
 
15
16
  ## Purpose
@@ -49,6 +50,7 @@ Diagnose and fix common issues with CometChat Android UIKit v6 across both Kotli
49
50
  | Call notifications not showing | VoIP permissions missing | Request READ_PHONE_STATE, MANAGE_OWN_CALLS, ANSWER_PHONE_CALLS |
50
51
  | Calls SDK not initialized | `enableCalling` not set | Set `setEnableCalling(true)` on `UIKitSettingsBuilder` |
51
52
  | `CometChatCalls` class not found | Missing calls SDK dependency | Add `com.cometchat:calls-sdk-android` to dependencies |
53
+ | Calls broken on `chatuikit:6.0.0` (call button targets wrong user, in-call screen blank, etc.) | Known v6.0.0 calls defects — `CometChatCallButtons` captures the first-rendered user globally + 4 related bugs | Apply the **5 documented workarounds (W1–W5)** in `cometchat-android-v6-calls` (§"Five required workarounds"). The kit ships broken for calls at 6.0.0 but works end-to-end with W1–W5 (validated on device). Don't hand-patch blind — use that section. |
52
54
  | Build fails with duplicate classes | Conflicting annotation libs | Add `exclude(group = "org.jetbrains", module = "annotations-java5")` to configurations |
53
55
  | `compileSdk` error | SDK too low | Set `compileSdk = 36` |
54
56
  | `minSdk` error | API level too low | Set `minSdk = 28` — v6 requires Android 9.0+ |
@@ -155,6 +157,12 @@ If message list doesn't scroll properly, ensure the layout gives it flexible hei
155
157
 
156
158
  ## 5. Push Notification Issues
157
159
 
160
+ ### 5.0 No notifications shown on Android 13+ (API 33+)
161
+
162
+ - **Symptom**: FCM messages arrive (visible in logcat) but no system notification appears on Android 13+.
163
+ - **Cause**: `POST_NOTIFICATIONS` is a **runtime** permission on API 33+ — declaring it in the manifest isn't enough.
164
+ - **Fix**: Declare `<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>` AND request it at runtime (`ActivityCompat.requestPermissions(...)` / the Activity Result API) before you expect notifications. Below API 33 it's granted implicitly.
165
+
158
166
  ### 5.1 SDK Not Initialized in FCM Service
159
167
 
160
168
  ```kotlin
@@ -170,11 +178,24 @@ override fun onMessageReceived(message: RemoteMessage) {
170
178
 
171
179
  ### 5.2 VoIP Permission Check
172
180
 
181
+ > ⚠️ **`CometChatVoIP` is NOT a v6 kit/SDK API.** It exists only as an app-local helper in the **V5** sample app; the v6 sample even asserts it must not be referenced (`PreservationPropertyTest.kt:78`). Check the permissions directly with `ContextCompat.checkSelfPermission` (or copy the V5 helper into your project if you want its convenience wrappers):
182
+
173
183
  ```kotlin
174
- // All three permissions are required for VoIP
175
- val hasPermissions = CometChatVoIP.hasReadPhoneStatePermission(context) &&
176
- CometChatVoIP.hasManageOwnCallsPermission(context) &&
177
- CometChatVoIP.hasAnswerPhoneCallsPermission(context)
184
+ import androidx.core.content.ContextCompat
185
+ import android.content.pm.PackageManager
186
+ import android.Manifest
187
+
188
+ // All three permissions are required for VoIP calling
189
+ fun hasVoipPermissions(context: Context): Boolean {
190
+ val needed = listOf(
191
+ Manifest.permission.READ_PHONE_STATE,
192
+ Manifest.permission.MANAGE_OWN_CALLS,
193
+ Manifest.permission.ANSWER_PHONE_CALLS,
194
+ )
195
+ return needed.all {
196
+ ContextCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
197
+ }
198
+ }
178
199
  ```
179
200
 
180
201
  ## 6. Dependency Conflicts