kindly 2.0.9 copy "kindly: ^2.0.9" to clipboard
kindly: ^2.0.9 copied to clipboard

Kindly Chat SDK for Flutter - customer support chat widget for iOS and Android. Successor to the kindly_sdk package.

Changelog #

2.0.9 - 2026-05-10 #

Changed #

2.0.6 - 2026-05-03 #

Changed #

  • Android: switched from JitPack to a bundled inline Maven repo. The package now ships android/maven-repo/ai/kindly/sdk/<version>/sdk-<version>.{aar,pom} inside the tarball; the Flutter plugin's build.gradle declares it via maven { url "$projectDir/maven-repo" }. Replaces the com.github.kindly-ai:sdk-chat-android:<version> JitPack coordinate with ai.kindly:sdk:<version>.
    • Why: JitPack failed to build versions 1.0.100 / 1.0.101 / 1.0.102 of the Android SDK with opaque "Error building" errors on its side, so we couldn't reference the latest deploys from kindly. The bundled- inline approach has zero external dependencies — no JitPack, no customer-side repo declarations.
    • Customer impact: none in default Flutter setups. The allprojects block in the kindly plugin's build.gradle exposes the local repo transparently. Strict-mode setups (those that set dependencyResolutionManagement.repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS in settings.gradle) need to either relax that mode or add the kindly path to their own settings.gradle's dependencyResolutionManagement.repositories.
    • Bundled Android SDK version in this release: 1.0.102 (latest as of this publish, fetched from kindly-ai/sdk-chat-android at tag).

Fixed #

  • CI: post-publish housekeeping is now best-effort, never fails the workflow. Previous releases failed if the post-publish git tag / bump / push step had any issue, even though the package was already successfully on pub.dev. Wrapped the post-publish section in a block with failed_when: false everywhere — the publish is what matters, and any housekeeping warning is logged loudly without blocking.
  • CI: post-publish auto-adds a CHANGELOG stub for the bumped version, eliminating the recurring trap where the next CI publish fails dry-run validation with "CHANGELOG.md doesn't mention current version".
  • CI: tag creation is idempotent. If v<version> already exists (e.g., a manual local publish followed by a CI re-attempt), the pipeline logs and continues instead of erroring out.
  • CI: bundle-native-sdks.yml rewrites build.gradle's ai.kindly:sdk:<version> coord to match android-source's bumpversion.cfg current_version at bundle time. Previously the version was hardcoded and would drift out of sync with whatever the source pipeline just deployed.

2.0.5 - 2026-05-03 #

Internal #

  • No content changes vs 2.0.4. This release is the cross-repo CI validating the end-to-end auto-republish flow on the Android source side after the 1.0.101 deploy. The bundled JitPack reference is unchanged (com.github.kindly-ai:sdk-chat-android:1.0.99) — JitPack's build for 1.0.100 / 1.0.101 errored on its side; we'll bump the reference once that's resolved or we mirror via a different route.

2.0.4 - 2026-05-02 #

Fixed #

  • Android: SDK Kotlin 2.3.0 metadata + missing transitive deps. Earlier versions bundled kindlysdk.aar via implementation files(...), which AGP 8.x rejects inside any module that itself produces an AAR ("Direct local .aar file dependencies are not supported"), and which doesn't propagate the AAR's POM transitive deps so consumer apps crash at launch with ClassNotFoundException: okhttp3.Interceptor. Switched to a Maven dep on the JitPack-served public release repo: implementation 'com.github.kindly-ai:sdk-chat-android:1.0.99'.
  • Android: Kotlin 2.1.0 → 2.3.20 (matches android-source's upgrade, resolves "Module was compiled with an incompatible version of Kotlin" errors), AGP 7.3.0 → 8.6.0, JVM target 1.8 → 17.
  • Android: AuthTokenCallback is now a typealias (was an interface) in the upstream SDK. The plugin's KindlyPlugin.kt was rewritten from an object : AuthTokenCallback { override fun getAuthToken() } to a lambda matching the new typealias signature (chatId) -> Deferred<String>.

Customer setup change #

If your app's android/settings.gradle uses dependencyResolutionManagement.repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS, you must also add maven { url 'https://jitpack.io' } to that dependencyResolutionManagement block — kindly declares JitPack via allprojects in its plugin build.gradle, which is silently ignored under strict mode. Default Flutter setups don't need any change.

2.0.3 - 2026-05-02 #

Internal #

  • Refresh of bundled iOS xcframework + Android AAR from the latest kindly-ai/sdk-chat-ios-sources and kindly-ai/sdk-chat-android-sources releases. No public API changes.

2.0.2 - 2026-05-02 #

Fixed #

  • 2.0.1 was published with a missing iOS xcframework (working-directory state issue during a manual publish). iOS builds against kindly: ^2.0.1 fail at pod install with a missing-vendored-framework error. 2.0.2 re-ships the same source with the proper signed KindlySDK.xcframework bundled. All users of 2.0.1 should upgrade to 2.0.2.

2.0.1 - 2026-05-02 #

Added #

  • KindlySDK.setDelegate(...) and KindlySDK.clearDelegate() — host apps can now register the same three callbacks the iOS / Android SDKs expose via KindlyChatClientDelegate / KindlySDKInteraction:
    • onButtonPressed(button, chatLog) — fired when the user taps a chat button. Fire-and-forget, no return value.
    • shouldHandleLink(url) -> bool — asked before the SDK opens a link tapped inside chat. Return false to take over (e.g. route via host app's deep linker); true (default) lets the SDK handle.
    • shouldHandleNotification(notification) -> bool — asked for every decrypted Kindly silent push. Same return semantics.
  • The two synchronous-bool callbacks block the native calling thread on a DispatchSemaphore (iOS) / CompletableDeferred (Android) with a 5-second timeout. After timeout the SDK falls back to its default true.

Internal #

  • bundle-native-sdks.yml: prerequisite path / Xcode / Gradle checks now gated on the bundle_only parameter so iOS-only and Android-only CI runs don't fail on missing sibling-repo paths.

2.0.0 - 2026-05-02 #

Renamed #

The package has been renamed from kindly_sdk to kindly. This is the only breaking change in 2.0.0 — the public API surface is identical to what was being prepared as kindly_sdk 1.1.0. To migrate:

 dependencies:
-  kindly_sdk: ^1.0.1
+  kindly: ^2.0.0
-import 'package:kindly_sdk/kindly_sdk.dart';
+import 'package:kindly/kindly.dart';

Nothing else changes — KindlySDK.start(...), all theme calls, all event handlers continue to work identically.

The legacy kindly_sdk package is now discontinued on pub.dev with a successor pointer to this package; new releases happen here.

Added (carried over from never-published 1.1.0) #

  • KindlySDK.setLanguage(languageCode) — update language for the current session.
  • KindlySDK.sendMessage(text, newContext: ...) — programmatically send a user message; resolves with the reconciled message map (id, text, created, sender).
  • KindlySDK.kill() — completely tear down the SDK; complements endChat() which only ends the chat session.
  • KindlySDK.handleUrl(url) — handle Kindly deep-link URLs (kindly://chat/dialogue/{id}).
  • KindlySDK.callHandover(callback) — initiate handover to a human agent and receive a callback when the handover begins. Replaces the misnamed setHandoverCallback (kept as a deprecated alias).

Fixed (carried over from never-published 1.1.0) #

  • iOS: start() now actually wires the authTokenCallback through to the native SDK (previously hard-coded to nil).
  • iOS: every method handler now invokes the real Kindly SDK — closeChat, endChat, setCustomTheme, setNewContext, clearNewContext, saveAuthToken, setAPNSDeviceToken, handleNotification, isKindlyNotification, triggerDialogue, setVerboseLogging, setCrashReporting, clearCustomTheme, isChatDisplayed were all stubbed.
  • iOS: isChatDisplayed now reflects real state by subscribing to KindlySDK.state.
  • Android: SDK imports are no longer commented out; placeholder AuthTokenCallback / CallbackHandover interfaces removed in favour of the real ones.
  • Android: auth callback is now passed into ChatKindlySDK.start (previously created but discarded).
  • Android: triggerDialogue, setVerboseLogging, setCrashReporting, saveNotificationToken were reading args from a non-existent map key — now read the bare argument as Dart sends it.
  • Android: handleNotification / isKindlyNotification reconstruct a RemoteMessage from the data map so the SDK methods can be invoked.
  • Android: handover callback signature aligned with the SDK's CallbackHandover.callHandover() (was (event, data)).

1.1.0 - 2026-05-01 #

Added #

  • KindlySDK.setLanguage(languageCode) — update language for the current session.
  • KindlySDK.sendMessage(text, newContext: ...) — programmatically send a user message; resolves with the reconciled message map (id, text, created, sender).
  • KindlySDK.kill() — completely tear down the SDK; complements endChat() which only ends the chat session.
  • KindlySDK.handleUrl(url) — handle Kindly deep-link URLs (kindly://chat/dialogue/{id}).
  • KindlySDK.callHandover(callback) — initiate handover to a human agent and receive a callback when the handover begins. Replaces the misnamed setHandoverCallback (kept as a deprecated alias).

Fixed #

  • iOS: start() now actually wires the authTokenCallback through to the native SDK (previously hard-coded to nil).
  • iOS: every method handler now invokes the real Kindly SDK — closeChat, endChat, setCustomTheme, setNewContext, clearNewContext, saveAuthToken, setAPNSDeviceToken, handleNotification, isKindlyNotification, triggerDialogue, setVerboseLogging, setCrashReporting, clearCustomTheme, isChatDisplayed were all stubbed.
  • iOS: isChatDisplayed now reflects real state by subscribing to KindlySDK.state.
  • Android: SDK imports are no longer commented out; placeholder AuthTokenCallback / CallbackHandover interfaces removed in favour of the real ones.
  • Android: auth callback is now passed into ChatKindlySDK.start (previously created but discarded).
  • Android: triggerDialogue, setVerboseLogging, setCrashReporting, saveNotificationToken were reading args from a non-existent map key — now read the bare argument as Dart sends it.
  • Android: handleNotification / isKindlyNotification reconstruct a RemoteMessage from the data map so the SDK methods can be invoked.
  • Android: handover callback signature aligned with the SDK's CallbackHandover.callHandover() (was (event, data)).
  • Example app & integration test imports fixed (package:kindly_sdk/kindly_sdk.dart).

Notes #

  • events and state streams from the native EntryPoints (Combine on iOS, Flow on Android) are not yet exposed on the Dart side. Adding them requires a Flutter EventChannel and is tracked for a follow-up release.
  • KindlySDKInteraction (Android button-press / link-intercept / notification delegate) is not yet exposed on the Dart side.

1.0.1 - 2025-07-11 #

Documentation #

  • Updated README.md - removed Example and Support sections All notable changes to this project will be documented in this file.

1.0.0 - 2025-07-10 #

Initial Release #

Features

  • 🚀 Complete Flutter bridge to native Kindly Chat SDKs (iOS & Android)
  • 🎨 Customizable themes with full color control
  • 🔐 JWT authentication support with callback mechanism
  • 🌍 Multi-language support
  • 💬 Real-time chat functionality
  • 📱 Native iOS and Android implementations
  • 🔔 Push notification support (APNS for iOS, FCM for Android)
  • 🎯 Dialogue triggering capabilities
  • 📊 Context data support for personalized conversations
  • 🐛 Crash reporting and verbose logging options

API Methods

  • start() - Initialize the SDK with bot key and optional auth callback
  • displayChat() - Show the chat interface
  • launchChat() - Launch chat with optional dialogue trigger
  • closeChat() - Close the chat interface
  • endChat() - End the chat session completely
  • setCustomTheme() - Customize chat appearance
  • clearCustomTheme() - Reset to default theme (Android only)
  • setNewContext() - Set contextual user data
  • clearNewContext() - Clear context data
  • saveAuthToken() - Save authentication token
  • setAPNSDeviceToken() - Set iOS push notification token
  • saveNotificationToken() - Set Android push notification token
  • handleNotification() - Process incoming notifications
  • isKindlyNotification() - Check if notification is from Kindly
  • triggerDialogue() - Trigger specific dialogue
  • clearTriggerDialogue() - Clear triggered dialogue (Android only)
  • setHandoverCallback() - Set handover callback (Android only)
  • isChatDisplayed - Check if chat is currently displayed
  • setVerboseLogging() - Enable/disable verbose logging
  • setCrashReporting() - Enable/disable crash reporting

Platform Support

  • iOS 12.0+
  • Android API Level 21+
  • Flutter 2.0.0+

Dependencies

  • Native Kindly iOS SDK (via CocoaPods/SPM)
  • Native Kindly Android SDK (via JitPack)
0
likes
0
points
1.45k
downloads

Documentation

Documentation

Publisher

unverified uploader

Weekly Downloads

Kindly Chat SDK for Flutter - customer support chat widget for iOS and Android. Successor to the kindly_sdk package.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on kindly

Packages that implement kindly