@cometchat/skills 4.4.2 → 5.0.1

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 (518) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +44 -0
  4. package/LICENSE +21 -0
  5. package/MIGRATING.md +187 -0
  6. package/README.md +52 -156
  7. package/RULES.md +125 -0
  8. package/bin/cometchat-skills.mjs +1280 -0
  9. package/bin/legacy-skills.json +95 -0
  10. package/catalogs/android-v6.json +1646 -0
  11. package/catalogs/flutter-v6.json +651 -0
  12. package/catalogs/ios-v5.json +1383 -0
  13. package/catalogs/rn-calls-v5.json +134 -0
  14. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  15. package/catalogs/rn-sdk-v4.json +672 -0
  16. package/catalogs/rn-v5.json +449 -0
  17. package/catalogs/rn-v5.symbols.txt +216 -0
  18. package/catalogs/sdk-android-v5.json +514 -0
  19. package/contracts.android-calls-v5.json +122 -0
  20. package/contracts.android-v6.json +135 -0
  21. package/contracts.angular-v5.json +694 -0
  22. package/contracts.flutter-calls-v5.json +77 -0
  23. package/contracts.flutter-v6.json +126 -0
  24. package/contracts.ios-calls-v5.json +67 -0
  25. package/contracts.ios-v5.json +436 -0
  26. package/contracts.json +82 -0
  27. package/contracts.rn-calls-v5.json +77 -0
  28. package/contracts.rn-v5.json +727 -0
  29. package/contracts.sdk-android-v5.json +15 -0
  30. package/contracts.web-calls-v5.json +45 -0
  31. package/features.android-calls-v5.json +246 -0
  32. package/features.android-v6.json +65 -0
  33. package/features.angular-v5.json +521 -0
  34. package/features.flutter-calls-v5.json +286 -0
  35. package/features.flutter-v6.json +484 -0
  36. package/features.ios-calls-v5.json +236 -0
  37. package/features.ios-v5.json +573 -0
  38. package/features.json +61 -0
  39. package/features.rn-calls-v5.json +187 -0
  40. package/features.rn-v5.json +614 -0
  41. package/features.sdk-android-v5.json +40 -0
  42. package/features.sdk-jsv4.json +24 -0
  43. package/features.web-calls-v5.json +108 -0
  44. package/package.json +156 -74
  45. package/peers.yaml +355 -0
  46. package/registry/README.md +31 -0
  47. package/registry/android-calls-v5.json +94 -0
  48. package/registry/android-v6.json +177 -0
  49. package/registry/angular-v5.json +154 -0
  50. package/registry/flutter-calls-v5.json +94 -0
  51. package/registry/flutter-v6.json +159 -0
  52. package/registry/ios-calls-v5.json +99 -0
  53. package/registry/ios-v5.json +152 -0
  54. package/registry/rn-calls-v5.json +99 -0
  55. package/registry/rn-v5.json +169 -0
  56. package/registry/sdk-android-v5.json +93 -0
  57. package/registry/sdk-jsv4.json +93 -0
  58. package/registry/web-calls-v5.json +94 -0
  59. package/registry/web-v7.json +154 -0
  60. package/skills/cometchat/SKILL.md +47 -2096
  61. package/skills/cometchat-a11y/SKILL.md +44 -472
  62. package/skills/cometchat-analytics/SKILL.md +61 -0
  63. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  66. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  67. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  68. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  69. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  70. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  71. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  72. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  73. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  74. package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
  75. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  76. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  77. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  78. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  79. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  80. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  81. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  82. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  83. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  84. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  85. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  86. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  87. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  88. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  89. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  90. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  91. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  92. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  93. package/skills/cometchat-android-v6-production/SKILL.md +41 -179
  94. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  95. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  96. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  97. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  98. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  99. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  100. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  101. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  102. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  103. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  104. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  105. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  106. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  107. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  108. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  109. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  110. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  111. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  112. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  113. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  114. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  115. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  116. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  117. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  118. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  119. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  120. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  121. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  122. package/skills/cometchat-angular-v5-production/SKILL.md +102 -0
  123. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  124. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  125. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  126. package/skills/cometchat-audit/SKILL.md +61 -0
  127. package/skills/cometchat-compliance/SKILL.md +63 -0
  128. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  129. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  130. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  131. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  132. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  133. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
  134. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  135. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  136. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  137. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  138. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  139. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  140. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  141. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  142. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  143. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  144. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  145. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  146. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +132 -0
  147. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  148. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  149. package/skills/cometchat-flutter-v6-production/SKILL.md +59 -615
  150. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  151. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  152. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  153. package/skills/cometchat-i18n/SKILL.md +35 -404
  154. package/skills/cometchat-ios-calls/SKILL.md +112 -563
  155. package/skills/cometchat-ios-components/SKILL.md +44 -834
  156. package/skills/cometchat-ios-core/SKILL.md +182 -1068
  157. package/skills/cometchat-ios-core/references/anti-patterns.md +113 -0
  158. package/skills/cometchat-ios-core/references/docs-map.md +124 -0
  159. package/skills/cometchat-ios-core/references/install.md +23 -0
  160. package/skills/cometchat-ios-core/references/layout.md +219 -0
  161. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  162. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  163. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  164. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  165. package/skills/cometchat-ios-features/SKILL.md +29 -738
  166. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  167. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  168. package/skills/cometchat-ios-production/SKILL.md +67 -723
  169. package/skills/cometchat-ios-push/SKILL.md +24 -602
  170. package/skills/cometchat-ios-testing/SKILL.md +36 -355
  171. package/skills/cometchat-ios-troubleshooting/SKILL.md +31 -989
  172. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  173. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  174. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  175. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  176. package/skills/cometchat-migrate-from-getstream/SKILL.md +65 -0
  177. package/skills/cometchat-migrate-from-getstream/references/concept-map.md +98 -0
  178. package/skills/cometchat-migrate-from-getstream/references/data-migration.md +74 -0
  179. package/skills/cometchat-migrate-from-getstream/references/feature-map.md +108 -0
  180. package/skills/cometchat-migrate-from-getstream/references/inventory.md +82 -0
  181. package/skills/cometchat-migrate-from-getstream/references/native-build.md +9 -0
  182. package/skills/cometchat-migrate-from-getstream/references/report-template.md +59 -0
  183. package/skills/cometchat-migrate-from-sendbird/SKILL.md +64 -0
  184. package/skills/cometchat-migrate-from-sendbird/references/concept-map.md +99 -0
  185. package/skills/cometchat-migrate-from-sendbird/references/data-migration.md +74 -0
  186. package/skills/cometchat-migrate-from-sendbird/references/feature-map.md +104 -0
  187. package/skills/cometchat-migrate-from-sendbird/references/inventory.md +86 -0
  188. package/skills/cometchat-migrate-from-sendbird/references/native-build.md +10 -0
  189. package/skills/cometchat-migrate-from-sendbird/references/report-template.md +59 -0
  190. package/skills/cometchat-migrate-from-twilio/SKILL.md +52 -0
  191. package/skills/cometchat-migrate-from-twilio/references/concept-map.md +49 -0
  192. package/skills/cometchat-migrate-from-twilio/references/data-migration.md +50 -0
  193. package/skills/cometchat-migrate-from-twilio/references/feature-map.md +27 -0
  194. package/skills/cometchat-migrate-from-twilio/references/inventory.md +53 -0
  195. package/skills/cometchat-migrate-from-twilio/references/report-template.md +52 -0
  196. package/skills/cometchat-moderation/SKILL.md +58 -0
  197. package/skills/cometchat-onboarding/SKILL.md +92 -0
  198. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  199. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  200. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  201. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  202. package/skills/cometchat-onboarding/references/platforms.md +105 -0
  203. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  204. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  205. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  206. package/skills/cometchat-react-native-core/SKILL.md +335 -0
  207. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  208. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  209. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  210. package/skills/cometchat-react-native-core/references/docs-map.md +127 -0
  211. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  212. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  213. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  214. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  215. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  216. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  217. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  218. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  219. package/skills/cometchat-react-native-production/SKILL.md +79 -0
  220. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  221. package/skills/cometchat-react-native-sdk/SKILL.md +133 -0
  222. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  223. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  224. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  225. package/skills/cometchat-react-native-troubleshooting/SKILL.md +174 -0
  226. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  227. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  228. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  229. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  230. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  231. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  232. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  233. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  234. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  235. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  236. package/skills/cometchat-react-v7-core/references/layout.md +150 -0
  237. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  238. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  239. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  240. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  241. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  242. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  243. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  244. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  245. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  246. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  247. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  248. package/skills/cometchat-react-v7-production/SKILL.md +84 -0
  249. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  250. package/skills/cometchat-react-v7-testing/SKILL.md +60 -0
  251. package/skills/cometchat-react-v7-troubleshooting/SKILL.md +47 -0
  252. package/skills/cometchat-security/SKILL.md +80 -0
  253. package/skills/cometchat-self-host/SKILL.md +56 -0
  254. package/test-suite/README.md +70 -0
  255. package/test-suite/catalogs/android-calls-v5.json +830 -0
  256. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  257. package/test-suite/catalogs/android-v6.json +1646 -0
  258. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  259. package/test-suite/catalogs/angular-v5.json +7587 -0
  260. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  261. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  262. package/test-suite/catalogs/flutter-v6.json +651 -0
  263. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  264. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  265. package/test-suite/catalogs/ios-v5.json +1383 -0
  266. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  267. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  268. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  269. package/test-suite/catalogs/rn-v5.json +449 -0
  270. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  271. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  272. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  273. package/test-suite/catalogs/web-calls-v5.json +195 -0
  274. package/test-suite/catalogs/web-v7.json +1243 -0
  275. package/test-suite/scripts/build-registry.mjs +113 -0
  276. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  277. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  278. package/test-suite/scripts/lint-skills.mjs +932 -0
  279. package/test-suite/scripts/measure-tokens.mjs +169 -0
  280. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  281. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  282. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  283. package/test-suite/scripts/verify-catalog.mjs +242 -0
  284. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  285. package/test-suite/scripts/verify-detection.mjs +178 -0
  286. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  287. package/test-suite/scripts/verify-family-agnostic.mjs +134 -0
  288. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  289. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  290. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  291. package/test-suite/typecheck/angular-v5/package.json +21 -0
  292. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  293. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  294. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  295. package/test-suite/typecheck/web-v7/package.json +18 -0
  296. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  297. package/bin/install.js +0 -1003
  298. package/skills/.claude-plugin/marketplace.json +0 -86
  299. package/skills/cometchat/references/asking-questions.md +0 -48
  300. package/skills/cometchat-android-v5/SKILL.md +0 -121
  301. package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
  302. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  303. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  304. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  305. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  306. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  307. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  308. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  309. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  310. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  311. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  312. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  313. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  314. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  315. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  316. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  317. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  318. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  319. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  320. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  321. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  322. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  323. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  324. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  325. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  326. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  327. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  328. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  329. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  330. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  331. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  332. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  333. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  334. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  335. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  336. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  337. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  338. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  339. package/skills/cometchat-android-v6/SKILL.md +0 -108
  340. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  341. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  342. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  343. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  344. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  345. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  346. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  347. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  348. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  349. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  350. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  351. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  352. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  353. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  354. package/skills/cometchat-angular-calls/SKILL.md +0 -380
  355. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  356. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  357. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  358. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  359. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  360. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  361. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  362. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  363. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  364. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  365. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  366. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  367. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  368. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  369. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  370. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  371. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  372. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  373. package/skills/cometchat-angular-components/SKILL.md +0 -235
  374. package/skills/cometchat-angular-core/SKILL.md +0 -386
  375. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  376. package/skills/cometchat-angular-features/SKILL.md +0 -329
  377. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  378. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  379. package/skills/cometchat-angular-production/SKILL.md +0 -564
  380. package/skills/cometchat-angular-push/SKILL.md +0 -389
  381. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  382. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  383. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  384. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  385. package/skills/cometchat-calls/SKILL.md +0 -364
  386. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  387. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  388. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  389. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  390. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  391. package/skills/cometchat-components/SKILL.md +0 -1142
  392. package/skills/cometchat-core/SKILL.md +0 -1048
  393. package/skills/cometchat-customization/SKILL.md +0 -580
  394. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  395. package/skills/cometchat-features/SKILL.md +0 -861
  396. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  397. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
  398. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  399. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  400. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  401. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  402. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  403. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  404. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  405. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  406. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  407. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  408. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  409. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  410. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  411. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  412. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  413. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  414. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  415. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  416. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  417. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  418. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  419. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  420. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  421. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  422. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  423. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  424. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  425. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  426. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  427. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  428. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  429. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  430. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  431. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  432. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  433. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  434. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  435. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  436. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  437. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  438. package/skills/cometchat-ios/SKILL.md +0 -325
  439. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
  440. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  441. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  442. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  443. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  444. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  445. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  446. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  447. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  448. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  449. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  450. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  451. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  452. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  453. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  454. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  455. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  456. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  457. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  458. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  459. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  460. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  461. package/skills/cometchat-native-calls/SKILL.md +0 -671
  462. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  463. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  464. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  465. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  466. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  467. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  468. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  469. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  470. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  471. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  472. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  473. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  474. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  475. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  476. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  477. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  478. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  479. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  480. package/skills/cometchat-native-components/SKILL.md +0 -628
  481. package/skills/cometchat-native-core/SKILL.md +0 -679
  482. package/skills/cometchat-native-customization/SKILL.md +0 -716
  483. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  484. package/skills/cometchat-native-features/SKILL.md +0 -638
  485. package/skills/cometchat-native-placement/SKILL.md +0 -509
  486. package/skills/cometchat-native-production/SKILL.md +0 -700
  487. package/skills/cometchat-native-push/SKILL.md +0 -594
  488. package/skills/cometchat-native-testing/SKILL.md +0 -582
  489. package/skills/cometchat-native-theming/SKILL.md +0 -681
  490. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  491. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  492. package/skills/cometchat-placement/SKILL.md +0 -1360
  493. package/skills/cometchat-production/SKILL.md +0 -1027
  494. package/skills/cometchat-react-calls/SKILL.md +0 -752
  495. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  496. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  497. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  498. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  499. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  500. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  501. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  502. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  503. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  504. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  505. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  506. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  507. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  508. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  509. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  510. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  511. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  512. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  513. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  514. package/skills/cometchat-react-push/SKILL.md +0 -634
  515. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  516. package/skills/cometchat-react-testing/SKILL.md +0 -413
  517. package/skills/cometchat-theming/SKILL.md +0 -498
  518. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -0,0 +1,31 @@
1
+ # anti-patterns — real bugs, do NOT do these (Android v6)
2
+
3
+ > Ground truth: `ui-kit/android/getting-started-kotlin.md` / `getting-started-jetpack.md` (order Warnings), `troubleshooting.md` (docs), `conversation-message-view.md`, installed 6.0.5 kit source; verified 2026-08-20. Each entry: name → symptom → why → fix.
4
+
5
+ 1. **Hardcoded credentials in source.** *Symptom:* App ID/Auth Key string literals in a Kotlin file (the docs' `"APP_ID"` placeholders copied verbatim), key visible in git/APK. *Why:* credentials in code get committed and shipped; rotating them means a code change. *Fix:* the gitignored `assets/cometchat-settings.json` read by `initFromSettings` (`setup-credentials.md` §4); build-time extras via `local.properties` → `BuildConfig`.
6
+
7
+ 2. **Classic `init()` instead of `initFromSettings`.** *Symptom:* works, but integration telemetry attribution is lost. *Why:* only `CometChatUIKit.initFromSettings(context, callback)` persists `integrationSource="ai-agent"` (and auto-inits the Calls SDK from `uiKit.enableCalling`). *Fix:* always init via `initFromSettings` + the settings JSON; use `init(context, UIKitSettings, callback)` only on an explicit user request for programmatic settings (`lifecycle.md`).
8
+
9
+ 3. **`cometchat-settings.json` committed to git / Auth Key left in a release build.** *Symptom:* the dev Auth Key is in the repo history or shipped inside the APK's assets. *Why:* the Auth Key authenticates ANY UID — a leaked key is full account takeover of your chat app. *Fix:* gitignore `app/src/main/assets/cometchat-settings.json`; prod builds OMIT `credentials.authKey` and log in with a server-minted auth token (`loginWithAuthToken`).
10
+
11
+ 4. **Login before init resolves.** *Symptom:* login "fails silently" — no user, no obvious error, blank chat. *Why:* the docs Warning is explicit: *"`init()` must resolve before you call `login()`. Calling `login()` before init completes will fail silently."* *Fix:* call `login` ONLY inside init's `onSuccess` (`lifecycle.md`).
12
+
13
+ 5. **Rendering chat before init/login resolve.** *Symptom:* blank screen or a component stuck on its loading state, no data. *Why:* every `CometChat*` component assumes an initialized SDK + a logged-in user; docs: "Breaking this order = blank screen." *Fix:* the gate — render/navigate only after BOTH callbacks succeed; surface `onError` on the gate instead of proceeding.
14
+
15
+ 6. **Leaked listeners.** *Symptom:* duplicate real-time handling, callbacks firing into destroyed screens, memory leaks/crashes after back navigation. *Why:* an SDK `CometChat.addMessageListener(listenerId, ...)` (or a `CometChatEvents` flow collected in a scope that outlives the screen) registered in a lifecycle but never removed keeps the screen alive. *Fix:* pair every add with a remove in the matching teardown — `removeMessageListener(listenerId)` in `onPause`/`onDestroy` (Views) or a `DisposableEffect`/`lifecycleScope` collection that dies with the composable. (The drop-in components manage their OWN listeners — this applies to listeners YOU add.)
16
+
17
+ 7. **`wrap_content` collapse of the chat surface.** *Symptom:* a ~0dp sliver, or a list that grows into place as content loads. *Why:* list-shaped components fill their parent; a content-driven box gives them nothing to fill. *Fix:* `match_parent`/`0dp`+constraints / `fillMaxSize()`; message list at `0dp`+`layout_weight="1"` / `weight(1f)` (`layout.md` invariant 1/5).
18
+
19
+ 8. **Composer hidden under the keyboard.** *Symptom:* typing opens the IME over the input; the user can't see what they type. *Why:* the window doesn't resize for the IME. *Fix:* Views → `android:windowSoftInputMode="adjustResize"` on the chat Activity; Compose → `Modifier.imePadding()` on the column holding the composer (`layout.md` invariant 3).
20
+
21
+ 9. **Composer/header under the system bars.** *Symptom:* header text behind the status bar, send button behind the gesture/nav bar. *Why:* the docs call `enableEdgeToEdge()` — after that the app owns the insets, and unpadded content slides under the bars. *Fix:* `Scaffold(contentWindowInsets = WindowInsets.statusBars)` + `navigationBarsPadding()` (Compose) / root inset padding (Views) — or don't go edge-to-edge (`layout.md` invariant 2).
22
+
23
+ 10. **Dead thread affordance.** *Symptom:* tapping "Reply in thread" / a thread indicator does nothing. *Why:* the list renders the thread affordance by default, but navigation is the host's job — unwired `onThreadRepliesClick` dead-ends. *Fix:* wire `setOnThreadRepliesClick { message -> }` / `onThreadRepliesClick =` to a thread screen (`CometChatThreadHeader` + parent-scoped list + composer), or explicitly hide the option (`setReplyInThreadOptionVisibility(View.GONE)`). Same rule for the conversations search icon (`onSearchClick` → `CometChatSearch` or hide).
24
+
25
+ 11. **Mixing cohorts or mixing majors.** *Symptom:* duplicate class / resource-merge build errors, or two inconsistent chat UIs. *Why:* `chatuikit-kotlin-android` + `chatuikit-compose-android` in one app collide; a v5 `chat-uikit-android` alongside v6 `chatuikit-*` is a version_conflict. *Fix:* ONE cohort artifact, ONE major — the §3 STOP gate (`setup-credentials.md`).
26
+
27
+ 12. **Missing Cloudsmith maven repo.** *Symptom:* `Could not find com.cometchat:chatuikit-...` at sync/build. *Why:* the kit is not on mavenCentral. *Fix:* add `maven("https://dl.cloudsmith.io/public/cometchat/cometchat/maven/")` to `settings.gradle(.kts)` `dependencyResolutionManagement.repositories`.
28
+
29
+ 13. **Treating same-user re-login as an error path (or switching users without logout).** *Symptom:* defensive re-login code, or a login error when switching accounts. *Why:* re-`login` with the SAME uid is safe (the kit returns the cached user via `onSuccess`, verified in 6.0.5), but logging in a DIFFERENT uid over an existing session errors. *Fix:* the guard — `getLoggedInUser()` same-uid → skip; different uid → `logout` first, login in its `onSuccess` (`lifecycle.md`).
30
+
31
+ 14. **Blocking the main thread waiting for callbacks.** *Symptom:* ANR, frozen splash, or a latch that never releases. *Why:* init/login callbacks are async and delivered on the main thread — `runBlocking`/`CountDownLatch.await()` on main deadlocks or janks. *Fix:* drive UI state from the callbacks (state flag / navigation in `onSuccess`), never wait synchronously.
@@ -0,0 +1,168 @@
1
+ # component-props — BAKED stable signatures for the Android v6 drop-ins
2
+
3
+ > Ground truth: `ui-kit/android/conversations.md`, `message-header.md`, `message-list.md`, `message-composer.md` (+ `threaded-messages-header.md`, `search.md`, `conversation-message-view.md` for wiring), extracted from the pages' code fences per cohort and cross-checked against installed 6.0.5 kit source, verified 2026-08-20.
4
+
5
+ The high-value, STABLE hooks for the 4 core drop-ins — baked so the golden path needs no
6
+ fetch. Both cohorts use the SAME component names; **Compose = named params on the
7
+ composable, Views = `set*` setters on the view** (XML tag = the fully-qualified class name,
8
+ package `com.cometchat.uikit.kotlin.presentation.<component>.ui.<Name>`). Exhaustive/rare
9
+ params still come from the page's `.md` twin (`docs-map.md`); anything below marked
10
+ **FETCH** is not baked.
11
+
12
+ ## THE RULE — custom UI goes in the component's OWN slot, never stacked on top
13
+ A custom header row, banner, or action button belongs in the component's view slot (tables
14
+ below). Don't render it as a sibling above/beside the component.
15
+
16
+ ---
17
+
18
+ ## CometChatConversations
19
+ **XML tag:** `<com.cometchat.uikit.kotlin.presentation.conversations.ui.CometChatConversations />` (size it `match_parent`).
20
+ **Callbacks** (Views setter ⇄ Compose param — same lambda shape):
21
+ - `setOnItemClick { conversation -> }` ⇄ `onItemClick = { conversation -> }` — the primary navigation hook (replaces built-in behavior).
22
+ - `setOnSearchClick { }` ⇄ `onSearchClick = { }` — the toolbar search icon; wire to a `CometChatSearch` screen or hide the search affordance.
23
+ - `setOnBackPress { }` ⇄ `onBackPress = { }` — toolbar back button.
24
+ - `setOnItemLongClick { conversation -> }` ⇄ `onItemLongClick` · `setOnError { exception -> }` ⇄ `onError` · `setOnLoad { conversations -> }` ⇄ `onLoad` · `setOnEmpty { }` ⇄ `onEmpty` · `setOnSelection { selected -> }` ⇄ `onSelection` (with `setSelectionMode(UIKitConstants.SelectionMode.MULTIPLE)` ⇄ `selectionMode =`).
25
+ **Functionality:** `setTitle("Chats")` ⇄ `title =` · `setToolbarVisibility(View.GONE)` ⇄ `hideToolbar = true` · `setSearchBoxVisibility(View.GONE)` ⇄ `hideSearchBox = true` · `setBackIconVisibility(View.VISIBLE)` ⇄ `hideBackIcon = false` (back icon hidden by default in Compose) · `setDisableSoundForMessages(true)` ⇄ `disableSoundForMessages = true`.
26
+
27
+ **The request-builder scoping hook** (exact names from `conversations.md`):
28
+ - Views: `conversations.setConversationsRequestBuilder(builder)`
29
+ - Compose: `conversationsRequestBuilder = builder`
30
+ ```kotlin
31
+ ConversationsRequest.ConversationsRequestBuilder()
32
+ .setConversationType(CometChatConstants.CONVERSATION_TYPE_USER) // 1:1-only; _GROUP for groups-only
33
+ .setLimit(20)
34
+ ```
35
+ **Pass the builder object, not `.build()`** — the component calls `.build()` internally
36
+ (docs Warning; default page size 30, infinite scroll). A DM-only ask → `CONVERSATION_TYPE_USER`
37
+ (hides seeded groups); groups-only → `CONVERSATION_TYPE_GROUP`; an unscoped "add chat" → omit the builder.
38
+
39
+ **The selection flows into the message screen via `conversationWith`:**
40
+ ```kotlin
41
+ onItemClick = { conversation ->
42
+ when (val entity = conversation.conversationWith) { // User OR Group
43
+ is User -> navigateToUserChat(entity)
44
+ is Group -> navigateToGroupChat(entity)
45
+ }
46
+ }
47
+ ```
48
+ The SAME `User`/`Group` is then handed to header + list + composer (below). Views cohort
49
+ passes it through Intent extras (`intent.putExtra("user", entity)` — the guide's pattern);
50
+ Compose holds it in state / a nav route.
51
+
52
+ ## CometChatMessageHeader
53
+ **XML tag:** `<com.cometchat.uikit.kotlin.presentation.messageheader.ui.CometChatMessageHeader />` (height `wrap_content`/`56dp`).
54
+ **Target (required):** `setUser(user)` ⇄ `user =` OR `setGroup(group)` ⇄ `group =`.
55
+ **Callbacks:** `setOnBackPress { }` ⇄ `onBackPress = { }` (REQUIRED on phones — pop back to the list) · `setOnError { exception -> }` ⇄ `onError`.
56
+ **Functionality:** `setBackButtonVisibility(View.VISIBLE)` ⇄ `hideBackButton = false`. Presence/typing/member-count update automatically (SDK events handled internally).
57
+
58
+ ## CometChatMessageList
59
+ **XML tag:** `<com.cometchat.uikit.kotlin.presentation.messagelist.ui.CometChatMessageList />` (`0dp` + `layout_weight="1"` between header and composer — `layout.md`).
60
+ **Target (required):** `setUser(user)` ⇄ `user =` OR `setGroup(group)` ⇄ `group =` — without one the list shows only its loading indicator (docs Warning).
61
+ **Callbacks:**
62
+ - `setOnThreadRepliesClick { message -> }` ⇄ `onThreadRepliesClick = { message -> }` — receives the parent `BaseMessage`; navigate to the thread screen (default-on; hide only on explicit opt-out via `setReplyInThreadOptionVisibility(View.GONE)` / Compose hide-option param — FETCH the Compose name from `message-list.md` if needed).
63
+ ⚠️ **Signature note:** the installed 6.0.5 kit takes a single `BaseMessage` in BOTH cohorts (`fun setOnThreadRepliesClick(callback: ((BaseMessage) -> Unit)?)`); the docs page's `{ context, baseMessage, template -> }` fence is stale — bake the single-arg shape.
64
+ - `setOnError { exception -> }` ⇄ `onError` · `setOnLoad { messages -> }` ⇄ `onLoad` · `setOnEmpty { }` ⇄ `onEmpty`.
65
+ **Functionality:** `setMessagesRequestBuilder(MessagesRequest.MessagesRequestBuilder()...)` ⇄ `messagesRequestBuilder =` (same pass-the-builder-not-`.build()` rule) · `setStartFromUnreadMessages(true)` ⇄ `startFromUnreadMessages = true` · `setEnableMultipleAttachments(true)` ⇄ `enableMultipleAttachments = true` (default true).
66
+ **Thread mode:** `setParentMessageId(id)` (Views, `Long`) ⇄ `parentMessageId = message.id` (Compose, default `-1` = main conversation) — a parent-scoped list for the thread screen. ⚠️ The `guide-threaded-messages.md` Views fence calls `messageList.setParentMessage(it.id)` — that setter doesn't exist on the list; the real one is `setParentMessageId` (verified in kit source + master app).
67
+
68
+ ## CometChatMessageComposer
69
+ **XML tag:** `<com.cometchat.uikit.kotlin.presentation.messagecomposer.ui.CometChatMessageComposer />` (height `wrap_content`; create it in the Activity's `onCreate` — it registers an `ActivityResultLauncher` for permissions, docs Warning).
70
+ **Target (required):** `setUser(user)` ⇄ `user =` OR `setGroup(group)` ⇄ `group =`.
71
+ **Works with no extra wiring** for plain send/attachments/voice/emoji.
72
+ **Callbacks (intercept-only):**
73
+ - Compose: `onSendButtonClick = { context, baseMessage -> }` (docs + source agree) · `onError = { ... }` — ⚠️ the Compose source takes `(CometChatException) -> Unit` (one arg); the docs fence shows `{ context, exception -> }` — prefer the one-arg shape, verify on compile.
74
+ - Views: ⚠️ installed 6.0.5 source is `setOnSendButtonClick(callback: (String) -> Unit)` (the typed text), NOT the docs' `{ context, baseMessage -> }` — treat the Views intercept as **FETCH/verify-on-compile**; for the golden path you don't wire it at all.
75
+ **Thread mode:** `setParentMessageId(id)` ⇄ `parentMessageId = message.id` — replies land in the thread.
76
+
77
+ ## The thread screen (how the pieces compose — from `guide-threaded-messages.md` + `threaded-messages-header.md`)
78
+ Takes BOTH the conversation target AND the parent message: `CometChatThreadHeader` —
79
+ `setParentMessage(parentMessage)` ⇄ `parentMessage =` (a `BaseMessage`; display-only, no
80
+ callbacks) — above a parent-scoped `CometChatMessageList` + `CometChatMessageComposer`
81
+ (same `user`/`group` + `parentMessageId = parentMessage.id` on both).
82
+
83
+ ## CometChatSearch (the `onSearchClick` destination)
84
+ Views `setOnBackPressListener { }` ⇄ Compose `onBackPress = { }` — you opened it, you close
85
+ it (round-trip). Scope to one conversation with `setUid("...")`/`setGuid("...")` ⇄
86
+ `uid =`/`guid =`; global search = neither. Full params: FETCH `search.md`.
87
+
88
+ ---
89
+
90
+ ## Slot / custom-view map (where custom UI goes)
91
+ | Component | Views setter | Compose param | Region |
92
+ |---|---|---|---|
93
+ | Conversations | `setLeadingView(ConversationsViewHolderListener)` / `setTitleView(...)` / `setSubtitleView(...)` / `setTrailingView(...)` | `leadingView = { conversation, typingIndicator -> }` / `titleView` / `subtitleView` / `trailingView` | per-row sections |
94
+ | Conversations | `setLoadingView(v)` / `setEmptyView(v)` / `setErrorView(v)` | `loadingView = { }` / `emptyView = { }` / `errorView = { onRetry -> }` | list states |
95
+ | Conversations | `setOverflowMenu(view)` · `setOptions { ctx, conv -> }` / `setAddOptions { ctx, conv -> }` | `overflowMenu = { }` · `options = { ctx, conv -> }` / `addOptions` | toolbar menu · long-press menu (`CometChatPopupMenu.MenuItem`) |
96
+ | MessageHeader | `setLeadingView(MessageHeaderViewHolderListener)` / `setSubtitleView(...)` / `setTrailingView(...)` / `setItemView(...)` | `leadingView = { user, group -> }` / `subtitleView` / `trailingView` / `itemView` (replaces whole header) | avatar · status line · right-side actions · whole row |
97
+ | MessageList | `setHeaderView(view)` / `setFooterView(view)` · state views as above | `headerView = { }` / `footerView = { }` · state views | banner above / below the scroll |
98
+ | MessageList | `set*ViewProvider(BubbleViewProvider)` (leading/header/reply/content/bottom/statusInfo/thread/footer) · `setBubbleFactories(list)` | per-bubble slot params `leadingView/headerView/.../footerView = { message, alignment -> }` · `bubbleFactories =` | inside every bubble / per message type — depth: FETCH `message-list.md` |
99
+ | MessageComposer | `setHeaderView(view)` / `setSendButtonView(view)` / `setAuxiliaryButtonView(view)` / `setAttachmentOptions(list)` | `headerView = { }` / `sendButtonView = { }` / `auxiliaryButtonView = { }` / `attachmentOptions = listOf(CometChatMessageComposerAction(...))` | above input · send button · sticker/AI area · attach sheet |
100
+
101
+ > Overriding `setAuxiliaryButtonView` REPLACES the sticker/AI buttons entirely — in 6.0.5 there is
102
+ > **no accessor to re-fetch the defaults**: `CometChatUIKit.getDataSource()` and
103
+ > `getAuxiliaryOption(...)` do **not** exist (the v4-era `ChatConfigurator.getDataSource()` /
104
+ > `getAuxiliaryOptions()` slot architecture was removed — verified against chatuikit-core/kotlin 6.0.5).
105
+ > If you must keep the defaults, add them into your custom view yourself; otherwise don't override the
106
+ > whole auxiliary slot. (Styling and ViewModel injection: FETCH the page.)
107
+
108
+ ---
109
+
110
+ ## Import paths (verified against 6.0.5)
111
+
112
+ Views components live at `com.cometchat.uikit.kotlin.presentation.<area>.ui.<Component>` —
113
+ `conversations.ui.CometChatConversations`, `messagelist.ui.CometChatMessageList`,
114
+ `search.ui.CometChatSearch`, `threadheader.ui.CometChatThreadHeader`, `users.ui.CometChatUsers`,
115
+ `groups.ui.CometChatGroups`, `calllogs.ui.CometChatCallLogs`,
116
+ `notificationfeed.ui.CometChatNotificationFeed`.
117
+
118
+ **The three calling components have NO `.ui` segment** (verified against 6.0.5) — inferring the
119
+ pattern gives `Unresolved reference 'ui'`:
120
+
121
+ | Component | Import |
122
+ |---|---|
123
+ | `CometChatIncomingCall` | `…presentation.incomingcall.CometChatIncomingCall` |
124
+ | `CometChatOutgoingCall` | `…presentation.outgoingcall.CometChatOutgoingCall` |
125
+ | `CometChatCallButtons` | `…presentation.callbuttons.CometChatCallButtons` |
126
+
127
+ SDK types the golden path also emits (not UI-Kit components, and not under `presentation`):
128
+
129
+ | Type | Import |
130
+ |---|---|
131
+ | `AppEntity` (the `User`/`Group` supertype the search + conversation taps switch on) | `com.cometchat.chat.models.AppEntity` |
132
+ | `CometChatConstants` (`RECEIVER_TYPE_*`, `GROUP_TYPE_*`, `CATEGORY_*`) | `com.cometchat.chat.constants.CometChatConstants` |
133
+
134
+ Formatters are not under `presentation` at all: `com.cometchat.uikit.kotlin.shared.formatters.*`
135
+ (`CometChatTextFormatter`, `CometChatMentionsFormatter`, `CometChatRichTextFormatter`). `SearchScope`
136
+ is `com.cometchat.uikit.core.constants.SearchScope`. Compose swaps `kotlin` for `compose`.
137
+
138
+ ---
139
+
140
+ ## Callback shapes (Views, verified vs 6.0.5)
141
+
142
+ | Component | Views setter | Shape |
143
+ |---|---|---|
144
+ | `CometChatConversations` | `setOnItemClick` | `(Conversation) -> Unit` |
145
+ | `CometChatConversations` | `setOnSearchClick` | `() -> Unit` |
146
+ | `CometChatMessageHeader` | `setOnBackPress` | `() -> Unit` |
147
+ | `CometChatMessageList` | `setOnThreadRepliesClick` | `((BaseMessage) -> Unit)?` — **ONE arg** |
148
+ | `CometChatMessageList` / `Composer` | `setParentMessageId` | `(Long)` |
149
+ | `CometChatThreadHeader` | `setParentMessage` | `(BaseMessage)` |
150
+ | `CometChatSearch` | `setOnConversationClick` | `((Conversation) -> Unit)?` — **ONE arg** |
151
+ | `CometChatSearch` | `setOnMessageClick` | `((BaseMessage) -> Unit)?` — **ONE arg** |
152
+ | `CometChatSearch` | `setSearchIn` | `(List<SearchScope>)` — import `com.cometchat.uikit.core.constants.SearchScope` |
153
+ | `CometChatMessageHeader` | `setOnNewChatClick` | `(() -> Unit)` — **on the HEADER, not `CometChatConversations`**; a list-first app owns its own new-chat entry (tab/FAB) → `CometChatUsers` + `CometChatGroups` |
154
+ | all four | `setUser` / `setGroup` | `(User)` / `(Group)` |
155
+
156
+ ---
157
+
158
+ ## Component / API map (BAKED closed list — from `catalogs/android-v6.json`)
159
+ Session: `CometChatUIKit`, `UIKitSettings` (`com.cometchat.uikit.core`).
160
+ Core surface: `CometChatConversations` · `CometChatMessageHeader` · `CometChatMessageList` · `CometChatMessageComposer` · `CometChatThreadHeader` · `CometChatSearch`.
161
+ Grow set (on request): `CometChatUsers` · `CometChatGroups` · `CometChatGroupMembers` · `CometChatCallLogs` · `CometChatIncomingCall` · `CometChatNotificationFeed` · `CometChatAIAssistantChatHistory`.
162
+ Namespaces: Views `com.cometchat.uikit.kotlin.presentation.<area>.ui.*` · Compose `com.cometchat.uikit.compose.presentation.<area>.ui.*`.
163
+ **Not in the catalog ⇒ does not exist.** v6 ships **no combined shell** — `CometChatConversationsWithMessages`/`CometChatUI` are v4-era names. `CometChatMessageTemplate` is documented but **absent from 6.0.5** — verify before use. Full catalog: `cometchat-android-v6-{kotlin,compose}-components`.
164
+
165
+ > ⚠️ **Docs drift — trust the reference table, not the docs.** `guide-threaded-messages` (Views tab) shows a **3-arg**
166
+ > `setOnThreadRepliesClick { context, baseMessage, template -> }` and `messageList.setParentMessage(id)`.
167
+ > Neither exists in 6.0.5: the callback takes **one** `BaseMessage`, and the list setter is
168
+ > **`setParentMessageId(Long)`**. Logged internally.
@@ -0,0 +1,153 @@
1
+ # docs-map — CometChat Android v6: intent → the exact docs page to fetch
2
+
3
+ ## Reaching docs — PREFER the CometChat docs MCP; fetch is the fallback
4
+ The canonical doc channel is the **first-party CometChat docs MCP** — tools `search_cometchat_docs`,
5
+ `fetch_cometchat_doc_page`, and `get_cometchat_implementation_bundle`. **If those tools are connected,
6
+ use them instead of a raw web fetch:**
7
+ - **Find the page** → `search_cometchat_docs(query, version?)` — replaces browsing the scoped `llms-*` index.
8
+ - **Read the page** → `fetch_cometchat_doc_page(path)` — pass the SAME `<path>` the tables below list
9
+ (the conversations page path for your platform); the MCP resolves the `.md` twin and returns raw Markdown.
10
+ A full `https://…/docs/<path>` URL also works.
11
+ - **A whole feature/recipe** → `get_cometchat_implementation_bundle(...)` is **NON-AUTHORITATIVE** — curated STATIC recipes that can lag the live docs (verified stale vs v7: e.g. `CometChatConversationsWithMessages`, `css-variables.css`). Treat any bundle as a hint only: RECONCILE it against the `fetch_cometchat_doc_page` result + the pack's hardening; never emit bundle code verbatim.
12
+
13
+ The MCP reads whatever docs environment it is pointed at (production by default; a preview when repointed),
14
+ so it also carries the environment-swap concern below — no hardcoded host on the skill side.
15
+
16
+ **If the MCP tools are NOT connected:** add it (`claude mcp add --transport http cometchat-docs https://mcp.cometchat.com/mcp`, or reinstall/enable the plugin) and retry; only if it still will not connect, fall back to a plain fetch via `DOCS_BASE` (defined next).
17
+ Either way the `<path>` catalog in this file is the source of truth for WHICH page — MCP-vs-fetch is only HOW.
18
+
19
+ ## DOCS_BASE — the fetch FALLBACK entry point (⚠️ SWAP HERE to change environments)
20
+ ```
21
+ DOCS_BASE = https://www.cometchat.com/docs
22
+ ```
23
+ > Production docs (`https://www.cometchat.com/docs`). The Android v6 UI Kit tree lives at the UNVERSIONED root: `/ui-kit/android/<page>`
24
+ > (v5 is `/ui-kit/android/v5/...` — do not fetch it for a v6 build).
25
+ > **Fetch rule:** always build a URL as `DOCS_BASE` + the path shown, then append `.md`.
26
+ > Never hardcode a host anywhere else; never decompile the AAR or read kit source for signatures.
27
+
28
+ ## The convention
29
+ `DOCS_BASE` + `<path>` + `.md` → raw Markdown (verbatim code +, on many pages, an "AI Integration
30
+ Quick Reference" accordion). **Every component page carries a `Kotlin (XML Views)` tab AND a
31
+ `Jetpack Compose` tab — read the tab for YOUR cohort** (the same `CometChat*` names, different wiring).
32
+ ```
33
+ Fetch: {DOCS_BASE}/ui-kit/android/conversations.md
34
+ ```
35
+ Fallback order: `.md` twin → if it 404s, the same URL **without** `.md` (HTML) → **never** kit source.
36
+
37
+ ## Scoped Android v6 index (prefer over the global llms.txt)
38
+ ```
39
+ {DOCS_BASE}/ui-kit/android/llms-android-v6.md
40
+ ```
41
+ An Android-v6-only index of every page as a `.md` link — use it to discover any page not in the
42
+ table below. Global all-products index (large; last resort): `{DOCS_BASE}/llms.txt`.
43
+ > **Scoped index:** `{DOCS_BASE}/ui-kit/android/llms-android-v6.md` is live (the `docs/android-llms-indexes`
44
+ > branch merged). Use it to find pages; the per-page `.md` twins below + the global `llms.txt` remain fallbacks.
45
+
46
+ ## SDK docs — the FALLBACK reference (a feature the UI Kit has NO component for)
47
+ The rule of the pack: **for every feature, first check whether the UI Kit has a component/param for it
48
+ (this file's table + `component-props.md` + the catalog). If it does — USE it. If it does NOT** (e.g.
49
+ AI agent events, transient messages, webhooks, low-level presence/connection, unread counts, granular
50
+ group management) **— drop to the Android Chat SDK and call it directly** (the SDK is already installed
51
+ under the UI Kit; init/login already use it). Look the method up in the SDK docs — never guess:
52
+ ```
53
+ SDK_DOCS_BASE = https://www.cometchat.com/docs
54
+ ```
55
+ - **SDK index (scoped — PREFER this):** `{SDK_DOCS_BASE}/sdk/android/v5/llms-android-v5.md` — an
56
+ **Android-SDK-v5-only** routing index grouped by area (Messaging · Calling · Users · Groups · AI &
57
+ advanced · Resources & listeners · Advanced). Start here to find the feature's page. Do NOT use the
58
+ site-wide `{SDK_DOCS_BASE}/llms.txt` except as a last resort. Same DOCS-GAP note as above.
59
+ - **⚠️ URL trap:** Android SDK v5 pages are VERSIONED — `{SDK_DOCS_BASE}/sdk/android/v5/<page>` then
60
+ append `.md`. The unversioned `/sdk/android/<page>` tree is **v4** — never fetch it for a v5 build.
61
+ - **Example:** flag a message → `{SDK_DOCS_BASE}/sdk/android/v5/flag-message.md` →
62
+ `CometChat.flagMessage(...)`, `CometChat.getFlagReasons(...)`.
63
+ > Never hand-roll a feature that exists in the UI Kit OR the SDK, and never guess an SDK method —
64
+ > look it up in the SDK index → the page.
65
+
66
+ ## Don't fetch the hot path — it's baked
67
+ Install, `init → login → render`, and the core drop-in callbacks for "add chat" are BAKED in
68
+ `cometchat-android-v6-core`. Fetch ONLY for exhaustive params/attrs / long-tail components /
69
+ theming tokens / feature enablement.
70
+
71
+ ## The 80% trigger table (URL = `{DOCS_BASE}` + path, then append `.md`)
72
+ | Intent | Path (append `.md`) |
73
+ |---|---|
74
+ | setup / init / login (XML Views) | `/ui-kit/android/getting-started-kotlin` |
75
+ | setup / init / login (Compose) | `/ui-kit/android/getting-started-jetpack` |
76
+ | pick a chat experience / recipes | `/ui-kit/android/getting-started` · `one-to-one-chat` · `tab-based-chat` · `conversation-message-view` |
77
+ | conversation list (full params) | `/ui-kit/android/conversations` |
78
+ | message list | `/ui-kit/android/message-list` |
79
+ | message composer | `/ui-kit/android/message-composer` |
80
+ | message header | `/ui-kit/android/message-header` |
81
+ | users / groups / group members | `/ui-kit/android/users` · `groups` · `group-members` |
82
+ | threads | `/ui-kit/android/threaded-messages-header` |
83
+ | message search | `/ui-kit/android/search` |
84
+ | message templates / custom types | `/ui-kit/android/message-template` (⚠️ verify symbols vs catalog — see core map) |
85
+ | voice/video call buttons | `/ui-kit/android/call-buttons` |
86
+ | incoming / outgoing call UI | `/ui-kit/android/incoming-call` · `outgoing-call` |
87
+ | call logs | `/ui-kit/android/call-logs` |
88
+ | calls setup / enable calling | `/ui-kit/android/calling-integration` · `call-features` · Calls SDK: `/calls/android/setup` |
89
+ | AI features (starter/replies/summary) | `/ui-kit/android/ai-features` |
90
+ | AI agent chat / assistant history | `/ui-kit/android/guide-ai-agent` · `/ui-kit/android/ai-assistant-chat-history` |
91
+ | notification feed | `/ui-kit/android/notification-feed` |
92
+ | push setup (FCM) | `/notifications/push-overview` |
93
+ | extensions (stickers/polls/translation…) | `/ui-kit/android/extensions` — **client half only**; see the enablement table below |
94
+ | theming / colors / styling | `/ui-kit/android/theme-introduction` · `color-resources` · `component-styling` · `message-bubble-styling` |
95
+ | customization (slots/styles/events/formatters…) | `/ui-kit/android/customization-overview` (+ the specific `customization-*` page) |
96
+ | localization / sounds | `/ui-kit/android/localize` · `sound-manager` |
97
+ | methods / events reference | `/ui-kit/android/methods` · `/ui-kit/android/events` |
98
+ | full component list | `/ui-kit/android/components-overview` |
99
+ | troubleshooting | `/ui-kit/android/troubleshooting` |
100
+ | v5→v6 migration / upgrade | `/ui-kit/android/upgrading-from-v5` |
101
+
102
+ ## Enablement — the half that is NOT in `ui-kit/android`
103
+ Most "add <feature>" asks have a **dashboard/extension prerequisite**. The component renders and
104
+ nothing happens until it is switched on, so a skill that only wires the client has not finished the
105
+ job. These pages live OUTSIDE the UI-Kit tree — say the prerequisite out loud to the user, and fetch
106
+ the page when you need the exact steps.
107
+
108
+ | Intent | Enablement page (append `.md`) |
109
+ |---|---|
110
+ | any extension — first stop | `/fundamentals/extensions-overview` |
111
+ | polls · stickers | `/fundamentals/polls` · `/fundamentals/stickers` |
112
+ | collaborative whiteboard / document | `/fundamentals/collaborative-whiteboard` · `/fundamentals/collaborative-document` |
113
+ | link preview · thumbnail generation | `/fundamentals/link-preview` · `/fundamentals/thumbnail-generation` |
114
+ | message translation | `/fundamentals/message-translation` |
115
+ | smart replies · conversation starter · summary | `/fundamentals/ai-user-copilot/smart-replies` · `conversation-starter` · `conversation-summary` (overview: `/fundamentals/ai-user-copilot/overview`) |
116
+ | AI agents | `/ai-agents` |
117
+ | profanity filter / moderation | `/fundamentals/moderation-extensions` · `/moderation/overview` · `/moderation/getting-started` · `/moderation/rules-management` |
118
+ | push notifications (Android) | `/notifications/push-overview` · **`/notifications/android-push-notifications`** · `/notifications/badge-count` |
119
+ | campaigns / announcements | `/campaigns/campaigns` · `/campaigns/templates` · `/campaigns/channels` |
120
+ | auth keys, roles, permissions | `/fundamentals/user-auth` · `/fundamentals/user-roles-and-permissions` |
121
+ | server-side webhooks | `/fundamentals/webhooks-overview` · `/calls/webhooks` |
122
+
123
+ > Both scoped LLM indexes now carry this same routing, so either door reaches it:
124
+ > `{DOCS_BASE}/ui-kit/android/llms-android-v6.md` and
125
+ > `{SDK_DOCS_BASE}/sdk/android/v5/llms-android-v5.md`.
126
+
127
+ ## Task guides (recipes) — for a whole FEATURE, BUILD FROM the guide + COMPARE against it (docs-maximal)
128
+ For a TASK/feature ask (a whole capability, not just one component's params), the docs ship **full
129
+ end-to-end guides**. **Discover them from the scoped llms index's "Task guides (recipes)" section**
130
+ (`{DOCS_BASE}/ui-kit/android/llms-android-v6.md`) — the index is the source of truth (new guides appear
131
+ there; do NOT bake this list). At time of writing it lists: `guide-overview` · `guide-threaded-messages` ·
132
+ `guide-block-unblock-user` · `guide-new-chat` · `guide-message-privately` · `guide-call-log-details` ·
133
+ `guide-group-chat` · `guide-search-messages` · `guide-ai-agent` · `custom-text-formatter-guide` ·
134
+ `mentions-formatter-guide` · `shortcut-formatter-guide`.
135
+ **Use the matching guide TWO ways — prefer it over baked recipe prose wherever a guide exists:**
136
+ 1. **As the implementation SOURCE** — fetch `{DOCS_BASE}/ui-kit/android/<guide>.md` (your cohort's tab)
137
+ and build the feature from the official recipe. **Adapt it ADDITIVELY** into the user's app (reuse
138
+ their navigation/theme/auth; never drop in the guide's standalone shell).
139
+ 2. **As a COMPLETENESS + CORRECTNESS check** — after you emit, DIFF your implementation against the
140
+ guide: every component, param, step, and affordance covered? Fill any gap.
141
+ > **Then apply the baked HARDENING DELTAS on top — the guide is the BASELINE, not the whole truth:**
142
+ > credentials via `local.properties`→`BuildConfig` (guides hardcode placeholders); the init→login gate
143
+ > with failures surfaced; thread screens take the conversation target AND the parent message id;
144
+ > IME/insets sizing (`references/layout.md`); wire-or-hide every default-on affordance; listener
145
+ > teardown in the matching lifecycle. Build from the guide, then correct with these.
146
+
147
+ **No matching guide in the index? → continue EXACTLY as before** — build from the pack's baked
148
+ golden path + `component-props.md` and fetch each component's `.md` twin for exact params. **The guide
149
+ is an ENHANCEMENT when present, never a hard dependency.**
150
+
151
+ ## Not in the table?
152
+ Fetch the scoped index (`{DOCS_BASE}/ui-kit/android/llms-android-v6.md`), pick the page, fetch its `.md`.
153
+ Never guess a path; never read kit source; never answer params from memory.
@@ -0,0 +1,112 @@
1
+ # layout — the reflow-free chat surface (the ONE mobile sizing standard, Android v6)
2
+
3
+ > Ground truth: `ui-kit/android/conversation-message-view.md` (both tabs, snippets verbatim) + `getting-started-*` (`enableEdgeToEdge`), cross-checked against the kit's sample-app manifests (`windowSoftInputMode="adjustResize"`), verified 2026-08-20.
4
+
5
+ The single source of truth for how a CometChat surface is SIZED on Android so it renders
6
+ full-size from the first frame, stays clear of system bars and the keyboard, and never
7
+ reflows. `core`, `placement`, and `calls` POINT here — change the rule once, here.
8
+
9
+ > **The kit is NOT the problem.** Every UI Kit component fills its parent by design and
10
+ > ships its OWN loading/empty/error state. A chat surface that collapses, hides the
11
+ > composer under the keyboard, or slides under the status bar is a HOST layout defect.
12
+
13
+ ## The five invariants (a correct surface satisfies ALL)
14
+
15
+ **(1) Fill the parent — never `wrap_content` for the chat surface.**
16
+ The conversations screen and the message screen each own their window: Views →
17
+ `match_parent` (in a constraint layout, `0dp` + constraints, as the docs guide does);
18
+ Compose → `Modifier.fillMaxSize()`. `wrap_content` on a list-shaped component collapses to
19
+ ~0dp before content loads and grows into place after — both broken. The composer/header
20
+ are the exception: they are bars — `wrap_content` height (Views) / intrinsic height
21
+ (Compose) by design.
22
+
23
+ **(2) Edge-to-edge WITH insets.** The docs call `enableEdgeToEdge()` in every Activity
24
+ `onCreate` — once you do, YOU own the status/nav-bar insets, or the header renders under
25
+ the status bar and the composer under the gesture bar. Compose: the guide's exact recipe —
26
+ ```kotlin
27
+ Scaffold(contentWindowInsets = WindowInsets.statusBars) { paddingValues ->
28
+ Column(
29
+ modifier = Modifier
30
+ .fillMaxSize()
31
+ .padding(paddingValues)
32
+ .consumeWindowInsets(paddingValues)
33
+ .navigationBarsPadding()
34
+ .imePadding()
35
+ ) { /* header / list / composer */ }
36
+ }
37
+ ```
38
+ Views: apply insets to the root (e.g. `ViewCompat.setOnApplyWindowInsetsListener` padding
39
+ the root with `systemBars()` insets), or skip `enableEdgeToEdge()` entirely and let the
40
+ system fit the window — never edge-to-edge WITHOUT inset handling.
41
+
42
+ **(3) IME/keyboard-aware — the composer stays visible while typing.**
43
+ - **Views:** the chat Activity needs `android:windowSoftInputMode="adjustResize"` in
44
+ `AndroidManifest.xml` (the kit's own sample apps set it on every chat activity). Without
45
+ it the keyboard overlays the composer.
46
+ - **Compose:** `Modifier.imePadding()` on the column that holds the composer (guide recipe
47
+ above) — and make sure inset consumption (`consumeWindowInsets`) precedes it so padding
48
+ isn't applied twice. `adjustResize` in the manifest also helps Compose apps on older
49
+ inset paths; the samples set both.
50
+
51
+ **(4) Loading states render INSIDE the full-size surface — no placeholder→chat jump.**
52
+ The components ship their own loading/empty/error states and render them within the sized
53
+ surface. Mount the sized surface immediately after the gate unlocks and let each component
54
+ show its own state — do NOT swap a small "Loading…" layout for the chat layout (that IS
55
+ the reflow). The only gate ABOVE the surface is init/login (`lifecycle.md`), and the docs'
56
+ gate renders its spinner `fillMaxSize`, so even that swap is full-size → full-size.
57
+
58
+ **(5) List scroll containment — the message list scrolls internally.**
59
+ `CometChatMessageList` (and `CometChatConversations`) contain their own scrolling.
60
+ - **Views:** never nest them in a `ScrollView`/`NestedScrollView`; in the vertical
61
+ `LinearLayout` the list takes `layout_height="0dp"` + `layout_weight="1"` between the
62
+ header and composer bars (docs guide, verbatim below).
63
+ - **Compose:** never place them inside a `verticalScroll` or another `LazyColumn`
64
+ (nested unbounded-height measurement crashes/collapses); give the list `weight(1f)`
65
+ in the `Column` so it gets a bounded height and scrolls inside it.
66
+
67
+ ## The message-screen recipe (docs guide, verbatim shapes)
68
+
69
+ **Views — `activity_message.xml`:**
70
+ ```xml
71
+ <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"
72
+ android:orientation="vertical">
73
+ <com.cometchat.uikit.kotlin.presentation.messageheader.ui.CometChatMessageHeader
74
+ android:id="@+id/message_header"
75
+ android:layout_width="match_parent" android:layout_height="wrap_content" />
76
+ <com.cometchat.uikit.kotlin.presentation.messagelist.ui.CometChatMessageList
77
+ android:id="@+id/message_list"
78
+ android:layout_width="match_parent" android:layout_height="0dp"
79
+ android:layout_weight="1" />
80
+ <com.cometchat.uikit.kotlin.presentation.messagecomposer.ui.CometChatMessageComposer
81
+ android:id="@+id/message_composer"
82
+ android:layout_width="match_parent" android:layout_height="wrap_content" />
83
+ </LinearLayout>
84
+ ```
85
+ plus manifest: `<activity android:name=".MessageActivity" android:windowSoftInputMode="adjustResize" />`.
86
+
87
+ **Compose — `MessageScreen`:** the Scaffold recipe in invariant (2) with, inside the Column:
88
+ ```kotlin
89
+ CometChatMessageHeader(modifier = Modifier.fillMaxWidth(), user = user, group = group,
90
+ hideBackButton = false, onBackPress = onBack)
91
+ CometChatMessageList(modifier = Modifier.fillMaxWidth().weight(1f), user = user, group = group)
92
+ CometChatMessageComposer(modifier = Modifier.fillMaxWidth(), user = user, group = group)
93
+ ```
94
+
95
+ The conversations screen is the same standard, one component:
96
+ Views full-bleed `CometChatConversations` at `match_parent`/`0dp`+constraints; Compose
97
+ `CometChatConversations(modifier = Modifier.fillMaxSize(), ...)`.
98
+
99
+ > ⚠️ **The list and search routes need insets too, not just the message route.** `fillMaxSize()` under `enableEdgeToEdge()` draws the title under the status-bar clock (verified on device). Wrap every full-screen route in `Scaffold(contentWindowInsets = WindowInsets.statusBars)` — the same recipe this file reserves for the message screen. Skipping it here contradicts layout invariant (2): never edge-to-edge WITHOUT inset handling.
100
+
101
+ ## Embedded (not full-screen)
102
+ Same invariants against the embedding cell: give the chat region a bounded height (a sized
103
+ fragment container / a `weight`ed cell / a fixed `Modifier.height(...)`) — never
104
+ `wrap_content`/unbounded — and keep (3)–(5) unchanged. Bottom-nav/tab shells: size the tab
105
+ content pane, not the component (`cometchat-android-v6-{kotlin,compose}-placement`).
106
+
107
+ ## Verify (advisory, human check)
108
+ Full-size from the first frame (the kit's own loading state fills the screen, no small box
109
+ that grows); header below the status bar and composer above the gesture/nav bar with
110
+ edge-to-edge on; open the keyboard → the composer rides above it and the list shrinks (no
111
+ overlay); the message list scrolls internally with header/composer pinned; rotate → no
112
+ collapse, no re-init (`lifecycle.md`).
@@ -0,0 +1,75 @@
1
+ # lifecycle — init once, login guard, logout (Android v6)
2
+
3
+ > Ground truth: installed `chatuikit-core-android` 6.0.5 `CometChatUIKit.kt` (`initFromSettings`/`login`/`loginWithAuthToken`/`logout`/`getLoggedInUser`/`isSDKInitialized`) + `ui-kit/android/getting-started-kotlin.md` / `getting-started-jetpack.md` (gate pattern), verified 2026-08-20.
4
+
5
+ ## Init once — via `initFromSettings`, and where it lives
6
+ The canonical init is **`CometChatUIKit.initFromSettings(context, callback)`** — it reads the gitignored `app/src/main/assets/cometchat-settings.json` (`setup-credentials.md` §4), persists `integrationSource="ai-agent"` for telemetry attribution, and auto-inits the Calls SDK when `uiKit.enableCalling` is true. A classic `init(context, UIKitSettings, callback)` overload also exists on `CometChatUIKit`, but **do not use it as the default — it loses the telemetry attribution** (AUDIT-084); reach for it only when a user explicitly needs programmatic settings.
7
+
8
+ Init is async; **nothing CometChat renders until `onSuccess` fires** (docs Warning: *"`init()` must resolve before you call `login()`. Calling `login()` before init completes will fail silently."*). Two valid placements:
9
+
10
+ - **Gate Activity (RECOMMENDED — the docs getting-started pattern):** the launcher/splash Activity runs `initFromSettings → login` and only then navigates to (Views) / renders (Compose) the chat UI. Failures surface on the gate screen instead of a blank chat.
11
+ - **Application.onCreate:** fine for init alone, but you still need a ready-gate before any `CometChat*` UI renders, and login usually depends on app auth state — so you end up building the gate anyway. Use it only when every screen needs CometChat from frame 1.
12
+
13
+ **Do NOT re-init per Activity/screen.** Init once per process. If a later entry point can't be sure init ran (deep link, notification tap, process death restoring a back stack), guard with `CometChatUIKit.isSDKInitialized()` — if false, route through the gate rather than sprinkling init calls through the app.
14
+
15
+ ## The exact init shape (both cohorts — same code)
16
+ ```kotlin
17
+ import com.cometchat.chat.core.CometChat
18
+ import com.cometchat.chat.exceptions.CometChatException
19
+ import com.cometchat.chat.models.User
20
+ import com.cometchat.uikit.core.CometChatUIKit
21
+
22
+ // Reads app/src/main/assets/cometchat-settings.json (appId, region, credentials.authKey,
23
+ // uiKit.subscribePresenceForAllUsers/enableCalling) and persists integrationSource="ai-agent".
24
+ CometChatUIKit.initFromSettings(this, object : CometChat.CallbackListener<String>() {
25
+ override fun onSuccess(s: String) { loginUser() } // init resolved — ONLY now login
26
+ override fun onError(e: CometChatException?) {
27
+ // SURFACE it — show e?.message on the gate screen; do NOT proceed to chat.
28
+ // ERR_SETTINGS_FILE_NOT_FOUND → the assets JSON is missing; ERR_SETTINGS_INVALID → appId/region missing.
29
+ }
30
+ })
31
+ ```
32
+ (Compose cohort: hold `isReady`/`error` in `mutableStateOf` and let `setContent` render error → spinner → `ChatApp()` — the getting-started-jetpack gate; Views cohort: `startActivity` to the conversations screen only from login's `onSuccess`, as getting-started-kotlin does.)
33
+
34
+ ## Login guard — skip if logged in; logout before switching users
35
+ ```kotlin
36
+ private fun loginUser() {
37
+ val existing = CometChatUIKit.getLoggedInUser() // sync; null if nobody logged in
38
+ if (existing != null && existing.uid == uid) { unlockChatUi(); return } // same user → done
39
+ // DIFFERENT user still logged in → logout FIRST, then login in its onSuccess
40
+ CometChatUIKit.login(uid, object : CometChat.CallbackListener<User>() {
41
+ override fun onSuccess(user: User) { unlockChatUi() }
42
+ override fun onError(e: CometChatException) { /* surface e.message — e.g. ERR_UID_NOT_FOUND */ }
43
+ })
44
+ }
45
+ ```
46
+ - **Same UID re-login is safe:** the kit short-circuits and returns the cached user via `onSuccess` (verified in 6.0.5 source) — but the guard keeps intent obvious and skips a needless call.
47
+ - **Different UID while logged in:** call `CometChatUIKit.logout(...)` and only login in its `onSuccess` — logging in over an existing session errors.
48
+ - The UID comes from the user / dashboard (`setup-credentials.md` §7) — never hardcoded in shipped code.
49
+
50
+ ## Production login — auth token, not Auth Key
51
+ Mint a per-user token server-side (CometChat REST API), then:
52
+ ```kotlin
53
+ CometChatUIKit.loginWithAuthToken(authToken, object : CometChat.CallbackListener<User>() {
54
+ override fun onSuccess(user: User) { unlockChatUi() }
55
+ override fun onError(e: CometChatException) { /* surface */ }
56
+ })
57
+ ```
58
+ Prod builds OMIT `credentials.authKey` from `cometchat-settings.json` (`appId`/`region` stay — they're not secrets). Never ship the Auth Key in a release build (docs Warning on both getting-started pages).
59
+
60
+ ## Logout
61
+ ```kotlin
62
+ CometChatUIKit.logout(object : CometChat.CallbackListener<String>() {
63
+ override fun onSuccess(s: String) { /* route to your sign-in screen */ }
64
+ override fun onError(e: CometChatException?) { /* surface */ }
65
+ })
66
+ ```
67
+ Call on app sign-out (it also clears the calls session when calling is enabled). After logout, the next chat entry must pass back through the gate.
68
+
69
+ ## Process death & configuration changes
70
+ - **Config change (rotation/theme):** the SDK is a process-level singleton — the Activity recreates, init/login state survives. Do NOT re-run init in every `onCreate` unconditionally; the gate + `isSDKInitialized()` / `getLoggedInUser()` guards make re-entry a no-op.
71
+ - **Process death:** Android may recreate a deep Activity with the process cold. Any Activity that hosts `CometChat*` views must tolerate this: check `CometChatUIKit.isSDKInitialized()` (and `getLoggedInUser() != null`) in `onCreate`; if not ready, bounce to the gate (which re-inits and re-logs-in via the guards) instead of rendering a dead chat surface.
72
+ - **Login session persists** across launches on the device — on warm starts `getLoggedInUser()` is non-null and the gate skips straight past login.
73
+
74
+ ## Surfacing CometChatException — never swallow
75
+ Every callback's `onError` hands you a `CometChatException` — log it AND show the user something actionable (`e.message`; wrong Region, a missing settings file, and a missing UID are the three most common). A swallowed `onError` is the #1 cause of "blank screen, no errors" (`troubleshooting.md`). Do not block the main thread waiting for callbacks (no latches/`runBlocking`) — they already arrive on the main thread; drive UI state from them.