From 3b43652cc969c9d211b2b564a9e7f2a594c1f881 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Feb 2026 09:34:46 +0000 Subject: [PATCH] chore: update llms index [skip ci] --- llms.txt | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/llms.txt b/llms.txt index 56e6a94..91848c1 100644 --- a/llms.txt +++ b/llms.txt @@ -1,7 +1,7 @@ - - + + # Platform: Android ## / @@ -9,7 +9,7 @@ - [Settings.gradle](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/settings.gradle.kts): Defines Gradle plugin and dependency repositories, enforces centralized repository resolution, sets the root project name `clix-android-sdk`, and includes the `:clix` SDK module and `:samples:basic-app` sample app modules in the build. - [Gradle](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/gradle.properties): Defines project-wide Gradle configuration for the SDK, including JVM args, AndroidX usage, Kotlin code style, and non-transitive R class behavior that affects build performance, resource namespacing, and compatibility across all modules. - [Readme](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/README.md): README.md documents installation and Firebase setup, SDK initialization (Clix. -- [Changelog](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/CHANGELOG.md): Changelog documenting semver releases and dates, enumerating SDK changes such as ClixConfig initialization, coroutine/thread-safe singletons, Clix.Notification/ClixMessagingService FCM integration and foreground/background handler behavior, user/property APIs, event tracking, serialization fixes, logging, and bug fixes. +- [Changelog](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/CHANGELOG.md): CHANGELOG documenting semantic-versioned releases and notable SDK changes—session tracking, event/sourceType tracking, Clix.Notification (configure/handlers), ClixConfig/ClixMessagingService initialization, user property APIs (setUserId/setUserProperty(s)), FCM integration, Kotlin coroutines and SharedPreferences usage. - [License](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/LICENSE): Defines the SDK’s licensing terms as a modified MIT license, permitting use, modification, and distribution only when integrated with Clix services and requiring inclusion of copyright and permission notices in all substantial copies. ## clix @@ -18,8 +18,8 @@ ## clix/src/main/kotlin/so/clix/core - [Clixnotification](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/core/ClixNotification.kt): ClixNotification is a singleton that configures push behavior (configure/autoRequestPermission/autoHandleLandingURL), exposes handler APIs (onMessage, onBackgroundMessage, onNotificationOpened, onFcmTokenError), manages FCM token/permission ops, and routes payloads to Clix services and optional landing URLs. - [Clixenvironment](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/core/ClixEnvironment.kt): Serializable internal ClixEnvironment constructs and serializes ClixDevice from Context/config/deviceId/token (collecting appVersion, advertising ID via reflection, push permission, timezone/locale), exposes synchronized getDevice/setDevice and companion helpers getAppVersion/getAdId/getIsPushPermissionGranted. -- [Clixconfig](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/core/ClixConfig.kt): Defines the serializable `ClixConfig` data class that centralizes SDK initialization settings (project ID, API key, API endpoint, `ClixLogLevel`, and extra HTTP headers) used to configure Clix network calls and logging behavior. -- [Clix](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/core/Clix.kt): Clix.kt defines the Clix singleton SDK entrypoint that initializes services (storage, token, device, event, notification), persists config, fetches/upserts FCM tokens asynchronously, exposes public APIs (initialize, user ID/properties, trackEvent, setLogLevel, getDeviceId) and Notification, and logs errors via ClixLogger. +- [Clixconfig](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/core/ClixConfig.kt): ClixConfig is a kotlinx‑serializable data class that configures SDK initialization (projectId, apiKey), network endpoint (default https://api.clix. +- [Clix](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/core/Clix.kt): Singleton SDK entrypoint that initializes and restores SDK state, manages core services (Storage, Device, Token, Event, Notification, Session), asynchronously fetches/saves FCM tokens via FirebaseMessaging, and exposes public APIs: initialize(), Notification, setUserId/removeUserId, user property APIs, trackEvent, setLogLevel, getDeviceId. ## clix/src/main/kotlin/so/clix/models - [Notificationcontext](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/models/NotificationContext.kt): Internal data class NotificationContext encapsulating notificationData: Map and autoOpenLandingURL flag (default true), used by notification-handling flows to decide whether to auto-open landing URLs; module-internal. @@ -31,17 +31,18 @@ ## clix/src/main/kotlin/so/clix/notification - [Permissionactivity](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/notification/PermissionActivity.kt): Internal transparent PermissionActivity that requests POST_NOTIFICATIONS on Android TIRAMISU+, persists pending/result/timestamp in Clix.storageService to recover after restarts, exposes internal suspend requestPermission(context) which starts the activity, awaits result via a synchronized callback, and enforces a 5s timeout. - [Clixmessagingservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/notification/ClixMessagingService.kt): Firebase MessagingService that auto-initializes Clix, parses FCM RemoteMessage into ClixPushNotificationPayload in onMessageReceived and dispatches to Clix.Notification via coroutine, and handles onNewToken by saving/upserting tokens (Clix. -- [Notificationtappedactivity](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/notification/NotificationTappedActivity.kt): Manifest-registered Activity that handles notification tap intents by extracting extras (messageId, landingUrl, journey IDs, autoHandleLandingURL, JSON data), deserializing data, and invoking ClixNotification.handleNotificationTapped (with NotificationContext and ClixPushNotificationPayload), then finishes. +- [Notificationtappedactivity](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/notification/NotificationTappedActivity.kt): NotificationTappedActivity is the manifest entry point for notification taps that extracts intent extras (messageId, landingUrl, userJourneyId, userJourneyNodeId, autoHandleLandingURL, clix_notification_data), sets Clix.sessionService. ## clix/src/main/kotlin/so/clix/services -- [Notificationservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/NotificationService.kt): NotificationService (Context, StorageService, EventService) manages channels/permissions, deduplicates and shows push notifications (creates NotificationCompat notifications with optional remote image and PendingIntent to NotificationTappedActivity), tracks receive/tap events, and exposes handleNotificationReceived/tapped, requestNotificationPermission, preferences/reset. +- [Sessionservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/SessionService.kt): SessionService observes app lifecycle via ProcessLifecycleOwner to start or continue sessions based on a timeout, persists last-activity to StorageService, optionally sends a SESSION_START event (via EventService in Clix.coroutineScope), and exposes start() and setPendingMessageId(). +- [Notificationservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/NotificationService.kt): NotificationService manages push reception and display: creates notification channel, prevents duplicate message handling via StorageService, loads remote images, posts Android notifications with PendingIntent to NotificationTappedActivity, requests permissions via PermissionActivity, and tracks events through EventService. - [Storageservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/StorageService.kt): Provides a type-safe JSON-backed wrapper around Android `SharedPreferences` for internal SDK persistence, exposing generic `set`, `get`, and `remove` APIs using Kotlinx Serialization with `ignoreUnknownKeys` and logging deserialization failures via `ClixLogger`. - [Deviceservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/DeviceService.kt): Manages device identity, local storage, and remote device/user-property synchronization via DeviceAPIService using StorageService and Clix.environment—providing getCurrentDeviceId(), set/remove project userId, update/remove user properties, upsert token and push-permission; logs and handles network/serialization errors. - [Tokenservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/TokenService.kt): Internal TokenService (depends on StorageService) persists a timestamped Token at key "clix_current_push_token", maintains up to 5 previous tokens at "clix_push_tokens", and exposes getCurrentToken, getPreviousTokens, saveToken, clearTokens and reset. - [Deviceapiservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/DeviceAPIService.kt): DeviceAPIService provides suspend REST client methods (post/delete via ClixAPIClient) to upsert devices, set a device's projectUserId, add/update or remove user properties—returning ClixServerDevice or projectUserId and serializing ClixDevice/ClixUserProperty to /devices and /devices/{id}/user/* endpoints. -- [Eventservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/EventService.kt): Internal service that converts arbitrary event properties to JSON primitives, builds `EventProperties`/`EventForRequest` payloads (including message/journey metadata and `Clix.environment. +- [Eventservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/EventService.kt): Internal EventService exposes suspend fun trackEvent(.. - [Clixapiclient](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/ClixAPIClient.kt): Defines the internal `ClixAPIClient`, a JSON-configured (snake_case) HTTP wrapper around `HTTPClient` that builds `/api/v1` URLs from `Clix` environment config, injects default auth/identification headers, logs requests/responses, and exposes generic suspend `get`, `post`, `put`, and `delete` helpers. -- [Eventapiservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/EventAPIService.kt): Implements the `/events` tracking client, defining serializable `Event*` payload models and using the generic `ClixAPIClient.post` flow to send batched device-scoped events (with message/journey metadata and custom JSON properties) to the backend. +- [Eventapiservice](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/services/EventAPIService.kt): Defines serializable event models (EventProperties, EventForRequest, Event, CreateEventsRequest/Response) and an internal EventAPIService (extends ClixAPIClient) exposing suspend trackEvents(List) that JSON-serializes and POSTs events to /events via kotlinx.serialization. ## clix/src/main/kotlin/so/clix/utils - [Clixerror](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/main/kotlin/so/clix/utils/ClixError.kt): Defines the internal sealed `ClixError` exception hierarchy used across the SDK to represent initialization, configuration, network, encoding/decoding, permission, and unknown failures, standardizing error messages and propagation for Clix API flows. @@ -66,7 +67,7 @@ ## clix/src/test/kotlin/so/clix/services - [Tokenservicetest](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/test/kotlin/so/clix/services/TokenServiceTest.kt): Robolectric unit tests for TokenService using StorageService-backed SharedPreferences, verifying getCurrentToken/getPreviousTokens, saveToken behavior (append current to previous, cap previous list at 5), and clearTokens/reset side-effects on persisted token state. -- [Notificationservicetest](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/test/kotlin/so/clix/services/NotificationServiceTest.kt): Unit tests for NotificationService using Robolectric and MockK that verify handleNotificationTapped tracks PUSH_NOTIFICATION_TAPPED, setNotificationPreferences persists preferences conditional on NotificationManagerCompat.areNotificationsEnabled, and reset removes settings and calls NotificationManagerCompat. +- [Notificationservicetest](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/test/kotlin/so/clix/services/NotificationServiceTest.kt): Unit tests for NotificationService verifying handleNotificationTapped triggers EventService.trackEvent, setNotificationPreferences persists preferences conditional on NotificationManagerCompat. - [Eventservicetest](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/test/kotlin/so/clix/services/EventServiceTest.kt): Robolectric/MockK-based unit tests for `EventService.trackEvent`, verifying that events are built with the `Clix. - [Storageservicetest](https://raw.githubusercontent.com/clix-so/clix-android-sdk/main/clix/src/test/kotlin/so/clix/services/StorageServiceTest.kt): Robolectric-based unit tests for `StorageService`, validating SharedPreferences-backed `set/get/remove` behavior for strings and `@Serializable` objects, null-handling (key removal), and graceful failure on invalid JSON deserialization using the `"clix_preferences"` store.