@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
@@ -1,170 +0,0 @@
1
- # Calls SDK v4 → v5 migration (web)
2
-
3
- CometChat Calls SDK v5 is a **drop-in replacement** for v4 — bump the package, your existing code keeps working through deprecation shims. Migrate to v5 APIs to get granular event listeners, simpler init, and strongly-typed enums.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/javascript/migration-guide-v5
6
-
7
- ---
8
-
9
- ## Step 1 — Bump the package
10
-
11
- ```bash
12
- npm install @cometchat/calls-sdk-javascript@5
13
- ```
14
-
15
- If you're using CometChat UI Kits, this is enough — the kit's calls integration uses the v4 deprecated layer. **You can ship to production at this step** and migrate v5 APIs incrementally.
16
-
17
- ---
18
-
19
- ## Step 2 — Migrate init (optional but cleaner)
20
-
21
- ```diff
22
- - const callAppSettings = new CometChatCalls.CallAppSettingsBuilder()
23
- - .setAppId("APP_ID")
24
- - .setRegion("REGION")
25
- - .build();
26
- - await CometChatCalls.init(callAppSettings);
27
-
28
- + await CometChatCalls.init({ appId: "APP_ID", region: "REGION" });
29
- ```
30
-
31
- ---
32
-
33
- ## Step 3 — Add `login()` after Chat SDK login
34
-
35
- v5 introduces a dedicated Calls SDK auth step. After the user logs into the Chat SDK, call:
36
-
37
- ```ts
38
- const authToken = (await CometChat.getLoggedInUser())!.getAuthToken();
39
- await CometChatCalls.loginWithAuthToken(authToken); // login() takes a uid; use loginWithAuthToken for a token
40
- ```
41
-
42
- After this, `generateToken()` and `joinSession()` no longer need an authToken parameter.
43
-
44
- ---
45
-
46
- ## Step 4 — Migrate session settings to plain object
47
-
48
- ```diff
49
- - const callSettings = new CometChatCalls.CallSettingsBuilder()
50
- - .setIsAudioOnlyCall(true)
51
- - .showRecordingButton(true)
52
- - .startWithAudioMuted(false)
53
- - .build();
54
-
55
- + const sessionSettings = {
56
- + sessionType: "VOICE", // was setIsAudioOnlyCall(true)
57
- + hideRecordingButton: false, // was showRecordingButton(true) — INVERTED
58
- + startAudioMuted: false,
59
- + layout: "TILE",
60
- + };
61
- ```
62
-
63
- **Watch out:** the boolean logic is **inverted** for many settings (v4 `show*` → v5 `hide*`). Search-and-replace doesn't work — review each manually.
64
-
65
- ---
66
-
67
- ## Step 5 — Migrate events to granular listeners
68
-
69
- ```diff
70
- - const callSettings = new CometChatCalls.CallSettingsBuilder()
71
- - .setCallListener(new CometChatCalls.OngoingCallListener({
72
- - onCallEnded: () => { /* ... */ },
73
- - onUserJoined: (user) => { /* ... */ },
74
- - onUserLeft: (user) => { /* ... */ },
75
- - onError: (error) => { /* ... */ },
76
- - }))
77
- - .build();
78
-
79
- + const unsub1 = CometChatCalls.addEventListener("onSessionLeft", () => { /* ... */ });
80
- + const unsub2 = CometChatCalls.addEventListener("onParticipantJoined", (p) => { /* ... */ });
81
- + const unsub3 = CometChatCalls.addEventListener("onParticipantLeft", (p) => { /* ... */ });
82
- + // Errors now come back via Promise rejection from joinSession() etc.
83
- +
84
- + // Cleanup
85
- + return () => { unsub1(); unsub2(); unsub3(); };
86
- ```
87
-
88
- **Event-name mapping (most common):**
89
-
90
- | v4 | v5 |
91
- |---|---|
92
- | `onCallEnded` | `onSessionLeft` |
93
- | `onCallEndButtonPressed` | `onLeaveSessionButtonClicked` |
94
- | `onUserJoined(user)` | `onParticipantJoined(participant)` |
95
- | `onUserLeft(user)` | `onParticipantLeft(participant)` |
96
- | `onUserListUpdated(list)` | `onParticipantListChanged(list)` |
97
- | `onUserMuted(info)` | `onParticipantAudioMuted(participant)` |
98
- | `onRecordingToggled(info)` | `onRecordingStarted` / `onRecordingStopped` |
99
-
100
- ---
101
-
102
- ## Step 6 — Migrate session control method names
103
-
104
- ```diff
105
- - CometChatCalls.endSession()
106
- + CometChatCalls.leaveSession()
107
-
108
- - CometChatCalls.muteAudio(true)
109
- + CometChatCalls.muteAudio()
110
- - CometChatCalls.muteAudio(false)
111
- + CometChatCalls.unmuteAudio()
112
-
113
- - CometChatCalls.pauseVideo(true)
114
- + CometChatCalls.pauseVideo()
115
- - CometChatCalls.pauseVideo(false)
116
- + CometChatCalls.resumeVideo()
117
-
118
- - CometChatCalls.setMode(mode)
119
- + CometChatCalls.setLayout(layout)
120
-
121
- - CometChatCalls.startScreenShare()
122
- + CometChatCalls.startScreenSharing()
123
- ```
124
-
125
- > PiP rename: v4's `enterPIPMode()` became the static `CometChatCalls.enablePictureInPictureLayout()` in v5 (paired with `disablePictureInPictureLayout()`). Note the `onPictureInPictureLayoutEnabled` / `...Disabled` **callbacks are on `MobileSDKEvents`, not `WebSDKEvents`** — they are NOT subscribable via `CometChatCalls.addEventListener` on the web SDK (verified in `@cometchat/calls-sdk-javascript` `index.d.ts`: `MobileSDKEvents` vs `WebSDKEvents`). On **web**, prefer browser-native picture-in-picture — see `references/picture-in-picture.md`.
126
-
127
- ---
128
-
129
- ## Step 7 — `startSession` → `joinSession`
130
-
131
- ```diff
132
- - CometChatCalls.generateToken(sessionId, authToken).then((token) => {
133
- - CometChatCalls.startSession(token, callSettings, container);
134
- - });
135
-
136
- + CometChatCalls.generateToken(sessionId).then(({ token }) => {
137
- + CometChatCalls.joinSession(token, sessionSettings, container);
138
- + });
139
- ```
140
-
141
- > `joinSession`'s first arg is the **callToken** (from `generateToken`), not a sessionId — there is no token-free join. `generateToken` resolves to `{ token }`, so destructure it.
142
-
143
- ---
144
-
145
- ## Removed methods (no v5 replacement)
146
-
147
- - `CometChatCalls.switchToVideoCall()` — start a fresh session with `sessionType: "VIDEO"` instead
148
- - `CometChatCalls.getCallDetails()` — track session state via events
149
-
150
- ---
151
-
152
- ## Verification checklist
153
-
154
- - [ ] `package.json` lists `@cometchat/calls-sdk-javascript@^5`
155
- - [ ] `await CometChatCalls.loginWithAuthToken(authToken)` called after `CometChat.login`
156
- - [ ] `OngoingCallListener` removed; granular `addEventListener` calls in place with cleanup
157
- - [ ] `startSession` replaced with `joinSession`
158
- - [ ] `endSession` replaced with `leaveSession`
159
- - [ ] Inverted booleans audited (show* → hide* with `!`)
160
- - [ ] No use of removed methods (`switchToVideoCall`, `getCallDetails`)
161
- - [ ] Existing call flows tested end-to-end (incoming, accept, mute, screen-share, end)
162
-
163
- ---
164
-
165
- ## Pointers
166
-
167
- - Canonical migration guide: https://www.cometchat.com/docs/calls/javascript/migration-guide-v5
168
- - `cometchat-react-calls/SKILL.md` — current architecture (v5)
169
- - `cometchat-react-calls/references/call-layouts.md` — layout enum migration
170
- - `cometchat-react-calls/references/recording-screen-share.md` — recording events migration
@@ -1,245 +0,0 @@
1
- # Picture-in-Picture on web
2
-
3
- Web has two PiP APIs, used for different things:
4
-
5
- 1. **Video PiP** (`HTMLVideoElement.requestPictureInPicture()`) — lets a single `<video>` element float in a system-managed window above all browser tabs. Standard since Chrome 70 / Safari 13 / Firefox 71. Fine for one remote participant.
6
-
7
- 2. **Document PiP** (`window.documentPictureInPicture.requestWindow()`) — lets you put arbitrary HTML (custom call UI with controls, multi-tile grid, roster) in a floating window. Chrome 116+ only. Falls back gracefully where unsupported.
8
-
9
- This reference covers both, plus when to pick which.
10
-
11
- ---
12
-
13
- ## When to use Video PiP vs Document PiP
14
-
15
- | Scenario | Pick |
16
- |---|---|
17
- | 1:1 call, just want the remote face floating while user works | Video PiP |
18
- | Multi-party call, want the active speaker + a small roster floating | Document PiP if Chrome 116+, else fall back to Video PiP |
19
- | Want call controls (mute/end) visible in the PiP window | Document PiP only — Video PiP doesn't allow custom controls |
20
- | Cross-browser support including Safari + Firefox | Video PiP (with fallback when neither works) |
21
-
22
- The skill defaults to Video PiP for cross-browser compatibility; Document PiP is opt-in for Chromium-only apps.
23
-
24
- ---
25
-
26
- ## Video PiP — the simple path
27
-
28
- ```tsx
29
- // CustomOngoingCallView.tsx — extends the version in references/custom-ui.md
30
- const remoteVideoRef = useRef<HTMLVideoElement>(null);
31
- const [pipActive, setPipActive] = useState(false);
32
-
33
- async function enterPiP() {
34
- const video = remoteVideoRef.current;
35
- if (!video) return;
36
- if (!document.pictureInPictureEnabled) {
37
- setError("Picture-in-Picture isn't supported in this browser");
38
- return;
39
- }
40
- try {
41
- await video.requestPictureInPicture();
42
- setPipActive(true);
43
- } catch (err) {
44
- // user denied, video not yet playing, etc.
45
- console.warn("PiP request failed:", err);
46
- }
47
- }
48
-
49
- useEffect(() => {
50
- const video = remoteVideoRef.current;
51
- if (!video) return;
52
- const onEnter = () => setPipActive(true);
53
- const onLeave = () => setPipActive(false);
54
- video.addEventListener("enterpictureinpicture", onEnter);
55
- video.addEventListener("leavepictureinpicture", onLeave);
56
- return () => {
57
- video.removeEventListener("enterpictureinpicture", onEnter);
58
- video.removeEventListener("leavepictureinpicture", onLeave);
59
- };
60
- }, []);
61
- ```
62
-
63
- The `<video>` element keeps playing — PiP doesn't pause or remount. CSS doesn't apply (the OS owns the floating window). Hide the in-page video when PiP is active to avoid the "two videos playing" UX:
64
-
65
- ```tsx
66
- <video
67
- ref={remoteVideoRef}
68
- autoPlay
69
- playsInline
70
- style={{ display: pipActive ? "none" : "block" }}
71
- />
72
- ```
73
-
74
- ---
75
-
76
- ## Document PiP — the rich path (Chrome 116+)
77
-
78
- ```tsx
79
- const [pipWindow, setPipWindow] = useState<Window | null>(null);
80
-
81
- async function enterDocumentPiP() {
82
- // Feature detect
83
- if (!("documentPictureInPicture" in window)) {
84
- return enterPiP(); // fall through to video PiP
85
- }
86
-
87
- const pipWin = await (window as unknown as {
88
- documentPictureInPicture: { requestWindow: (opts: { width: number; height: number }) => Promise<Window> };
89
- }).documentPictureInPicture.requestWindow({
90
- width: 360,
91
- height: 480,
92
- });
93
-
94
- // Copy the call container into the PiP window
95
- const container = document.getElementById("ongoing-call-root");
96
- if (container) {
97
- pipWin.document.body.appendChild(container);
98
- }
99
-
100
- // PiP window has its own document — copy stylesheets so kit styling works
101
- for (const styleSheet of Array.from(document.styleSheets)) {
102
- try {
103
- const cssRules = Array.from(styleSheet.cssRules ?? []).map((r) => r.cssText).join("\n");
104
- const style = pipWin.document.createElement("style");
105
- style.textContent = cssRules;
106
- pipWin.document.head.appendChild(style);
107
- } catch {
108
- // cross-origin stylesheets throw — copy <link> href instead
109
- if (styleSheet.href) {
110
- const link = pipWin.document.createElement("link");
111
- link.rel = "stylesheet";
112
- link.href = styleSheet.href;
113
- pipWin.document.head.appendChild(link);
114
- }
115
- }
116
- }
117
-
118
- // When the user closes the PiP window (system X button), restore the container
119
- pipWin.addEventListener("pagehide", () => {
120
- const restored = pipWin.document.getElementById("ongoing-call-root");
121
- if (restored && document.getElementById("call-host")) {
122
- document.getElementById("call-host")!.appendChild(restored);
123
- }
124
- setPipWindow(null);
125
- });
126
-
127
- setPipWindow(pipWin);
128
- }
129
- ```
130
-
131
- The `container` keeps its event handlers and React fiber attached — clicking "End" inside the PiP window still calls your React handlers. This is the magic of Document PiP that single-video PiP doesn't give you.
132
-
133
- **Caveat:** stylesheets are copied at PiP-open time. If you change the theme mid-PiP (light/dark toggle), styles in the PiP window go stale. Add a `MutationObserver` or just don't allow theme switching while PiP is active.
134
-
135
- ---
136
-
137
- ## Browser support matrix
138
-
139
- | Browser | Video PiP | Document PiP |
140
- |---|---|---|
141
- | Chrome 70+ desktop | ✓ | Chrome 116+ |
142
- | Edge 79+ desktop | ✓ | Edge 116+ |
143
- | Safari 13+ desktop | ✓ | ✗ (no plans yet) |
144
- | Firefox 71+ desktop | ✓ (custom toggle UI, not standard API) | ✗ |
145
- | Chrome mobile (Android) | ✓ system-PiP equivalent | ✗ |
146
- | Safari iOS | iPad: ✓; iPhone: limited | ✗ |
147
-
148
- Feature-detect both. Don't render the "Enter PiP" button when neither is supported.
149
-
150
- ```tsx
151
- const canVideoPiP = typeof document !== "undefined" && document.pictureInPictureEnabled;
152
- const canDocPiP = typeof window !== "undefined" && "documentPictureInPicture" in window;
153
- const showPipButton = canVideoPiP || canDocPiP;
154
- ```
155
-
156
- ---
157
-
158
- ## Auto-enter PiP on tab switch
159
-
160
- A "tab visibility" pattern many call UX teams want — auto-enter PiP when the user switches away from the call tab:
161
-
162
- ```tsx
163
- useEffect(() => {
164
- const onVisibilityChange = () => {
165
- if (document.visibilityState === "hidden" && remoteVideoRef.current) {
166
- remoteVideoRef.current.requestPictureInPicture().catch(() => {});
167
- }
168
- };
169
- document.addEventListener("visibilitychange", onVisibilityChange);
170
- return () => document.removeEventListener("visibilitychange", onVisibilityChange);
171
- }, []);
172
- ```
173
-
174
- Browsers reject auto-PiP requests not tied to user gestures in some contexts (Safari is strictest). Use `await navigator.mediaSession.setActionHandler("enterpictureinpicture", ...)` for a cleaner API where supported.
175
-
176
- ---
177
-
178
- ## Auto-leave PiP on hangup
179
-
180
- When the call ends, exit PiP cleanly:
181
-
182
- ```tsx
183
- function endCall() {
184
- if (document.pictureInPictureElement) {
185
- document.exitPictureInPicture();
186
- }
187
- if (pipWindow) {
188
- pipWindow.close();
189
- setPipWindow(null);
190
- }
191
- CometChatCalls.leaveSession();
192
- // ...rest of cleanup
193
- }
194
- ```
195
-
196
- Without this, the PiP window stays floating after the call ends, showing a frozen frame.
197
-
198
- ---
199
-
200
- ## PiP + custom UI integration
201
-
202
- If you're using `enableDefaultLayout(true)` (kit-rendered call UI), PiP works on the kit's internal `<video>` element. Reach into it via:
203
-
204
- ```ts
205
- const callContainer = document.getElementById("calls-container");
206
- const video = callContainer?.querySelector("video"); // kit renders one or more
207
- if (video instanceof HTMLVideoElement) {
208
- await video.requestPictureInPicture();
209
- }
210
- ```
211
-
212
- Brittle — kit DOM structure can change between versions. Custom UI (Document PiP path above) is more stable.
213
-
214
- ---
215
-
216
- ## Anti-patterns
217
-
218
- 1. **Calling `requestPictureInPicture()` from `useEffect` on mount.** Browsers reject — must be in response to user gesture. Wire to a button.
219
- 2. **Forgetting to hide the in-page `<video>` while PiP is active.** Two videos play, audio doubles, layout breaks.
220
- 3. **Document PiP without copying stylesheets.** PiP window renders unstyled; user sees raw HTML.
221
- 4. **Not exiting PiP on hangup.** Frozen frame floats after call ends.
222
- 5. **Document PiP detection via `'documentPictureInPicture' in document`.** It's on `window`, not `document`. Common typo.
223
- 6. **Auto-PiP on every visibility change, including page reload.** User reloads → unintended PiP. Gate on call active + user-initiated focus loss.
224
-
225
- ---
226
-
227
- ## Verification checklist
228
-
229
- - [ ] PiP button only renders if `document.pictureInPictureEnabled` OR `'documentPictureInPicture' in window`
230
- - [ ] PiP request triggered from a click handler, not `useEffect`
231
- - [ ] In-page video hidden while PiP active (or repositioned)
232
- - [ ] `enterpictureinpicture` / `leavepictureinpicture` listeners update local state
233
- - [ ] Hangup path calls `document.exitPictureInPicture()` if active
234
- - [ ] Document PiP path copies stylesheets to the PiP window's document
235
- - [ ] Document PiP path restores the container to the main window on `pagehide`
236
- - [ ] Real-browser smoke: Chrome desktop (both APIs) + Safari desktop (Video PiP) + Firefox (Video PiP)
237
-
238
- ---
239
-
240
- ## Pointers
241
-
242
- - Custom UI integration: `references/custom-ui.md`
243
- - Kit-default layout: kit handles internal video PiP via the kit's own controls
244
- - Document PiP spec: https://wicg.github.io/document-picture-in-picture/
245
- - `cometchat-react-calls` SKILL.md — base hard rules
@@ -1,238 +0,0 @@
1
- # Raise hand on web
2
-
3
- Lets participants signal they want to speak without interrupting the current speaker. The SDK ships first-party support — four method calls, two events, one settings flag. No custom signaling needed.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/javascript/raise-hand
6
- **Use it for:** classrooms, large group calls, town halls, any call with > ~5 participants where verbal turn-taking gets messy.
7
-
8
- ---
9
-
10
- ## SDK API (web Calls SDK)
11
-
12
- ```ts
13
- import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
14
-
15
- // Local user raises hand
16
- CometChatCalls.raiseHand();
17
-
18
- // Local user lowers hand
19
- CometChatCalls.lowerHand();
20
-
21
- // Subscribe to other participants' hand state
22
- CometChatCalls.addEventListener("onParticipantHandRaised", (participant) => {
23
- // participant.uid, participant.name available
24
- });
25
-
26
- CometChatCalls.addEventListener("onParticipantHandLowered", (participant) => {
27
- // ...
28
- });
29
- ```
30
-
31
- The SDK ships a built-in raise-hand button in the default control panel. Hide it via call settings if you're rolling custom UI:
32
-
33
- ```ts
34
- // SessionSettings object passed to joinSession(token, settings, container).
35
- // hideRaiseHandButton is a SessionSettings field — NOT a CallSettingsBuilder
36
- // method, and there is no setSessionID (the session is carried by the token
37
- // from generateToken(sessionId)).
38
- const settings = { hideRaiseHandButton: true }; // suppress the SDK's button — your UI takes over
39
- ```
40
-
41
- ---
42
-
43
- ## When to use built-in vs custom
44
-
45
- | Scenario | Use |
46
- |---|---|
47
- | Default kit UI is fine; just want raise-hand | Built-in (don't pass `hideRaiseHandButton`) |
48
- | Custom call UI (your own control panel) | Custom — call `raiseHand()` / `lowerHand()` from your buttons |
49
- | Need different host vs participant UI | Custom — query group scope, render different controls |
50
- | Need raise-hand list (host sees who's raised) | Custom — maintain local Map<uid, raisedAt> via the listeners |
51
-
52
- ---
53
-
54
- ## Custom raise-hand UX — three pieces
55
-
56
- ### 1. Local participant button (toggle)
57
-
58
- ```tsx
59
- import { useState } from "react";
60
- import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
61
-
62
- function RaiseHandButton() {
63
- const [raised, setRaised] = useState(false);
64
-
65
- function toggle() {
66
- if (raised) {
67
- CometChatCalls.lowerHand();
68
- setRaised(false);
69
- } else {
70
- CometChatCalls.raiseHand();
71
- setRaised(true);
72
- }
73
- }
74
-
75
- return (
76
- <button onClick={toggle} aria-pressed={raised}>
77
- {raised ? "✋ Lower" : "✋ Raise hand"}
78
- </button>
79
- );
80
- }
81
- ```
82
-
83
- Visual hint: render the icon with `aria-pressed={raised}` so screen readers announce the toggle state. (See `cometchat-a11y` for the broader rule.)
84
-
85
- ### 2. Raised-hands roster (host view)
86
-
87
- ```tsx
88
- import { useEffect, useState } from "react";
89
- import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
90
-
91
- interface RaisedParticipant { uid: string; name: string; raisedAt: number; }
92
-
93
- function RaisedHandsList() {
94
- const [raised, setRaised] = useState<Map<string, RaisedParticipant>>(new Map());
95
-
96
- useEffect(() => {
97
- const onRaised = (p: { uid: string; name: string }) => {
98
- setRaised(prev => {
99
- const next = new Map(prev);
100
- next.set(p.uid, { ...p, raisedAt: Date.now() });
101
- return next;
102
- });
103
- };
104
- const onLowered = (p: { uid: string }) => {
105
- setRaised(prev => {
106
- const next = new Map(prev);
107
- next.delete(p.uid);
108
- return next;
109
- });
110
- };
111
-
112
- // addEventListener returns an unsubscribe fn — there is no removeEventListener.
113
- const offRaised = CometChatCalls.addEventListener("onParticipantHandRaised", onRaised);
114
- const offLowered = CometChatCalls.addEventListener("onParticipantHandLowered", onLowered);
115
-
116
- return () => {
117
- offRaised();
118
- offLowered();
119
- };
120
- }, []);
121
-
122
- // Sort oldest-first — fairness queue
123
- const sorted = Array.from(raised.values()).sort((a, b) => a.raisedAt - b.raisedAt);
124
- if (sorted.length === 0) return null;
125
-
126
- return (
127
- <ul aria-label="Raised hands queue">
128
- {sorted.map(p => (
129
- <li key={p.uid}>
130
- ✋ {p.name} <span style={{ color: "#888" }}>{secondsAgo(p.raisedAt)}</span>
131
- </li>
132
- ))}
133
- </ul>
134
- );
135
- }
136
-
137
- function secondsAgo(t: number) { return `${Math.round((Date.now() - t) / 1000)}s ago`; }
138
- ```
139
-
140
- Sort by `raisedAt` ascending = first-raised-first-called, which feels fair to participants. Don't sort alphabetically.
141
-
142
- ### 3. Toast notification for the host
143
-
144
- ```tsx
145
- useEffect(() => {
146
- const onRaised = (p: { name: string }) => {
147
- toast.info(`${p.name} raised their hand`, { duration: 4000 });
148
- };
149
- const offRaised = CometChatCalls.addEventListener("onParticipantHandRaised", onRaised);
150
- return () => offRaised();
151
- }, []);
152
- ```
153
-
154
- Use `aria-live="polite"` on the toast region so screen readers announce — same a11y pattern as new-message announcements (cf. `cometchat-a11y`).
155
-
156
- ---
157
-
158
- ## Lower-by-host pattern
159
-
160
- The SDK exposes `lowerHand()` only for the local user. To let a host lower someone else's hand, you need a moderator action via the participant-management API:
161
-
162
- ```ts
163
- // Host action — requires moderator/admin scope on the group
164
- async function lowerParticipantHand(uid: string) {
165
- // SDK doesn't expose remoteLowerHand directly. Two options:
166
- // A) Send a custom message to the participant; their client lowers itself
167
- // B) Use the moderator mute/kick API as the boundary
168
-
169
- // Option A: lightweight, requires the participant's client to listen
170
- await CometChat.sendCustomMessage(new CometChat.CustomMessage(
171
- uid, CometChat.RECEIVER_TYPE.USER, "lower_hand", {}
172
- ));
173
- }
174
- ```
175
-
176
- On the receiving side:
177
-
178
- ```ts
179
- CometChat.addMessageListener("raise-hand-control", new CometChat.MessageListener({
180
- onCustomMessageReceived: (msg) => {
181
- if (msg.getType() === "lower_hand") {
182
- CometChatCalls.lowerHand();
183
- }
184
- },
185
- }));
186
- ```
187
-
188
- This is application-level signaling, not SDK-built-in. Document the contract in your team's call protocols.
189
-
190
- ---
191
-
192
- ## Hide button on rendered surfaces
193
-
194
- If using the kit's `<CometChatOngoingCall />` and want raise-hand off entirely (e.g. 1:1 calls don't need it):
195
-
196
- ```tsx
197
- import { CometChatCalls } from "@cometchat/calls-sdk-javascript";
198
-
199
- // SessionSettings object for joinSession (hideRaiseHandButton is an object field).
200
- const settings = { hideRaiseHandButton: true };
201
- ```
202
-
203
- For 1:1 calls, default to hidden. For group calls > 5 participants, default to shown.
204
-
205
- ---
206
-
207
- ## Anti-patterns
208
-
209
- 1. **Polling for raised-hand state.** The SDK fires events on change — listen, don't poll. Polling burns CPU.
210
- 2. **Sorting raised-hands alphabetically.** First-raised-first-called is the fair queue. Sort by `raisedAt` ascending.
211
- 3. **Auto-lowering hands after a timer.** Some people raise their hand and wait. Letting the SDK manage state means the participant lowers when called or via their own button.
212
- 4. **Showing raise-hand button in 1:1 calls.** Visually noisy and pointless. Gate on `participantCount > 2`.
213
- 5. **Skipping the listener cleanup in `useEffect`'s return.** Stacked listeners fire multiple times when the component re-mounts — duplicate toasts, duplicate roster entries.
214
- 6. **Treating "hand raised" as a permission grant.** Raise-hand is a request, not a mute override. The host still has to unmute the participant separately.
215
-
216
- ---
217
-
218
- ## Verification checklist
219
-
220
- - [ ] `raiseHand()` / `lowerHand()` calls in your code (not just relying on the SDK button)
221
- - [ ] Both `onParticipantHandRaised` and `onParticipantHandLowered` listeners registered
222
- - [ ] Listeners cleaned up in component unmount (return from `useEffect`)
223
- - [ ] Roster sorted by `raisedAt` ascending
224
- - [ ] `hideRaiseHandButton: true` in call settings IF custom UI is used (otherwise duplicates)
225
- - [ ] Toast / badge UI uses `aria-live="polite"` (a11y)
226
- - [ ] Browser smoke: 3 tabs, hand-raise from 2 of them, host's roster shows both in raise-order
227
- - [ ] Lower-hand smoke: tab A raises, lowers, host's roster updates without page refresh
228
-
229
- ---
230
-
231
- ## Pointers
232
-
233
- - `cometchat-react-calls` SKILL.md — the seven hard rules (still apply for raise-hand UI)
234
- - `references/group-calls.md` — group call architecture (raise-hand is a group-call feature)
235
- - `references/custom-ui.md` — custom call UI patterns
236
- - `cometchat-a11y` — toast announcements for raised-hand events
237
- - Canonical docs: https://www.cometchat.com/docs/calls/javascript/raise-hand
238
- - For deeper SDK reference (other event types, presenter-mode interplay): query the docs MCP at `https://www.cometchat.com/docs/mcp`