@cometchat/skills 4.4.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +55 -0
- package/.claude-plugin/plugin.json +14 -0
- package/CHANGELOG.md +36 -0
- package/LICENSE +21 -0
- package/README.md +41 -163
- package/RULES.md +114 -0
- package/bin/cometchat-skills.mjs +1180 -0
- package/bin/legacy-skills.json +95 -0
- package/catalogs/android-v6.json +1646 -0
- package/catalogs/flutter-v6.json +651 -0
- package/catalogs/ios-v5.json +1383 -0
- package/catalogs/rn-calls-v5.json +134 -0
- package/catalogs/rn-calls-v5.symbols.txt +58 -0
- package/catalogs/rn-sdk-v4.json +672 -0
- package/catalogs/rn-v5.json +449 -0
- package/catalogs/rn-v5.symbols.txt +216 -0
- package/catalogs/sdk-android-v5.json +514 -0
- package/contracts.android-calls-v5.json +122 -0
- package/contracts.android-v6.json +135 -0
- package/contracts.angular-v5.json +694 -0
- package/contracts.flutter-calls-v5.json +77 -0
- package/contracts.flutter-v6.json +126 -0
- package/contracts.ios-calls-v5.json +67 -0
- package/contracts.ios-v5.json +436 -0
- package/contracts.json +82 -0
- package/contracts.rn-calls-v5.json +77 -0
- package/contracts.rn-v5.json +727 -0
- package/contracts.sdk-android-v5.json +15 -0
- package/contracts.web-calls-v5.json +45 -0
- package/features.android-calls-v5.json +246 -0
- package/features.android-v6.json +65 -0
- package/features.angular-v5.json +521 -0
- package/features.flutter-calls-v5.json +286 -0
- package/features.flutter-v6.json +484 -0
- package/features.ios-calls-v5.json +236 -0
- package/features.ios-v5.json +573 -0
- package/features.json +61 -0
- package/features.rn-calls-v5.json +187 -0
- package/features.rn-v5.json +614 -0
- package/features.sdk-android-v5.json +40 -0
- package/features.sdk-jsv4.json +24 -0
- package/features.web-calls-v5.json +108 -0
- package/package.json +151 -74
- package/peers.yaml +312 -0
- package/registry/README.md +31 -0
- package/registry/android-calls-v5.json +54 -0
- package/registry/android-v6.json +137 -0
- package/registry/angular-v5.json +114 -0
- package/registry/flutter-calls-v5.json +54 -0
- package/registry/flutter-v6.json +119 -0
- package/registry/ios-calls-v5.json +59 -0
- package/registry/ios-v5.json +97 -0
- package/registry/rn-calls-v5.json +59 -0
- package/registry/rn-v5.json +129 -0
- package/registry/sdk-android-v5.json +53 -0
- package/registry/sdk-jsv4.json +53 -0
- package/registry/web-calls-v5.json +54 -0
- package/registry/web-v7.json +99 -0
- package/skills/cometchat/SKILL.md +42 -2096
- package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
- package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
- package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
- package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
- package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
- package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
- package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
- package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
- package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
- package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
- package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
- package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
- package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
- package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
- package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
- package/skills/cometchat-android-v6-core/SKILL.md +236 -672
- package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
- package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
- package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
- package/skills/cometchat-android-v6-core/references/layout.md +112 -0
- package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
- package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
- package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
- package/skills/cometchat-android-v6-events/SKILL.md +46 -184
- package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
- package/skills/cometchat-android-v6-features/SKILL.md +74 -143
- package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
- package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
- package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
- package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
- package/skills/cometchat-android-v6-production/SKILL.md +40 -179
- package/skills/cometchat-android-v6-push/SKILL.md +39 -289
- package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
- package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
- package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
- package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
- package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
- package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
- package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
- package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
- package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
- package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
- package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
- package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
- package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
- package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
- package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
- package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
- package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
- package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
- package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
- package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
- package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
- package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
- package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
- package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
- package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
- package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
- package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
- package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
- package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
- package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
- package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
- package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
- package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
- package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
- package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
- package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
- package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
- package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
- package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
- package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
- package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
- package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
- package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
- package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
- package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
- package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
- package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
- package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
- package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
- package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
- package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
- package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
- package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
- package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
- package/skills/cometchat-ios-calls/SKILL.md +112 -563
- package/skills/cometchat-ios-components/SKILL.md +44 -834
- package/skills/cometchat-ios-core/SKILL.md +181 -1068
- package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
- package/skills/cometchat-ios-core/references/docs-map.md +123 -0
- package/skills/cometchat-ios-core/references/install.md +23 -0
- package/skills/cometchat-ios-core/references/layout.md +186 -0
- package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
- package/skills/cometchat-ios-core/references/swiftui.md +91 -0
- package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
- package/skills/cometchat-ios-customization/SKILL.md +33 -968
- package/skills/cometchat-ios-features/SKILL.md +29 -738
- package/skills/cometchat-ios-migration/SKILL.md +39 -0
- package/skills/cometchat-ios-placement/SKILL.md +51 -729
- package/skills/cometchat-ios-push/SKILL.md +24 -602
- package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
- package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
- package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
- package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
- package/skills/cometchat-onboarding/SKILL.md +89 -0
- package/skills/cometchat-onboarding/references/archetypes.md +51 -0
- package/skills/cometchat-onboarding/references/calling-first.md +77 -0
- package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
- package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
- package/skills/cometchat-onboarding/references/platforms.md +90 -0
- package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
- package/skills/cometchat-react-native-calls/SKILL.md +200 -0
- package/skills/cometchat-react-native-components/SKILL.md +142 -0
- package/skills/cometchat-react-native-core/SKILL.md +313 -0
- package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
- package/skills/cometchat-react-native-core/references/component-props.md +105 -0
- package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
- package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
- package/skills/cometchat-react-native-core/references/layout.md +61 -0
- package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
- package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
- package/skills/cometchat-react-native-customization/SKILL.md +198 -0
- package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
- package/skills/cometchat-react-native-features/SKILL.md +122 -0
- package/skills/cometchat-react-native-migration/SKILL.md +103 -0
- package/skills/cometchat-react-native-placement/SKILL.md +158 -0
- package/skills/cometchat-react-native-production/SKILL.md +78 -0
- package/skills/cometchat-react-native-push/SKILL.md +88 -0
- package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
- package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
- package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
- package/skills/cometchat-react-native-testing/SKILL.md +94 -0
- package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
- package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
- package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
- package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
- package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
- package/skills/cometchat-react-v7-components/SKILL.md +72 -0
- package/skills/cometchat-react-v7-core/SKILL.md +101 -0
- package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
- package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
- package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
- package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
- package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
- package/skills/cometchat-react-v7-core/references/layout.md +158 -0
- package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
- package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
- package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
- package/skills/cometchat-react-v7-core/references/theming.md +52 -0
- package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
- package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
- package/skills/cometchat-react-v7-features/SKILL.md +92 -0
- package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
- package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
- package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
- package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
- package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
- package/skills/cometchat-react-v7-push/SKILL.md +53 -0
- package/test-suite/README.md +70 -0
- package/test-suite/catalogs/android-calls-v5.json +830 -0
- package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
- package/test-suite/catalogs/android-v6.json +1646 -0
- package/test-suite/catalogs/android-v6.symbols.txt +298 -0
- package/test-suite/catalogs/angular-v5.json +7587 -0
- package/test-suite/catalogs/flutter-calls-v5.json +196 -0
- package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
- package/test-suite/catalogs/flutter-v6.json +651 -0
- package/test-suite/catalogs/ios-calls-v5.json +158 -0
- package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
- package/test-suite/catalogs/ios-v5.json +1383 -0
- package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
- package/test-suite/catalogs/rn-calls-v5.json +134 -0
- package/test-suite/catalogs/rn-sdk-v4.json +672 -0
- package/test-suite/catalogs/rn-v5.json +449 -0
- package/test-suite/catalogs/sdk-android-v5.json +514 -0
- package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
- package/test-suite/catalogs/sdk-jsv4.json +800 -0
- package/test-suite/catalogs/web-calls-v5.json +195 -0
- package/test-suite/catalogs/web-v7.json +1243 -0
- package/test-suite/scripts/build-registry.mjs +113 -0
- package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
- package/test-suite/scripts/catalog-refresh.mjs +100 -0
- package/test-suite/scripts/lint-skills.mjs +909 -0
- package/test-suite/scripts/measure-tokens.mjs +169 -0
- package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
- package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
- package/test-suite/scripts/typecheck-fences.mjs +206 -0
- package/test-suite/scripts/verify-catalog.mjs +242 -0
- package/test-suite/scripts/verify-contract-fences.mjs +94 -0
- package/test-suite/scripts/verify-detection.mjs +178 -0
- package/test-suite/scripts/verify-docs-base.mjs +91 -0
- package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
- package/test-suite/scripts/verify-golden-path.mjs +138 -0
- package/test-suite/scripts/verify-oracle-components.mjs +133 -0
- package/test-suite/scripts/verify-template-bindings.mjs +148 -0
- package/test-suite/typecheck/angular-v5/package.json +21 -0
- package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
- package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
- package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
- package/test-suite/typecheck/web-v7/package.json +18 -0
- package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
- package/bin/install.js +0 -1003
- package/skills/.claude-plugin/marketplace.json +0 -86
- package/skills/cometchat/references/asking-questions.md +0 -48
- package/skills/cometchat-a11y/SKILL.md +0 -477
- package/skills/cometchat-android-v5/SKILL.md +0 -121
- package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
- package/skills/cometchat-android-v5-calls/references/README.md +0 -53
- package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
- package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
- package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
- package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
- package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
- package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
- package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
- package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
- package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
- package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
- package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
- package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
- package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
- package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
- package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
- package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
- package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
- package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
- package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
- package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
- package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
- package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
- package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
- package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
- package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
- package/skills/cometchat-android-v5-components/SKILL.md +0 -431
- package/skills/cometchat-android-v5-core/SKILL.md +0 -486
- package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
- package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
- package/skills/cometchat-android-v5-features/SKILL.md +0 -131
- package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
- package/skills/cometchat-android-v5-production/SKILL.md +0 -95
- package/skills/cometchat-android-v5-push/SKILL.md +0 -619
- package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
- package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
- package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
- package/skills/cometchat-android-v6/SKILL.md +0 -108
- package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
- package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
- package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
- package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
- package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
- package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
- package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
- package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
- package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
- package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
- package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
- package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
- package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
- package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
- package/skills/cometchat-angular-calls/SKILL.md +0 -380
- package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
- package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
- package/skills/cometchat-angular-calls/references/call-session.md +0 -167
- package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
- package/skills/cometchat-angular-calls/references/device-management.md +0 -154
- package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
- package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
- package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
- package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
- package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
- package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
- package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
- package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
- package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
- package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
- package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
- package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
- package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
- package/skills/cometchat-angular-components/SKILL.md +0 -235
- package/skills/cometchat-angular-core/SKILL.md +0 -386
- package/skills/cometchat-angular-customization/SKILL.md +0 -616
- package/skills/cometchat-angular-features/SKILL.md +0 -329
- package/skills/cometchat-angular-patterns/SKILL.md +0 -256
- package/skills/cometchat-angular-placement/SKILL.md +0 -314
- package/skills/cometchat-angular-production/SKILL.md +0 -564
- package/skills/cometchat-angular-push/SKILL.md +0 -389
- package/skills/cometchat-angular-testing/SKILL.md +0 -605
- package/skills/cometchat-angular-theming/SKILL.md +0 -290
- package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
- package/skills/cometchat-astro-patterns/SKILL.md +0 -708
- package/skills/cometchat-calls/SKILL.md +0 -364
- package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
- package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
- package/skills/cometchat-calls/references/use-case-support.md +0 -189
- package/skills/cometchat-calls/references/use-case-team.md +0 -180
- package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
- package/skills/cometchat-components/SKILL.md +0 -1142
- package/skills/cometchat-core/SKILL.md +0 -1048
- package/skills/cometchat-customization/SKILL.md +0 -580
- package/skills/cometchat-customization/references/component-catalog.md +0 -236
- package/skills/cometchat-features/SKILL.md +0 -861
- package/skills/cometchat-flutter-v5/SKILL.md +0 -173
- package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
- package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
- package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
- package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
- package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
- package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
- package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
- package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
- package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
- package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
- package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
- package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
- package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
- package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
- package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
- package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
- package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
- package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
- package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
- package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
- package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
- package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
- package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
- package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
- package/skills/cometchat-flutter-v6/SKILL.md +0 -446
- package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
- package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
- package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
- package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
- package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
- package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
- package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
- package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
- package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
- package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
- package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
- package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
- package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
- package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
- package/skills/cometchat-i18n/SKILL.md +0 -419
- package/skills/cometchat-ios/SKILL.md +0 -325
- package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
- package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
- package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
- package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
- package/skills/cometchat-ios-calls/references/call-session.md +0 -218
- package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
- package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
- package/skills/cometchat-ios-calls/references/device-management.md +0 -171
- package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
- package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
- package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
- package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
- package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
- package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
- package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
- package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
- package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
- package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
- package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
- package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
- package/skills/cometchat-ios-production/SKILL.md +0 -738
- package/skills/cometchat-ios-testing/SKILL.md +0 -376
- package/skills/cometchat-ios-theming/SKILL.md +0 -667
- package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
- package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
- package/skills/cometchat-native-calls/SKILL.md +0 -671
- package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
- package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
- package/skills/cometchat-native-calls/references/call-session.md +0 -182
- package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
- package/skills/cometchat-native-calls/references/device-management.md +0 -158
- package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
- package/skills/cometchat-native-calls/references/group-calls.md +0 -296
- package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
- package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
- package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
- package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
- package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
- package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
- package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
- package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
- package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
- package/skills/cometchat-native-calls/references/share-invite.md +0 -146
- package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
- package/skills/cometchat-native-components/SKILL.md +0 -628
- package/skills/cometchat-native-core/SKILL.md +0 -679
- package/skills/cometchat-native-customization/SKILL.md +0 -716
- package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
- package/skills/cometchat-native-features/SKILL.md +0 -638
- package/skills/cometchat-native-placement/SKILL.md +0 -509
- package/skills/cometchat-native-production/SKILL.md +0 -700
- package/skills/cometchat-native-push/SKILL.md +0 -594
- package/skills/cometchat-native-testing/SKILL.md +0 -582
- package/skills/cometchat-native-theming/SKILL.md +0 -681
- package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
- package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
- package/skills/cometchat-placement/SKILL.md +0 -1360
- package/skills/cometchat-production/SKILL.md +0 -1027
- package/skills/cometchat-react-calls/SKILL.md +0 -752
- package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
- package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
- package/skills/cometchat-react-calls/references/call-session.md +0 -235
- package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
- package/skills/cometchat-react-calls/references/device-management.md +0 -210
- package/skills/cometchat-react-calls/references/group-calls.md +0 -257
- package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
- package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
- package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
- package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
- package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
- package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
- package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
- package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
- package/skills/cometchat-react-calls/references/share-invite.md +0 -175
- package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
- package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
- package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
- package/skills/cometchat-react-patterns/SKILL.md +0 -628
- package/skills/cometchat-react-push/SKILL.md +0 -634
- package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
- package/skills/cometchat-react-testing/SKILL.md +0 -413
- package/skills/cometchat-theming/SKILL.md +0 -498
- package/skills/cometchat-troubleshooting/SKILL.md +0 -294
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cometchat-angular-v5-troubleshooting
|
|
3
|
+
description: "Diagnose a broken CometChat Angular integration — blank panes, silent no-render, empty lists, events that never fire, UI that does not update, memory leaks, install failures. Symptom to cause to fix. Triggers: 'chat not showing', 'blank screen', 'nothing renders', 'click handler not firing', 'messages not updating', 'ERESOLVE', 'cometchat not working'."
|
|
4
|
+
license: "MIT"
|
|
5
|
+
compatibility: "@cometchat/chat-uikit-angular ^5 (5.1.0–5.2.0 verified); Angular 17-21"
|
|
6
|
+
metadata:
|
|
7
|
+
author: "CometChat"
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
tags: "cometchat angular troubleshooting v5 debug blank-screen silent-failure diagnostics"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
> **Ground truth:** `@cometchat/chat-uikit-angular@5` (5.1.0–5.2.0 verified). Symptoms map to causes verified against the installed kit and the live `{DOCS_BASE}/ui-kit/angular/troubleshooting.md` page (base + paths in `cometchat-angular-v5-core/references/docs-map.md`). Every `CometChat*` symbol named here exists in the `angular-v5` catalog; a fix that requires a symbol not in the catalog is a bug in this file, not a missing export.
|
|
13
|
+
|
|
14
|
+
## Companion skills (read first)
|
|
15
|
+
- `cometchat-angular-v5-core` — `references/anti-patterns.md` and `references/troubleshooting.md` carry the same table in more depth.
|
|
16
|
+
|
|
17
|
+
## Use this skill when
|
|
18
|
+
Something is wrong and the error message is unhelpful or absent.
|
|
19
|
+
|
|
20
|
+
## Start here — Angular fails SILENTLY
|
|
21
|
+
Four of the five most common CometChat-Angular faults produce **no error at all**. Do not wait for a stack trace.
|
|
22
|
+
|
|
23
|
+
Run these four checks in order before anything else:
|
|
24
|
+
|
|
25
|
+
**1. Is the component in `imports: []`?**
|
|
26
|
+
Missing → Angular treats `<cometchat-conversations>` as unknown HTML and renders nothing. No error, no warning, blank space. This is the single most common cause.
|
|
27
|
+
|
|
28
|
+
**2. Does the container have height?**
|
|
29
|
+
```css
|
|
30
|
+
html, body { height: 100%; margin: 0; }
|
|
31
|
+
```
|
|
32
|
+
Plus a `100dvh` shell and `min-height: 0` on every flex column. An unsized ancestor collapses the list to 0px — markup correct, nothing visible.
|
|
33
|
+
|
|
34
|
+
**3. Did `login()` resolve before render?**
|
|
35
|
+
Lists render empty with no error when there is no session. Check `CometChatUIKit.getLoggedInUser()` is non-null at the moment the component mounts.
|
|
36
|
+
|
|
37
|
+
**4. Is the binding name real?**
|
|
38
|
+
`(ccConversationClicked)` never fires — the real output is `(itemClick)`. Angular does not warn about unknown outputs. Verified names are in `cometchat-angular-v5-components`.
|
|
39
|
+
|
|
40
|
+
## Symptom → cause → fix
|
|
41
|
+
| Symptom | Cause | Fix |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| Icons missing/blank across the kit | `assets` not registered in `angular.json` | add the `src/lib/assets` glob → `output: assets`; the most commonly missed step |
|
|
44
|
+
| Scrolling the list scrolls the WHOLE page | shell/columns missing `overflow: hidden` | `min-height: 0` lets it shrink; `overflow: hidden` keeps the scroll inside the pane — both are required |
|
|
45
|
+
| List doesn't scroll at all — bottom items unreachable | `<cometchat-conversations>`/`-users`/`-groups`/`-call-logs`/`-search`/`-message-list` has no `flex: 1; min-height: 0` of its OWN | add the `.cc-fill` class to the tag itself, not just its ancestors — the list resolves an internal `height: 100%` and does not size itself |
|
|
46
|
+
| Whole surface runs past the viewport / clipped, on a **routed** page only | `<cometchat-error-boundary>` is the template root and ships **no** `:host` sizing, so a `height: 100%` shell under it resolves against nothing | add `cometchat-error-boundary { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }` — it is styled by ELEMENT, not by a class. Symptom hides when the shell uses `100dvh` (viewport-relative), appears the moment it becomes `100%` under a routed outlet |
|
|
47
|
+
| `<cometchat-call-logs>` shows "OOPS! Looks like something went wrong" | KIT BUG (5.1.0), not your code: `CallLogsService` builds `new CometChatUIKitCalls.CallLogRequestBuilder()` without awaiting the lazy calls-SDK load, so the accessor is still `null`. Zero network requests are made — it fails before fetching, and Retry does not recover | No host-side fix. Do not hand-roll around it; report it. Note `(error)` will NOT surface it — call-logs has no `error` output (it takes an `onError` INPUT) |
|
|
48
|
+
| Blank space where chat should be | component not in `imports: []` | add the class to that component's `imports` |
|
|
49
|
+
| Blank pane, markup correct | ancestor has no height | `html, body { height: 100% }` + `100dvh` + `min-height: 0` |
|
|
50
|
+
| Lists render but always empty | rendered before `login()` resolved | init → login before bootstrap, or gate the route |
|
|
51
|
+
| Click handler never fires | wrong output name | use the verified name; there is no `cc` prefix |
|
|
52
|
+
| Selected row never highlights | `activeConversation` not bound | bind it to the same state as the message pane |
|
|
53
|
+
| Messages arrive, UI does not update | async SDK callback doesn't repaint (Angular 21 is zoneless by default, so `NgZone.run()` won't help) | write to a signal or call `ChangeDetectorRef.markForCheck()` after the update (core `lifecycle.md`) |
|
|
54
|
+
| Memory grows per route change | no teardown | `takeUntil(destroy$)` + `removeMessageListener(id)` in `ngOnDestroy` |
|
|
55
|
+
| Duplicate messages after navigating | listener registered twice, never removed | register with a stable id; remove on destroy |
|
|
56
|
+
| "Please wait until the previous login request ends." | concurrent `login()` | cache the in-flight promise |
|
|
57
|
+
| `npm install` fails `ERESOLVE` | project on Angular 22 | peer range is `<22.0.0`; use `@angular/cli@21` |
|
|
58
|
+
| Build error: path not exported by package | `@import` of the kit stylesheet | register the full `node_modules/...` path in `angular.json` |
|
|
59
|
+
| Config empty at runtime | credentials in `.env` | Angular reads `environment.ts`, not `.env` |
|
|
60
|
+
| Import will not compile | bare class name used | use the exported `…Component` form |
|
|
61
|
+
| Header shows one chat, messages another | `[user]`/`[group]` mismatch | pass the same subject to header, list and composer |
|
|
62
|
+
| Reply button does nothing | no thread surface rendered | wire a thread panel or hide the affordance |
|
|
63
|
+
| Feature missing, no error | dashboard extension off | enable it for the app the credentials point at |
|
|
64
|
+
| Call buttons render as empty zero-size elements | `uiKit.callsSDK` missing from `initFromSettings` | add `uiKit: { callsSDK: {} }`; installing the package does not enable calling. Check `CometChatUIKit.isCallingEnabled()` |
|
|
65
|
+
| Lists show "OOPS!" on first load and Retry does nothing | first fetch raced login; ConversationsService caches the failure | bootstrap AFTER login resolves; give the user a retry that remounts the component |
|
|
66
|
+
| Calls never ring | listener not at app root, or calls SDK absent | mount `<cometchat-incoming-call>` at root; install the calls SDK |
|
|
67
|
+
| Calls fail on a LAN IP | `getUserMedia` needs a secure context | use HTTPS or localhost |
|
|
68
|
+
| `window is not defined` | SSR running browser code | guard with `isPlatformBrowser` |
|
|
69
|
+
| Dropdown clipped | ancestor `overflow: hidden` or `transform` | remove it from the chain |
|
|
70
|
+
| Layout jumps when data loads | box sizes to content | pin the height so loading and loaded share one box |
|
|
71
|
+
|
|
72
|
+
## Where the docs contradict this skill
|
|
73
|
+
One entry above still disagrees with `{DOCS_BASE}/ui-kit/angular/overview.md`, and this skill is right because it is verified against the published package:
|
|
74
|
+
- **Angular 22** — the docs list it as supported; the peer range excludes it and `npm install` hard-fails. Do not follow the docs here, and never `--force` past it.
|
|
75
|
+
|
|
76
|
+
Also verify against the installed package:
|
|
77
|
+
- **`@cometchat/cards-angular`** — required since 5.1.0. (The overview's peer list now lists it — corrected upstream, verified against cometchat/docs, 2026-09-09.)
|
|
78
|
+
|
|
79
|
+
If a fix in this table seems to contradict a guide, check the installed package before changing course.
|
|
80
|
+
|
|
81
|
+
## When the table does not cover it
|
|
82
|
+
1. **Confirm the symbol is real.** The exported class name, not the docs title.
|
|
83
|
+
2. **Fetch the component's docs page** (`core/references/docs-map.md`) and compare every input you pass.
|
|
84
|
+
3. **Check the browser console for a CometChat error code** before assuming it is a UI problem.
|
|
85
|
+
4. **Raise the log level**: `CometChatUIKit.setLogLevel(...)`.
|
|
86
|
+
5. **Reduce to the golden path** from `core`. If that works, the fault is in your composition; if it does not, it is setup.
|
|
87
|
+
|
|
88
|
+
## Verify it works
|
|
89
|
+
A fix is done when the symptom is gone **and** you can say which of the four silent-failure causes it was. If you cannot name the cause, the fix is a coincidence and it will come back.
|
|
90
|
+
|
|
91
|
+
Re-check after any fix: chat renders with real data · clicking a conversation opens it · sending a message appears immediately · a second browser receives it live · no console errors · nothing collapsed to zero height.
|
|
92
|
+
|
|
93
|
+
## What NOT to do
|
|
94
|
+
- Do not `--force` or `--legacy-peer-deps` past an `ERESOLVE` — you install an untested combination and the failure moves somewhere harder to find.
|
|
95
|
+
- Do not add `!important` to fight the kit's styles — a token is not applying because the stylesheet is not registered.
|
|
96
|
+
- Do not rebuild a component by hand because an affordance looks broken. It is nearly always a missing input or an unsized container.
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cometchat-flutter-v5-sdk
|
|
3
|
+
description: "Add voice & video calling to any Flutter app FROM SCRATCH with the headless CometChat Calls SDK v5 (`cometchat_calls_sdk`, pub.dev) — no UI Kit. init→login→generateCallToken→joinSession, which hands back a Flutter `Widget?` you mount in your tree; CallSession listeners, in-call actions (mute/video/layout/record/PiP/raise-hand), meet-style session rooms AND 1:1 ringing (Chat SDK signaling + Calls SDK media). Triggers: 'add calling from scratch flutter', 'standalone video call dart', 'headless calls sdk flutter', 'build my own call screen flutter', 'meeting room join by session id flutter', 'one-on-one ringing call without uikit flutter'."
|
|
4
|
+
license: "MIT"
|
|
5
|
+
compatibility: "Flutter >=2.5.0, Dart >=2.17.0 <4.0.0 · Android minSdk 26 (Android 8.0) · iOS 15.1. cometchat_calls_sdk ^5.0.3 — resolves to 5.0.7, which this skill is verified against. 1:1 ringing also needs cometchat_sdk v5 (>=5.0.6; the pinned harness resolves 5.0.7 — the signaling symbols are identical across both) for signaling."
|
|
6
|
+
metadata:
|
|
7
|
+
author: "CometChat"
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
tags: "cometchat calls sdk v5 headless voice video webrtc dart flutter calling standalone"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
> **Ground truth:** `cometchat_calls_sdk` **5.0.7 from pub.dev** + catalog `flutter-calls-v5.json` (the closed symbol list — 59 COMPILER-VERIFIED symbols; every type below is in it). Catalog built from the PUBLISHED package; at 5.0.7 it matches the `calls-core` monorepo exactly — but **never infer that from a version string** (`references/docs-map.md` § "Upstream"). Official docs: `/calls/flutter/**` = **v5** · Docs MCP. Fetch exact `SessionSettings` fields, event names and signatures from the docs (`references/docs-map.md`) — never memory. **⚠️ The live pages carry ~56 symbols that DO NOT COMPILE, including the entire documented token flow — see "Doc corrections" below; prefer THIS skill's names over the page's.** **APPEND to the user's app — additive wiring only.** This is the HEADLESS path (no UI Kit); for the prebuilt drop-in call UI use `cometchat-flutter-v6-calls` instead.
|
|
13
|
+
|
|
14
|
+
## Companion skills (read first)
|
|
15
|
+
- **Standalone/headless entry** — this skill owns its own package (the Calls SDK) and has no `-core` sibling; self-contained for meet-style calling.
|
|
16
|
+
- **For 1:1 RINGING only** it also drives the **Chat SDK** (`cometchat_sdk` v5) for signaling — signatures fetched via `references/docs-map.md` (§ "1:1 RINGING"). It does NOT depend on the Flutter UI Kit.
|
|
17
|
+
- **Prefer the UI Kit instead?** If the app also wants chat and a prebuilt call UI, use `cometchat-flutter-v6-core` + `cometchat-flutter-v6-calls` — not this skill.
|
|
18
|
+
|
|
19
|
+
## Use this skill when
|
|
20
|
+
"add calling from scratch / without the UI Kit", "standalone voice/video on Flutter", "build my own call screen", "headless calls SDK", "meeting-room join by session id", "one-on-one ringing". Precondition: the caller chose the **from-scratch / standalone** path (the "add calling" router asks this). If they want the prebuilt call UI, route to `cometchat-flutter-v6-calls`.
|
|
21
|
+
|
|
22
|
+
## Prerequisites & install
|
|
23
|
+
```yaml
|
|
24
|
+
# pubspec.yaml
|
|
25
|
+
dependencies:
|
|
26
|
+
cometchat_calls_sdk: ^5.0.7 # verified against 5.0.7
|
|
27
|
+
```
|
|
28
|
+
then `flutter pub get`.
|
|
29
|
+
|
|
30
|
+
**1:1 ringing additionally needs the Chat SDK** (`cometchat_sdk` v5) for signaling.
|
|
31
|
+
|
|
32
|
+
**Permissions — REQUIRED or the call dies on the first permission prompt.**
|
|
33
|
+
- `android/app/src/main/AndroidManifest.xml`: `INTERNET`, `CAMERA`, `RECORD_AUDIO`, `MODIFY_AUDIO_SETTINGS`, `ACCESS_NETWORK_STATE`. On **API 23+ you must ALSO request camera + mic at runtime** — the manifest alone is not enough, and this is the single most common "the SDK is broken" report on Android.
|
|
34
|
+
- `ios/Runner/Info.plist`: `NSCameraUsageDescription` + `NSMicrophoneUsageDescription`.
|
|
35
|
+
- Android **`minSdkVersion 26`**, iOS **`platform :ios, '15.1'`** — the real 5.0.7 floors. **The docs say 24 and iOS 12; both fail at BUILD time.** iOS moved 13.0 → 15.1 *in 5.0.7*, so an app can break on a routine `pub upgrade`.
|
|
36
|
+
|
|
37
|
+
**Credentials:** App ID · Region · Auth Key (dev only), via the CLI — `npx @cometchat/skills-cli@3 auth login` → `provision use --app-id <id> --json` (`@3` pins the CLI major that matches the v5 skills). Mint **auth tokens server-side** for production; never ship the Auth Key.
|
|
38
|
+
|
|
39
|
+
## Init & login ordering (BAKED — invariant)
|
|
40
|
+
Init (once, must succeed) → `CometChatCalls.login(...)` → then `generateCallToken` / `joinSession` / listeners. Nothing joins before init+login resolve. `CometChatCalls.isInitialized` is the guard.
|
|
41
|
+
|
|
42
|
+
- **DEFAULT to `CometChatCalls.initFromSettings(onSuccess:, onError:)`** — the ai-agent / telemetry-attributed path (persists `integrationSource="ai-agent"`).
|
|
43
|
+
|
|
44
|
+
<!-- STOPGAP: source-derived (calls-core/calls-sdk-flutter), NOT in the public docs.
|
|
45
|
+
`initFromSettings` is `@nodoc` and ai-agent-only. DOCS-BACKLOG F4/D4 closed it WONTFIX —
|
|
46
|
+
it is to STAY hidden, so this stopgap is permanent, not pending a docs fix. -->
|
|
47
|
+
It takes **no settings argument**: it reads `cometchat-settings.json` through **`rootBundle`**, so the file must sit at the **project root** *and* be registered as a Flutter asset:
|
|
48
|
+
```yaml
|
|
49
|
+
flutter:
|
|
50
|
+
assets:
|
|
51
|
+
- cometchat-settings.json
|
|
52
|
+
```
|
|
53
|
+
Root keys `appId` + `region`; optional `callsSDK` → `adminHost`/`clientHost`/`callsHost`. **No Auth Key — the Calls SDK reads nothing else from this file** (the key is a `login()` argument). Registering it under `flutter: assets:` is the ONLY step; no Xcode or Gradle change, because it is read through `rootBundle`. Miss the `assets:` entry and init fails with settings-file-not-found — a quiet callback, not a crash.
|
|
54
|
+
|
|
55
|
+
- **Fallback (public-doc path):**
|
|
56
|
+
```dart
|
|
57
|
+
CallAppSettings s = (CallAppSettingBuilder()..appId = appId..region = region).build();
|
|
58
|
+
CometChatCalls.init(s, onSuccess: (String m) {}, onError: (CometChatCallsException e) {});
|
|
59
|
+
```
|
|
60
|
+
Note the **Dart cascade** (`..appId =`) — these are **fields, not `setX()` methods**. `CallAppSettingBuilder` is singular (no `s`).
|
|
61
|
+
- ⚠️ **Never do both.** A builder init AFTER `initFromSettings` re-attributes the app to `"manual"` and the ai-agent telemetry is lost.
|
|
62
|
+
- **Login:** `CometChatCalls.login(uid:, authKey:, onSuccess:, onError:)` (dev) or `CometChatCalls.loginWithAuthToken(authToken:, onSuccess:, onError:)` (production). Check `await CometChatCalls.getLoggedInUser()` first — it returns `Future<User?>` and the SDK keeps the session, so logging in twice is wasted work. **Both `onSuccess` callbacks hand you a NULLABLE `User?`** — the docs dereference it unguarded; do not copy that.
|
|
63
|
+
|
|
64
|
+
## Two build modes (BAKED — the router picks one)
|
|
65
|
+
- **Meet-style (session room)** — Calls SDK ONLY, no Chat SDK. Everyone joining the same session id lands in the same call.
|
|
66
|
+
- **1:1 ringing** — Chat SDK signals, Calls SDK carries media. Needs `cometchat_sdk` v5 as well. Fetch signatures via `references/docs-map.md` § "1:1 RINGING".
|
|
67
|
+
|
|
68
|
+
## ⚠️ The Flutter fork: `joinSession` returns a WIDGET
|
|
69
|
+
Every other platform mounts the call into a container you hand it. **Flutter hands the call back to
|
|
70
|
+
you as a `Widget?`** and mounts nothing:
|
|
71
|
+
```dart
|
|
72
|
+
Widget? _callWidget;
|
|
73
|
+
|
|
74
|
+
CometChatCalls.joinSession(
|
|
75
|
+
sessionId: sessionId,
|
|
76
|
+
sessionSettings: settings,
|
|
77
|
+
onSuccess: (Widget? w) => setState(() => _callWidget = w), // ← THIS is the render step
|
|
78
|
+
onError: (CometChatCallsException e) { /* surface it */ },
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
@override
|
|
82
|
+
Widget build(BuildContext c) => Scaffold(body: _callWidget ?? const CircularProgressIndicator());
|
|
83
|
+
```
|
|
84
|
+
An emit that ignores the `onSuccess` argument **joins the call successfully and shows nothing** — audio flows, no video, no controls. It reads as a broken SDK and it is the #1 Flutter-specific failure. There is no container parameter and no zero-bounds trap; there is only "did you put the widget in the tree".
|
|
85
|
+
|
|
86
|
+
## SDK method map (BAKED closed list — from the catalog; signatures → FETCH from docs)
|
|
87
|
+
- **Lifecycle:** `CometChatCalls.initFromSettings` · `CometChatCalls.init` · `CallAppSettingBuilder` → `CallAppSettings` · `CometChatCalls.isInitialized` · `login` · `loginWithAuthToken` · `logout` · `getLoggedInUser` → `User?`
|
|
88
|
+
- **Session:** `CometChatCalls.generateCallToken(sessionId, …)` → `CallToken` · `joinSession(…)` → `Widget?` · `SessionSettingsBuilder` → `SessionSettings` · `SessionType`
|
|
89
|
+
- **⚠️ TWO join paths, both real in 5.0.7** — pick one: `generateCallToken(sessionId)` → `joinSession(callToken:sessionSettings:)`, **or** `joinSession(sessionId:sessionSettings:)` directly.
|
|
90
|
+
- **In-call actions — on `CallSession.getInstance()`, for CUSTOM controls ONLY** (the returned widget already renders them; see pitfall #1): `leaveSession` · `muteAudio`/`unMuteAudio` · `pauseVideo`/`resumeVideo` · `setLayout` · `setAudioModeType` · `switchCamera` · `raiseHand`/`lowerHand` · `startRecording`/`stopRecording` · `startScreenShare`/`stopScreenShare`/`toggleScreenShare` · `pinParticipant`/`unPinParticipant` · `muteParticipant` · `pauseParticipantVideo` · `enablePictureInPictureLayout`/`disablePictureInPictureLayout` · `enterPipMode`/`isPipSupported` · `setChatButtonUnreadCount` · `isCallSessionActive`
|
|
91
|
+
- **Toggles** (Flutter-only, no iOS analogue): `toggleMuteAudio` · `togglePauseVideo` · `toggleCameraSource` · `toggleRaiseHand`
|
|
92
|
+
- **Aliases** for the same actions: `endCallSession` · `startCallRecording`/`stopCallRecording` · `setCallLayoutType`
|
|
93
|
+
- **Settings panels:** `hideSettingsPanel` · `openCallSettingsPanel` · `openVirtualBackgroundSettingsPanel`
|
|
94
|
+
- **State getters (read, don't track):** `isAudioMuted` · `isVideoPaused` · `isHandRaised` · `isRecording` · `isScreenSharing` · `isTranscribing`
|
|
95
|
+
- **Listeners (on `CallSession.getInstance()`; four are add/remove, `LayoutListeners` is a single-slot property):** `SessionStatusListeners` · `ParticipantEventListeners` · `MediaEventListeners` · `ButtonClickListeners` · `LayoutListeners`
|
|
96
|
+
- **Call logs:** `CallLogRequestBuilder` (top-level; **FIELDS, no `setX()`**) → `CallLogRequest` → `fetchNext`/`fetchPrevious` → `CallLog` (+ `CallUser`/`CallGroup`/`CallEntity`)
|
|
97
|
+
- **Background:** `CometChatOngoingCallService.launch()` / `.abort()` — Android foreground service, no-op on iOS
|
|
98
|
+
- **Enums:** `AudioMode` (`.speaker`/`.earpiece`/`.bluetooth`) · `SessionType` · `LayoutType` (`.tile`/`.spotlight`/`.sidebar`) · `CameraFacing`
|
|
99
|
+
|
|
100
|
+
> A curated highlight, **NOT the full surface**. The authoritative closed list is the **catalog** (59 symbols, each proven by a `flutter analyze` probe). A symbol is real **iff it is in the catalog** — confirm there, then fetch its signature from the page in `references/docs-map.md`.
|
|
101
|
+
|
|
102
|
+
## Listener lifecycle (BAKED)
|
|
103
|
+
**All five listener types are `abstract class`es you IMPLEMENT — they are NOT constructible.**
|
|
104
|
+
The live docs build every one of them with named callbacks
|
|
105
|
+
(`SessionStatusListeners(onSessionJoined: () {…})`); an abstract class cannot be instantiated, so
|
|
106
|
+
none of those examples compile. `flutter analyze` reports `instantiate_abstract_class`.
|
|
107
|
+
```dart
|
|
108
|
+
class _Status extends SessionStatusListeners {
|
|
109
|
+
@override void onSessionJoined() { /* ... */ }
|
|
110
|
+
@override void onSessionTimedOut() { /* distinct from onSessionLeft — handle BOTH */ }
|
|
111
|
+
// `extends` instead of `implements` and the other four inherit their no-op bodies.
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
final _status = _Status(); // hoist into a FIELD
|
|
115
|
+
CallSession.getInstance()?.addSessionStatusListener(_status); // BEFORE joining
|
|
116
|
+
// teardown:
|
|
117
|
+
CallSession.getInstance()?.removeSessionStatusListener(_status); // the SAME instance
|
|
118
|
+
CallSession.getInstance()?.leaveSession();
|
|
119
|
+
```
|
|
120
|
+
- Every method already has a no-op body, so **`extends` lets you override only what you need**; `implements` obliges you to write them all.
|
|
121
|
+
- **`remove*Listener` takes the object you added.** Constructing a fresh listener to remove one is a no-op that silently leaks the original — and it is what the live docs show (D4). Hoist into a field; there is no other shape in which removal works.
|
|
122
|
+
- **⚠️ Registration names do NOT match the type names** — full table in `references/docs-map.md`. Two you cannot guess: `MediaEvent**Listeners**` registers via `addMediaEvent**s**Listener`, and **`LayoutListeners` has no add/remove at all** — it is a single-slot `layoutListener = l` setter, cleared with `= null`.
|
|
123
|
+
- **`CallSession.getInstance()` is never actually null** — the singleton is eagerly built, so registering BEFORE `joinSession` really does attach (certified: `onSessionJoined` fires). The type is still `CallSession?`, so keep `?.`; use `isCallSessionActive()` to test for a live session.
|
|
124
|
+
- **`ButtonClickListeners` callbacks fire alongside the SDK's own action and do NOT suppress it.** Reacting to `onLeaveSessionButtonClicked` must NOT also call `leaveSession()` — the SDK is already leaving; doing both double-leaves. Use it to run `CometChat.endCall(sessionId)` on the ringing path.
|
|
125
|
+
- **`Participant` has TWELVE fields, all nullable:** `uid` · `name` · `avatar` · `mid` · `state` · `isJoined` · `deviceId` · `joinedAt` · `leftAt` · `totalAudioMinutes` · `totalVideoMinutes` · `totalDurationInMinutes`. **No mute/pin/hand/share flags** — the seven the docs' "Participant Object Reference" lists (`pid`/`role`/`audioMuted`/`videoPaused`/`isPinned`/`isPresenting`/`raisedHandTimestamp`) do NOT exist and do not compile (see `doc-corrections.md`); accumulate that live state from `ParticipantEventListeners`, as iOS must. Prefer `onParticipantListChanged`, which delivers the WHOLE list. (`Participants`, plural, is a `@Deprecated` typedef alias of `Participant`.)
|
|
126
|
+
|
|
127
|
+
## Least-code recipe (meet-style — ORDER, not signatures)
|
|
128
|
+
```dart
|
|
129
|
+
// Fetch every signature/field from references/docs-map.md. This is the ORDER, which is the part that bites.
|
|
130
|
+
import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';
|
|
131
|
+
|
|
132
|
+
1. CometChatCalls.initFromSettings(onSuccess:, onError:) // ai-agent default; cometchat-settings.json as a Flutter ASSET
|
|
133
|
+
2. CometChatCalls.login(uid:, authKey:, onSuccess:, onError:) // or loginWithAuthToken in production
|
|
134
|
+
3. final settings = (SessionSettingsBuilder()..setDisplayName(name)..setType(SessionType.video)).build();
|
|
135
|
+
4. CallSession.getInstance()?.addSessionStatusListener(_status); // register BEFORE joining
|
|
136
|
+
5. CometChatCalls.joinSession(sessionId:, sessionSettings:, onSuccess: (Widget? w) => setState(() => _call = w), onError:)
|
|
137
|
+
// or: generateCallToken(sessionId) -> joinSession(callToken:sessionSettings:)
|
|
138
|
+
6. // return _call from build() — NOTHING renders until you do
|
|
139
|
+
7. // NO control buttons needed — the returned widget ALREADY renders mute/video/leave.
|
|
140
|
+
8. // teardown -> remove each listener (same instance); CallSession.getInstance()?.leaveSession()
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Backgrounding & call notifications → `references/platform-notes.md`
|
|
144
|
+
Two things that are NOT on the join path and are easy to get wrong:
|
|
145
|
+
- **Backgrounding** — Android kills a call the moment the app backgrounds unless
|
|
146
|
+
`CometChatOngoingCallService.launch()` holds a foreground service (`.abort()` on teardown).
|
|
147
|
+
**Flutter-only**; both calls are safe no-ops on iOS. The manifest permissions are not optional.
|
|
148
|
+
- **Ringing a closed app** — **there is no first-party CometChat Flutter push package** (iOS has
|
|
149
|
+
one; Flutter does not), and **no symbol in this skill's catalog implements it**. It is FCM on
|
|
150
|
+
Android and APNs/PushKit/CallKit on iOS, wired by the app. Needs a dashboard push provider and a
|
|
151
|
+
**physical device**. An emit naming a `cometchat_push_notifications` Flutter package invented it.
|
|
152
|
+
|
|
153
|
+
## Doc corrections (⚠️ the live pages do not compile — full table: `references/doc-corrections.md`)
|
|
154
|
+
**23 classes of symbol** on `/calls/flutter/**` fail `flutter analyze` against 5.0.7. Read
|
|
155
|
+
`references/doc-corrections.md` before copying off a page. The two that bite hardest:
|
|
156
|
+
|
|
157
|
+
| The docs write | It does not compile — use |
|
|
158
|
+
|---|---|
|
|
159
|
+
| `generateToken(sessionId: …)` → `CallToken` (13 pages) | **`generateCallToken(sessionId, onSuccess:, onError:)`** → `CallToken`. `generateToken` is `@Deprecated`, takes two POSITIONAL args, and yields `GenerateToken`. **No page mentions `generateCallToken` at all** |
|
|
160
|
+
| `Participant.pid` / `.role` / `.audioMuted` / `.videoPaused` / `.isPinned` / `.isPresenting` / `.raisedHandTimestamp` | **None exist.** `Participant` has 7 fields; track the rest from events |
|
|
161
|
+
|
|
162
|
+
Docs PR cometchat/docs#492 fixes the first seven classes (56 → 3 analyzer errors). **Five more —
|
|
163
|
+
including the abstract-listener one — were found by running `flutter analyze` over this skill's
|
|
164
|
+
own harness AFTER #492 was open, and are not in it.** 12 fences on those pages parse in no shape
|
|
165
|
+
and were never machine-checked, so the table is a floor, not a total.
|
|
166
|
+
|
|
167
|
+
## Common pitfalls (BAKED)
|
|
168
|
+
- **Forgetting to mount the returned widget (the #1 Flutter mistake)** — `joinSession` renders nothing itself. Store the `Widget?` from `onSuccess` in State and return it from `build()`.
|
|
169
|
+
- **Don't duplicate the built-in call controls (the #1 mistake everywhere else).** The joined widget renders a COMPLETE call UI — mute, camera, layout, participants, leave. Do NOT add your own buttons around it. The `CallSession.getInstance()` action methods are for CUSTOM controls ONLY — reach for them **just when the user EXPLICITLY asks** to replace the defaults, and hide the built-ins first via the `..hide*Button` setters on `SessionSettingsBuilder`. To merely REACT to the built-in leave button, use `ButtonClickListeners(onLeaveSessionButtonClicked:)` — do not add a second button.
|
|
170
|
+
- **Removing a listener you did not keep** — construct once into a field; `remove*Listener` matches by instance.
|
|
171
|
+
- **`User` is exported by BOTH barrels** — ringing imports both SDKs; `ambiguous_import` until one hides it (`… hide User;`). No page says so.
|
|
172
|
+
- **Ringing teardown needs BOTH SDKs** — `leaveSession()` ends your media, `CometChat.endCall(sessionId)` tells the peer and completes the log. Only the first, and the peer still thinks the call is live.
|
|
173
|
+
- **There is no `cancelCall`** — cancel your own outgoing call with `rejectCall(sessionId, CometChatCallStatus.cancelled)`.
|
|
174
|
+
- **Manifest permissions without the runtime request** — on Android 6+ the manifest alone grants nothing; request camera/mic before joining or the call is black and silent.
|
|
175
|
+
- **`minSdkVersion` left at Flutter's default** — the floor is **26** (docs say 24), in `android/app/build.gradle.kts` on current Flutter, not `android/build.gradle`.
|
|
176
|
+
- **iOS Simulator on Apple Silicon:** `CometChatWebRTC` excludes arm64, so the app builds x86_64 — fine on an iOS 18 simulator (Rosetta), **impossible on iOS 26+**. Device or iOS 18 sim; details in `references/platform-notes.md`.
|
|
177
|
+
- **`cometchat-settings.json` not in `flutter: assets:`** — `initFromSettings` fails with settings-file-not-found. It is a *quiet* error callback, not a crash. Registering the asset is the whole job; no Xcode step.
|
|
178
|
+
- **Double init** — `init` after `initFromSettings` silently re-attributes telemetry to `"manual"`.
|
|
179
|
+
- **Handling `onSessionLeft` but not `onSessionTimedOut`** — idle timeout (default **300s**, `0` disables) fires a DIFFERENT callback; miss it and the user sits on a dead call screen.
|
|
180
|
+
- **Emitting an API Flutter lacks** — no presentation mode, no first-party push package. Say so rather than emitting code that cannot resolve. The two PiPs are also different calls: `enablePictureInPictureLayout()` is the in-app layout, `enterPipMode()` is Android system PiP.
|
|
181
|
+
- **Screen share — the control methods DO ship (docs lag them).** `CallSession.getInstance()` has real `startScreenShare()`/`stopScreenShare()`/`toggleScreenShare()` + an `isScreenSharing` getter (barrel-reachable in 5.0.7; the method channel invokes a native `startScreenShare` and web routes to `getDisplayMedia`), and `hideScreenSharingButton` defaults to **`false`** so the built-in button is visible. So an emit calling `startScreenShare()` COMPILES and dispatches — do NOT tell the user local screen share is impossible or "invented." The **`/calls/flutter/screen-sharing` DOC page still says "receive-only"** — it documents only the RECEIVE side (`onParticipantStartedScreenShare`, `participant.isPresenting`, viewing a web participant's share); the shipped local-share control API is undocumented there. Reflect the shipped methods, and note the page lags them.
|
|
182
|
+
- **Joining before init+login resolve** — chain from the success callbacks.
|
|
183
|
+
- **Assuming a signature** — event names, `SessionSettings` fields and action params are FETCHED from docs, never guessed.
|
|
184
|
+
|
|
185
|
+
## Verify it works
|
|
186
|
+
- **Tier-1 catalog:** every `cometchat_calls_sdk` symbol emitted appears in `flutter-calls-v5.json` (`node test-suite/scripts/verify-catalog.mjs --family flutter-calls-v5`).
|
|
187
|
+
- **Tier-2 compile:** the emit analyzes clean against the installed `cometchat_calls_sdk` (5.0.7) with `flutter analyze` in `test-suite/harness/flutter-calls`.
|
|
188
|
+
- **Tier-3 smoke:** the round-trip (init→login→generateCallToken→join→**widget-mounted**→leaveSession) via the pack's dev calls-smoke harness (internal QA, not shipped) — **certified on a physical Android device**. **Ringing runs as TWO concurrent devices**, one process per role, and only counts if both succeed on the SAME session id — see `references/docs-map.md` § "1:1 RINGING".
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Doc corrections — Flutter Calls SDK v5
|
|
2
|
+
|
|
3
|
+
Every row below is **verified against the shipped `cometchat_calls_sdk 5.0.7`**, by compiling the
|
|
4
|
+
documented shape and reading the analyzer's verdict (and, for the
|
|
5
|
+
ringing rows, `cometchat_sdk 5.0.6`). Where a live page under `/calls/flutter/**` disagrees with
|
|
6
|
+
this file, **this file wins** — the page does not compile.
|
|
7
|
+
|
|
8
|
+
| The docs write | It does not compile — use |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `CometChatCalls.generateToken(sessionId: …)` returning a `CallToken` (the token flow on 13 pages) | **`CometChatCalls.generateCallToken(sessionId, onSuccess:, onError:)`** → `CallToken`. `generateToken` is `@Deprecated` ("auth token is now managed internally after `login()`"), takes **two positional** args, and yields **`GenerateToken`** — the pages paired the deprecated name with the replacement's callback type, so it type-errors either way. **No page mentioned `generateCallToken` at all** |
|
|
11
|
+
| `CometChatCalls.SessionSettingsBuilder()` (23×, 13 pages) | **`SessionSettingsBuilder()`** — a top-level class, not a member of `CometChatCalls` |
|
|
12
|
+
| `SessionStatusListener` / `MediaEventsListener` / `ParticipantEventListener` / `ButtonClickListener` / `LayoutListener` (34×, 16 pages) | **All five are PLURAL types**: `SessionStatusListeners`, `MediaEventListeners`, `ParticipantEventListeners`, `ButtonClickListeners`, `LayoutListeners`. Note `MediaEvent**Listeners**` but `addMediaEvent**s**Listener` — the type and the method pluralise differently |
|
|
13
|
+
| `removeSessionStatusListener()` with no argument, next to an inline-constructed listener | **`remove*Listener(theSameInstance)`** — hoist the listener into a field first; an inline listener can never be removed |
|
|
14
|
+
| `callLog.sessionID` | **`callLog.sessionId`** — lowercase `d` |
|
|
15
|
+
| `CometChatConstants.RECEIVER_TYPE_USER` etc. (ringing) | **`CometChatReceiverType.user` / `CometChatCallType.video` / `CometChatCallStatus.cancelled`** — `CometChatConstants` does not exist; these live in the **Chat SDK** |
|
|
16
|
+
| `onSuccess: (User user)` on `login` / `loginWithAuthToken` | **`(User? user)`** — nullable; the pages dereference it unguarded |
|
|
17
|
+
| `CallSession.getInstance().x` | **`CallSession.getInstance()?.x`** — it returns `null` with no active session |
|
|
18
|
+
| `setAudioMode(...)` as a `CallSession` action | **`setAudioModeType(AudioMode.speaker)`** on the session; `..setAudioMode(...)` is the **builder** setter. Same concept, two different names on two different objects |
|
|
19
|
+
| `unpinParticipant(participant)` | **`unPinParticipant()`** — capital `P`, and it takes **no argument**. The other three (`muteParticipant`/`pauseParticipantVideo`/`pinParticipant`) take a `uid` **String**, not a `Participant` |
|
|
20
|
+
| `CallLogRequest.CallLogRequestBuilder().setLimit(30).setSessionType("video")` (call-logs, recording, migration-guide) | **Three errors in one line.** `CallLogRequestBuilder` is **top-level** (no `CallLogRequest.` prefix); it has **no `setX()` methods at all** — public FIELDS, so cascaded *assignments*: `(CallLogRequestBuilder()..limit = 30..callType = "video").build()`; and the field is **`callType`**, not `sessionType`. Note this is the OPPOSITE shape to `SessionSettingsBuilder`, which does take cascaded setter calls |
|
|
21
|
+
| `Android: Minimum API Level 24 (Android 7.0)` / `iOS: Minimum iOS 12` (overview) | **`minSdkVersion 26`** (Android 8.0) in `android/build.gradle` — wrong for every 5.0.x — and **iOS 15.1** in the 5.0.7 podspec (it was 13.0 in 5.0.6). Both documented floors are too low and both fail at BUILD time. Since the page pins `^5.0.3`, a reader resolves 5.0.7 and needs 15.1 |
|
|
22
|
+
| `recording.recordingURL` and the `recordingURL` property row (recording, call-logs) | **`recordingUrl`** — lowercase `rl`. `Recordings` has exactly four fields: `rid`, `recordingUrl`, `startTime`, `endTime`, plus `duration` |
|
|
23
|
+
| `Recording` / `CallStatus` / `CallCategory` / `CallDirection` as Dart types | **`Recordings`** (plural) is the type; the three enums **do not exist on Flutter** — those call-log filters take plain **Strings** (`"missed"`, `"call"`, `"incoming"`) |
|
|
24
|
+
| `SessionStatusListeners(onSessionJoined: …)` and the other four, built with named callbacks (16 pages) | **All five are `abstract class`es — they cannot be constructed.** `class X extends SessionStatusListeners { @override void onSessionJoined() {…} }`, then pass an instance. Every method already defaults to a no-op. Renaming them to the plural (docs#492) fixed the NAME; the constructor-call shape is still wrong |
|
|
25
|
+
| `CometChat.addCallListener(id, CallListener(onIncomingCallReceived: …))` (ringing) | **`CallListener` is a `mixin`** — also not constructible. `class X with CallListener { @override void onIncomingCallReceived(Call c) {…} }`, then pass an instance |
|
|
26
|
+
| `Call(receiverID, receiverType, callType)` (ringing) | **`Call` takes NAMED required params** — `Call(receiverUid: …, receiverType: …, type: …)`. It has no positional parameters at all, and the third one is `type`, not `callType` |
|
|
27
|
+
| `joinCallSession(call.sessionId!)` (ringing) | **`Call.sessionId` is `String?`** — the force-unwrap turns a signal that arrived without a session into a crash instead of a handled error |
|
|
28
|
+
| `AppSettingsBuilder()..region = …` by analogy with `CallAppSettingBuilder` (ringing) | **`AppSettingsBuilder` uses chained `setX()`** — `..setRegion(…)`, `..setAutoEstablishSocketConnection(true)`. The two builders sit in the same file and take different shapes |
|
|
29
|
+
| — (no doc page states it) | **`CometChatCalls.init` is a *plain* init, not the ai-agent one.** `initFromSettings` is `@nodoc` and undocumented; see the STOPGAP note above |
|
|
30
|
+
| `CallSession…addLayoutListener(l)` / `removeLayoutListener(l)` (events, migration-guide) | **Neither method exists.** `CallSession` has `set layoutListener(LayoutListeners?)` + a getter — one slot, cleared with `layoutListener = null` |
|
|
31
|
+
| `CometChat.initiateCall(call, timeout: 30, …)` and two parameter tables documenting it (ringing) | **There is no `timeout` parameter.** `initiateCall` takes the `Call` plus `onSuccess`/`onError`, and the repository beneath it takes only receiver/receiverType/type. The unanswered timeout is server-side; cancel early with `rejectCall(sessionId, CometChatCallStatus.cancelled)` on your own timer |
|
|
32
|
+
| — (no page mentions it) | **`User` is exported by BOTH barrels.** Ringing imports `cometchat_calls_sdk` *and* `cometchat_sdk`; the file fails with `ambiguous_import` until one hides it — `import '…/cometchat_calls_sdk.dart' hide User;` |
|
|
33
|
+
| `Participant.pid` / `.role` / `.audioMuted` / `.videoPaused` / `.isPinned` / `.isPresenting` / `.raisedHandTimestamp` — the "Participant Object Reference" on `actions` | **None of those seven exist.** `Participant` has TWELVE real fields, all nullable: `uid` · `name` · `avatar` · `mid` · `state` · `isJoined` · `deviceId` · `joinedAt` · `leftAt` · `totalAudioMinutes` · `totalVideoMinutes` · `totalDurationInMinutes` (source: `lib/src/model/participants.dart` 5.0.7; `Participants` plural is a `@Deprecated` typedef alias). Track live mute/pin/hand/share state from the `ParticipantEventListeners` callbacks — the same way iOS must. This skill previously repeated the docs' phantom list *and added emphasis*, then over-corrected to a WRONG "exactly seven" count — a closed list that isn't is worse than no list; the real closed list is the twelve above |
|
|
34
|
+
| `region` is "`us`" or "`eu`" (setup's `CallAppSettingBuilder` table) | **`in` is also live** — a real provisioned app uses it. A reader following the table concludes their credentials are wrong |
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
The first seven rows are fixed in docs PR cometchat/docs#492. **The five after them are NOT** —
|
|
39
|
+
they were found by running `flutter analyze` over this skill's own harness, after #492 was
|
|
40
|
+
already open, and the abstract-listener one is the largest single defect on the tree: #492
|
|
41
|
+
renamed those five types to their real plural spelling but left every one of them being
|
|
42
|
+
CONSTRUCTED, which still does not compile. Until a follow-up lands, until it merges the live `/calls/flutter/**`
|
|
43
|
+
pages still carry them. **12 fences on those pages parse in no shape and were never machine-checked**,
|
|
44
|
+
so treat this table as a floor, not a total — the abstract-listener class was itself found
|
|
45
|
+
outside the gate. Re-check when #492 and its follow-up land.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Drift warning
|
|
50
|
+
|
|
51
|
+
The preview host is being fixed under this table. As of the last check, `session-settings` and
|
|
52
|
+
`join-session` already carry the top-level `SessionSettingsBuilder()`, and `setup` already pins
|
|
53
|
+
`^5.0.7` — so the occurrence counts above (`23×, 13 pages`) **overstate what is still broken**.
|
|
54
|
+
The rows remain correct about what does and does not compile; treat the counts as historical.
|
|
55
|
+
Re-probe a page before quoting a number from here.
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# docs-map — Flutter Calls SDK v5 (`/calls/flutter/**`)
|
|
2
|
+
|
|
3
|
+
**Doc channel = the CometChat Docs MCP.** Use `search_cometchat_docs` / `fetch_cometchat_doc_page` /
|
|
4
|
+
`get_cometchat_implementation_bundle` when they are connected — they are the intended path and they
|
|
5
|
+
serve production docs for you.
|
|
6
|
+
|
|
7
|
+
**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` (below).
|
|
8
|
+
Either way the `<path>` catalog in this file is the source of truth for WHICH page — MCP-vs-fetch is only HOW.
|
|
9
|
+
|
|
10
|
+
## DOCS_BASE — the fetch FALLBACK entry point (⚠️ SWAP HERE to change environments)
|
|
11
|
+
```
|
|
12
|
+
DOCS_BASE = https://www.cometchat.com/docs
|
|
13
|
+
```
|
|
14
|
+
> Production docs (`https://www.cometchat.com/docs`). **Fetch rule:** build a URL as `DOCS_BASE` + the path shown,
|
|
15
|
+
> then append `.md`. Never hardcode a host anywhere else; never read the installed Dart package at authoring
|
|
16
|
+
> time for SIGNATURES (the catalog is for EXISTENCE, the docs are for signatures).
|
|
17
|
+
|
|
18
|
+
## The convention — Calls v5 lives at the UNVERSIONED root `/calls/flutter/`
|
|
19
|
+
`DOCS_BASE` + `<path>` + `.md` → raw Markdown (verbatim code + parameter tables).
|
|
20
|
+
```
|
|
21
|
+
Fetch: {DOCS_BASE}/calls/flutter/overview.md
|
|
22
|
+
```
|
|
23
|
+
> **⚠️ VERSION TRAP.** The **unversioned** `/calls/flutter/**` tree IS **v5**. Legacy
|
|
24
|
+
> `/sdk/flutter/<n>.0/*calling*` pages are the OLD chat-SDK calling surface — never fetch them for a v5
|
|
25
|
+
> build. **Do NOT `search("default calling")`** — search surfaces that stale tree.
|
|
26
|
+
> The **UI Kit** calling page (`/ui-kit/flutter/v5/calling-integration`) is a DIFFERENT product; it is
|
|
27
|
+
> what this skill exists to be the alternative to.
|
|
28
|
+
|
|
29
|
+
## Page catalog (25 pages)
|
|
30
|
+
| Path | Use it for |
|
|
31
|
+
|---|---|
|
|
32
|
+
| `/calls/flutter/overview` | the init→login→generateCallToken→joinSession sequence and the component model. **⚠️ its Android/iOS floors are BOTH too low — real: minSdk 26, iOS 13.0 (15.1 from 5.0.7)** |
|
|
33
|
+
| `/calls/flutter/setup` | install (the live page now pins `cometchat_calls_sdk: ^5.0.7`; older cached copies said `^5.0.3` — both resolve 5.0.7), Android manifest permissions, iOS `Info.plist`, `CallAppSettingBuilder`, `isInitialized`. **⚠️ its `region` table still says only `us`/`eu` — `in` is also live** |
|
|
34
|
+
| `/calls/flutter/authentication` | **`login` / `loginWithAuthToken` / `logout` / `getLoggedInUser`** — the only page with these, and the error-code table |
|
|
35
|
+
| `/calls/flutter/join-session` | **`generateCallToken` / `joinSession`** and the `Widget?` return. THE page for the Flutter fork |
|
|
36
|
+
| `/calls/flutter/session-settings` | `SessionSettingsBuilder` — every setter and the whole `hide*Button` list |
|
|
37
|
+
| `/calls/flutter/events` | all five listener types + every callback name and parameter. **⚠️ the page CONSTRUCTS all five; they are `abstract class`es and cannot be instantiated — take the callback NAMES from here and the shape from SKILL.md** |
|
|
38
|
+
| `/calls/flutter/actions` | **every in-call `CallSession.getInstance()` action** — mute/pin/layout/audio-mode/raise-hand/PiP, the toggle+alias pairs, the settings panels, the state getters, and the `Participant` field table |
|
|
39
|
+
| `/calls/flutter/ringing` | **1:1 RINGING — the WHOLE flow, both sides.** Fetch this DIRECTLY (see below) |
|
|
40
|
+
| `/calls/flutter/call-logs` | `CallLog` fields + pagination. **⚠️ its builder shape is wrong three ways — see SKILL.md's corrections; the real form is `(CallLogRequestBuilder()..limit = 30).build()`** |
|
|
41
|
+
| `/calls/flutter/call-layouts` | `LayoutType` values (`.tile` / `.spotlight` / `.sidebar`) and layout switching |
|
|
42
|
+
| `/calls/flutter/audio-modes` | `AudioMode` values and routing |
|
|
43
|
+
| `/calls/flutter/recording` | recording start/stop, `enableAutoStartRecording`, `Recordings`, prerequisites. **⚠️ nothing here covers TRANSCRIPTION, which shipped in 5.0.7 — there is no page at all; use `references/transcription.md`** |
|
|
44
|
+
| `/calls/flutter/participant-management` | roster + moderation (mute / pause video / pin) |
|
|
45
|
+
| `/calls/flutter/custom-participant-list` | building your own roster UI |
|
|
46
|
+
| `/calls/flutter/custom-control-panel` | replacing the built-in controls — **hide first, then drive** |
|
|
47
|
+
| `/calls/flutter/screen-sharing` | the RECEIVE side — the share EVENTS (`onParticipantStartedScreenShare`) and (phantom) `participant.isPresenting`. **⚠️ the page says "receive-only," but 5.0.7 ALSO ships local-share CONTROL methods on `CallSession` (`startScreenShare`/`stopScreenShare`/`toggleScreenShare`/`isScreenSharing`) that the page does NOT document** — see SKILL.md "Screen share" pitfall |
|
|
48
|
+
| `/calls/flutter/raise-hand` | raise / lower / toggle hand, `isHandRaised`, remote `raisedHandTimestamp` |
|
|
49
|
+
| `/calls/flutter/picture-in-picture` | **TWO kinds, pick one** — in-app PiP layout vs Android system PiP (`enterPipMode`) and its manifest flag |
|
|
50
|
+
| `/calls/flutter/idle-timeout` | `setIdleTimeoutPeriod` (default **300**, `0` disables) and `onSessionTimedOut` |
|
|
51
|
+
| `/calls/flutter/background-handling` | **`CometChatOngoingCallService`** — Flutter-only Android foreground service, and its manifest permissions |
|
|
52
|
+
| `/calls/flutter/in-call-chat` | the chat BUTTON (`onChatButtonClicked`, `setChatButtonUnreadCount`) — the chat itself is the UI Kit |
|
|
53
|
+
| `/calls/flutter/share-invite` | `onShareInviteButtonClicked` + the app-side link/deep-link work |
|
|
54
|
+
| `/calls/flutter/voip-calling` | **THE page for `call-voip-push`** — the Android-FCM and iOS-APNs/CallKit paths, separately |
|
|
55
|
+
| `/calls/flutter/migration-guide-v5` | v4→v5 mapping. **⚠️ its "v4" tab shows the OLD API on purpose — do not read those fences as current** |
|
|
56
|
+
| `/calls/flutter/troubleshooting` | common failures |
|
|
57
|
+
|
|
58
|
+
| Path | Use it for |
|
|
59
|
+
|---|---|
|
|
60
|
+
| `/notifications/flutter-push-notifications-android` | FCM wiring for the Android half of call notifications |
|
|
61
|
+
| `/notifications/flutter-push-notifications-ios` | APNs wiring for the iOS half |
|
|
62
|
+
| `/notifications/push-overview` | dashboard providers — you need one configured before any of it rings |
|
|
63
|
+
|
|
64
|
+
## 1:1 RINGING — fetch the page DIRECTLY
|
|
65
|
+
`/calls/flutter/ringing` carries the entire two-sided flow and it is the only page with the **Chat SDK**
|
|
66
|
+
signalling signatures. Those symbols (`CometChat.initiateCall` / `addCallListener` / `CallListener` /
|
|
67
|
+
`acceptCall` / `rejectCall` / `endCall` / `removeCallListener`, and the `Call` /
|
|
68
|
+
`CometChatCallType` / `CometChatReceiverType` / `CometChatCallStatus` types) belong to
|
|
69
|
+
**`cometchat_sdk` v5** and are deliberately ABSENT from `flutter-calls-v5.json`, which catalogs the
|
|
70
|
+
Calls SDK only. Validate them against the chat SDK's own catalog, not this one.
|
|
71
|
+
|
|
72
|
+
Three things the page's shape hides:
|
|
73
|
+
- **`User` is declared by BOTH barrels.** `cometchat_calls_sdk` and `cometchat_sdk` each export a `User`, so a file importing both — which ringing forces — fails with `ambiguous_import` until one side hides it: `import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart' hide User;`.
|
|
74
|
+
- **`CallListener` is a `mixin`, NOT a constructible class.** The page writes `CallListener(onIncomingCallReceived: …)`; a mixin has no constructor, so that does not compile. Use `class X with CallListener { @override … }` and pass an instance. Every method defaults to a no-op, so override only what you need. (Found building this skill's harness — **not** in docs#492.)
|
|
75
|
+
- **There is no `cancelCall`.** Cancelling your own outgoing call is `rejectCall(sessionId, CometChatCallStatus.cancelled)`; rejecting someone else's is the same method with `.rejected`.
|
|
76
|
+
|
|
77
|
+
**Verifying ringing needs TWO live clients.** One device can prove the wiring compiles and that
|
|
78
|
+
`initiateCall` resolves; it can never prove the callee's `onIncomingCallReceived` fired. The harness
|
|
79
|
+
runs two devices, one process per role, and only reports success when BOTH report it on the SAME
|
|
80
|
+
session id — verified by the pack's dev ringing-smoke harness (internal QA, not shipped).
|
|
81
|
+
|
|
82
|
+
## STOPGAP — `CometChatCalls.initFromSettings` (intentionally undocumented, ai-agent only)
|
|
83
|
+
<!-- STOPGAP: source-derived from cometchat_calls_sdk 5.0.7 and its upstream in
|
|
84
|
+
calls-core/calls-sdk-flutter, NOT from a docs page. `initFromSettings` is marked `@nodoc`.
|
|
85
|
+
Tracked as DOCS-BACKLOG F4, closed WONTFIX by the UI Kit
|
|
86
|
+
owner on 2026-08-21: it is to STAY hidden. This stopgap is therefore permanent by decision,
|
|
87
|
+
not pending a docs fix. Everything else in this file comes from the pages above. -->
|
|
88
|
+
```dart
|
|
89
|
+
CometChatCalls.initFromSettings(
|
|
90
|
+
onSuccess: (String message) { /* ... */ },
|
|
91
|
+
onError: (CometChatCallsException e) { /* ... */ },
|
|
92
|
+
);
|
|
93
|
+
```
|
|
94
|
+
- **No settings argument.** It reads `cometchat-settings.json` via **`rootBundle.loadString`**.
|
|
95
|
+
- The file lives at the **project root** and MUST be registered as a Flutter asset:
|
|
96
|
+
```yaml
|
|
97
|
+
flutter:
|
|
98
|
+
assets:
|
|
99
|
+
- cometchat-settings.json
|
|
100
|
+
```
|
|
101
|
+
- Shape: root `appId` (required) + `region` (required); optional `callsSDK` → `adminHost` / `clientHost` / `callsHost`. A host value of the literal string `"null"` is ignored, not applied.
|
|
102
|
+
- Missing file / bad JSON / missing `appId` / missing `region` each fire **`onError` with a distinct code** — none of them throws, so a silent no-call is the symptom.
|
|
103
|
+
- It sets `integrationSource = "ai-agent"`. A plain `CometChatCalls.init` afterwards overwrites that with `"manual"`.
|
|
104
|
+
- **NATIVE FORK:** iOS reads the same filename from `Bundle.main` (Copy Bundle Resources); web passes settings inline with no file.
|
|
105
|
+
|
|
106
|
+
## Callback shapes (VERIFIED against 5.0.7 — the SDK is INCONSISTENT, do not pattern-match)
|
|
107
|
+
| API | `onSuccess` receives | Returns |
|
|
108
|
+
|---|---|---|
|
|
109
|
+
| `init(callAppSettings, …)` | `String` | `void` (not a Future) |
|
|
110
|
+
| `initFromSettings(…)` | `String` | `Future<void>` |
|
|
111
|
+
| `login(uid:, authKey:, …)` | **`User?`** (nullable) | `void` |
|
|
112
|
+
| `loginWithAuthToken(authToken:, …)` | **`User?`** (nullable) | `void` |
|
|
113
|
+
| `logout(…)` | `String` | `void` |
|
|
114
|
+
| `generateCallToken(sessionId, …)` | `CallToken` | `void` |
|
|
115
|
+
| `generateToken(sessionId, userAuthToken, …)` | `GenerateToken` — **⚠️ `@Deprecated`, two POSITIONAL args, and a DIFFERENT type from `generateCallToken`** | `void` |
|
|
116
|
+
| `joinSession(sessionId:/callToken:, sessionSettings:, …)` | **`Widget?`** | `Future<void>` |
|
|
117
|
+
| `getLoggedInUser()` | — | **`Future<User?>`** (await it; no callbacks) |
|
|
118
|
+
|
|
119
|
+
Every `onError` receives `CometChatCallsException`. `joinSession` takes **exactly one** of
|
|
120
|
+
`sessionId` or `callToken` — passing neither (or both) fails through `onError`, not by throwing.
|
|
121
|
+
|
|
122
|
+
## `SessionSettingsBuilder` — every setter, and the five DEFAULT-HIDDEN buttons (5.0.7)
|
|
123
|
+
|
|
124
|
+
> Presented as a CLOSED list, so it has to be complete: `startAudioMuted` and `startVideoPaused`
|
|
125
|
+
> were missing from it until an isolation test caught them. A closed list that isn't makes a real
|
|
126
|
+
> API look like a phantom — worse than no list. Re-probe before trusting it.
|
|
127
|
+
Setters return the builder, so **either** Dart cascades (`..setType(...)`, what the docs show) **or**
|
|
128
|
+
chaining works. Build with `.build()`.
|
|
129
|
+
|
|
130
|
+
`setTitle` · `setDisplayName` · `setType(SessionType)` · `setLayout(LayoutType)` ·
|
|
131
|
+
`setAudioMode(AudioMode)` · `setInitialCameraFacing(CameraFacing)` · `setIdleTimeoutPeriod(int)` ·
|
|
132
|
+
`setCaptionLanguage(String)` · `startAudioMuted(bool)` · `startVideoPaused(bool)` ·
|
|
133
|
+
`enableLowBandwidthMode(bool)` · `enableAutoStartRecording(bool)` · `enableAutoStartTranscription(bool)`
|
|
134
|
+
|
|
135
|
+
`hideControlPanel` · `hideHeaderPanel` · `hideSessionTimer` · `hideLeaveSessionButton` ·
|
|
136
|
+
`hideToggleAudioButton` · `hideToggleVideoButton` · `hideSwitchCameraButton` · `hideAudioModeButton` ·
|
|
137
|
+
`hideChangeLayoutButton` · `hideParticipantListButton` · `hideRaiseHandButton` ·
|
|
138
|
+
`hideScreenSharingButton` · `hideRecordingButton` · `hideShareInviteButton` · `hideChatButton` ·
|
|
139
|
+
`hideTranscriptionButton` · `hideClosedCaptionButton`
|
|
140
|
+
|
|
141
|
+
> **⚠️ FIVE buttons are HIDDEN BY DEFAULT** — `hideRecordingButton`, `hideShareInviteButton`,
|
|
142
|
+
> `hideChatButton` and, new in 5.0.7, `hideTranscriptionButton` and `hideClosedCaptionButton` all
|
|
143
|
+
> default to **`true`**. Wiring the matching click callback without passing `false` produces a
|
|
144
|
+
> listener that can never fire, and it looks like the events are broken. `setIdleTimeoutPeriod`
|
|
145
|
+
> defaults to **300**; every other `hide*` defaults to `false`.
|
|
146
|
+
|
|
147
|
+
## Listener registration — the names do NOT match the types
|
|
148
|
+
| Type | Add | Remove |
|
|
149
|
+
|---|---|---|
|
|
150
|
+
| `SessionStatusListeners` | `addSessionStatusListener(l)` | `removeSessionStatusListener(l)` |
|
|
151
|
+
| `ParticipantEventListeners` | `addParticipantEventListener(l)` | `removeParticipantEventListener(l)` |
|
|
152
|
+
| `MediaEventListeners` | `addMediaEvent`**`s`**`Listener(l)` | `removeMediaEvent`**`s`**`Listener(l)` |
|
|
153
|
+
| `ButtonClickListeners` | `addButtonClickListener(l)` | `removeButtonClickListener(l)` |
|
|
154
|
+
| `LayoutListeners` | `layoutListener = l` | `layoutListener = null` |
|
|
155
|
+
|
|
156
|
+
All five are on `CallSession.getInstance()`, which is **`null` when no session is active** — use `?.`.
|
|
157
|
+
`remove*` matches **by instance**, so the listener must be a retained field.
|
|
158
|
+
|
|
159
|
+
> **⚠️ `LayoutListeners` is the odd one out.** `CallSession` exposes `set layoutListener(LayoutListeners?)`
|
|
160
|
+
> and its getter — there is **no `addLayoutListener` / `removeLayoutListener`**, so only ONE layout
|
|
161
|
+
> listener exists at a time and it is cleared by assigning `null`. The events page shows the add/remove
|
|
162
|
+
> pair; those methods do not exist.
|
|
163
|
+
|
|
164
|
+
> **⚠️ All five types are `abstract class`es.** `SessionStatusListeners(onSessionJoined: …)`, the
|
|
165
|
+
> shape every page uses, does not compile — `flutter analyze` reports `instantiate_abstract_class`.
|
|
166
|
+
> Write `class X extends SessionStatusListeners { @override … }` and pass an instance. Every method
|
|
167
|
+
> already has a no-op body, so `extends` lets you override just what you need; `implements` obliges
|
|
168
|
+
> you to write them all.
|
|
169
|
+
|
|
170
|
+
## ⚠️ Doc corrections — VERIFIED against cometchat_calls_sdk 5.0.7
|
|
171
|
+
The `Doc corrections` table in `SKILL.md` is authoritative; it lists 13 classes of symbol on the live
|
|
172
|
+
pages that do not compile, including **the entire documented token flow** (`generateToken` is
|
|
173
|
+
deprecated, takes positional args, and yields a different type than the pages assign it — while
|
|
174
|
+
`generateCallToken`, the current API, appeared on no page at all).
|
|
175
|
+
|
|
176
|
+
Fixed in docs PR **cometchat/docs#492** (56 → 3 analyzer errors across 25 pages). Until it merges the
|
|
177
|
+
live pages still carry them. **12 fences on those pages parse in no shape and were never
|
|
178
|
+
machine-checked**, so 3 is a floor, not a total — prefer the skill's names over the page's on any
|
|
179
|
+
disagreement, and re-check this section when #492 lands.
|
|
180
|
+
|
|
181
|
+
## Upstream — `calls-core/calls-sdk-flutter` (the SDK monorepo)
|
|
182
|
+
|
|
183
|
+
The Flutter Calls SDK is developed in the **`calls-core` monorepo**, alongside `ios-sdk`,
|
|
184
|
+
`calls-sdk-javascript`, `react-native-sdk` and the shared `calls-sdk-core`. That is where the
|
|
185
|
+
`@nodoc` `initFromSettings` path above was read from, and it is the right place to check when a
|
|
186
|
+
docs page and the installed package disagree.
|
|
187
|
+
|
|
188
|
+
**As of 5.0.7 the published package and the monorepo dev branch (`dev-v5`, == `release-next`;
|
|
189
|
+
`master-v5` merges it) are byte-identical under `lib/`.** So there is no published-vs-upstream gap
|
|
190
|
+
to carry right now.
|
|
191
|
+
|
|
192
|
+
> **⚠️ Never infer that from a version string.** Before 5.0.7 shipped, the published package and
|
|
193
|
+
> the monorepo BOTH read `version: 5.0.6` with different contents. Re-diff the trees; do not
|
|
194
|
+
> compare versions.
|
|
195
|
+
|
|
196
|
+
### 5.0.6 → 5.0.7 (published 2026-09-02)
|
|
197
|
+
|
|
198
|
+
**Transcription arrived as a complete feature** — and `/calls/flutter` has **no page for it**.
|
|
199
|
+
The skill is the only source; see `references/transcription.md` (a labelled STOPGAP) and
|
|
200
|
+
DOCS-BACKLOG **D3**. Three new barrel-exported types entered the catalog: `Transcript`,
|
|
201
|
+
`TranscriptRequest`, `TranscriptRequestBuilder`.
|
|
202
|
+
|
|
203
|
+
**iOS floor raised 13.0 → 15.1**, native `CometChatCallsSDK` pin 5.0.0 → 5.0.4. This is breaking
|
|
204
|
+
for consumers on iOS 13/14 and can bite on a routine `pub upgrade`, because `^5.0.3` resolves to
|
|
205
|
+
5.0.7. Android stayed at `minSdkVersion 26` — the docs' "24 / Android 7.0" was never right for any
|
|
206
|
+
5.0.x.
|
|
207
|
+
|
|
208
|
+
**Six dead enum files were deleted** (`audio_modes`, `avatar_type`, `call_type`, `mode`,
|
|
209
|
+
`video_stream_modes`, `video_stream_positions`). All six were already in the catalog's
|
|
210
|
+
`internalOnlyExcluded` — never reachable from the barrel — so their removal changed nothing here.
|
|
211
|
+
`CallType` is the same phantom skills#183 filed on iOS.
|