Skip to content

[EUX-1843] Document chat lifecycle hub, matrix, samples, and gateway/API touchpoints#29

Merged
raymondjoneskustomer merged 4 commits into
mainfrom
docs/chat-lifecycle
Apr 13, 2026
Merged

[EUX-1843] Document chat lifecycle hub, matrix, samples, and gateway/API touchpoints#29
raymondjoneskustomer merged 4 commits into
mainfrom
docs/chat-lifecycle

Conversation

@raymondjoneskustomer
Copy link
Copy Markdown
Contributor

@raymondjoneskustomer raymondjoneskustomer commented Apr 10, 2026

User description

[EUX-1843] Chat Lifecycle documentation: CHAT_CONNECTIONS hub updates, cross-platform matrix sample-app links, sample READMEs, and related repo docs. Tracked in Linear.


Generated description

Below is a concise technical summary of the changes proposed in this PR:
Document the Chat Lifecycle by expanding the sample README to explain the Android chat SDK flow and link to the CHAT_CONNECTIONS.md hub, lifecycle matrix, and repo docs. Align the Kotlin sample's Gradle dependency resolution so every io.netty artifact uses 4.1.118.Final via shared resolution strategies.

TopicDetails
Lifecycle docs Document how the sample apps exercise the Android chat SDK by explaining the flow in the README and pointing to the CHAT_CONNECTIONS.md hub, lifecycle matrix, and related repo documents.
Modified files (1)
  • README.md
Latest Contributors(2)
UserCommitDate
emre-ozsahinUpdate README.mdFebruary 14, 2024
markewaldron@gmail.comUpdate README.mdJune 21, 2021
Gradle netty alignment Align the Kotlin sample's Gradle io.netty dependency resolution to enforce version 4.1.118.Final in both the buildscript and subproject configurations.
Modified files (1)
  • kotlin_chat_v2_sample/build.gradle
Latest Contributors(2)
UserCommitDate
emre-ozsahinchore: Update SDK and ...January 13, 2025
emre.ozsahin@kustomer.comUpdate kustomer versio...February 09, 2024
This pull request is reviewed by Baz. Review like a pro on (Baz).

- README: clarify sample app for SDK testing; Chat Lifecycle + See also; typo

Made-with: Cursor
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 10, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 027947cc-c662-453c-92e1-f6bb2ef6e1d0

📥 Commits

Reviewing files that changed from the base of the PR and between f1add0c and 8ccd142.

📒 Files selected for processing (1)
  • .github/CODEOWNERS
💤 Files with no reviewable changes (1)
  • .github/CODEOWNERS
📜 Recent review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (actions)

📝 Walkthrough

Walkthrough

README updates clarify repo purpose and add cross-referenced "Chat Lifecycle" documentation; kotlin_chat_v2_sample/build.gradle enforces a minimum io.netty version via an added import, ext.nettyMinVersion, and resolutionStrategy rules; .github/CODEOWNERS was removed. No runtime or API changes.

Changes

Cohort / File(s) Summary
Documentation
README.md
Adds a bold "What this is" note clarifying these are sample apps (not the SDK or production-ready), fixes a typo in the kotlin_chat_v2_sample bullet, adds a new "Chat Lifecycle" section and cross-references (links to pubnub.md, CHAT_CONNECTIONS.md, chat-api chat-lifecycle anchor, and customer-android-kotlin). No code changes.
Build configuration
kotlin_chat_v2_sample/build.gradle
Adds import org.gradle.util.internal.VersionNumber, introduces ext.nettyMinVersion = '4.1.118.Final', and applies resolutionStrategy.eachDependency in both buildscript classpath handling and root subprojects { ... } to coerce transitive io.netty artifacts to a minimum version (only rewrites when requested version is missing or lower).
Repository config removal
.github/CODEOWNERS
Deletes the repository CODEOWNERS file (removes prior global wildcard ownership entry).
🚥 Pre-merge checks | ✅ 3 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The Gradle netty dependency alignment (4.1.118.Final) is a dependency management improvement aligned with SDK stability. The removal of CODEOWNERS is administrative and out of scope. The CODEOWNERS deletion appears unrelated to chat lifecycle documentation objectives. Clarify whether this removal was intentional or should be reverted.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: documenting chat lifecycle and adding cross-linked documentation with sample app links, matrix, and gateway/API touchpoints.
Description check ✅ Passed The description is related to the changeset, explaining the chat lifecycle documentation expansion and Gradle dependency alignment for io.netty.
Linked Issues check ✅ Passed The PR addresses EUX-1843's objective to add cross-linked Chat Lifecycle documentation by expanding the README with lifecycle explanation and adding links to CHAT_CONNECTIONS hub and related docs.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.md`:
- Around line 11-13: The README links to pubnub.md, CHAT_CONNECTIONS.md and the
chat-api README (and the customer-android-kotlin repo) are broken; update the
URLs in README.md so they point to the correct existing locations (replace the
current kustomer/chat-api links with the correct repository and file paths for
pubnub.md and docs/CHAT_CONNECTIONS.md, and ensure the Chat Lifecycle README and
customer-android-kotlin link target valid repo/branch names). Locate the
references to "pubnub.md", "CHAT_CONNECTIONS.md", "chat-api — Chat Lifecycle",
and "customer-android-kotlin" in the README and replace each URL with the
verified working URL for that file/repo.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 78775554-14eb-4df8-9bca-04738bc59e02

📥 Commits

Reviewing files that changed from the base of the PR and between 5b24020 and fe33dc1.

📒 Files selected for processing (1)
  • README.md
📜 Review details
🔇 Additional comments (1)
README.md (1)

3-13: Strong documentation improvement for scope and lifecycle mapping.

Clearer repo intent, explicit non-production caveat, and the new Chat Lifecycle + “See also” cross-links make onboarding and repo boundaries much easier to understand.

Comment thread README.md
Resolves vulnerable io.netty:netty-codec-http (e.g. 4.1.34) from AGP/grpc classpath via resolutionStrategy on buildscript + subprojects.

Made-with: Cursor
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
kotlin_chat_v2_sample/build.gradle (2)

5-14: Unify Netty version into a single source of truth to avoid drift

The version is hardcoded in two places: line 10 ('4.1.118.Final') and line 28 (ext.nettyAlignVersion). The line 9 comment ("keep in sync") shows this duplication is already a known maintenance burden. On future version bumps, you must edit both locations; missing one reintroduces mixed Netty versions.

Extract the version to a single declaration used by both buildscript (line 10) and subprojects (line 35):

♻️ Proposed refactor
+def nettyAlignVersion = '4.1.118.Final'
+
 buildscript {
     ext.kotlin_version = "1.9.24"
     configurations.classpath {
         resolutionStrategy {
             eachDependency { details ->
                 if (details.requested.group == 'io.netty') {
-                    // buildscript runs before root `ext`; keep in sync with ext.nettyAlignVersion below
-                    details.useVersion('4.1.118.Final')
+                    details.useVersion(nettyAlignVersion)
                 }
             }
         }
     }
@@
-ext.nettyAlignVersion = '4.1.118.Final'
+ext.nettyAlignVersion = nettyAlignVersion
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@kotlin_chat_v2_sample/build.gradle` around lines 5 - 14, The Netty version is
duplicated between the buildscript dependency resolution and the ext property;
unify them by declaring a single variable (e.g., ext.nettyAlignVersion) before
the buildscript/configuration blocks and reference that variable in the
configurations.classpath resolutionStrategy (replace the hardcoded
'4.1.118.Final' used in details.useVersion) and keep subprojects referencing
ext.nettyAlignVersion so both buildscript and subprojects consume the same
source of truth (update any buildscript or resolutionStrategy references to use
the ext property).

31-33: Scope resolutionStrategy to resolvable configurations only

configuration.resolutionStrategy.eachDependency only executes when a configuration is resolved. Guard with configuration.canBeResolved to avoid registering rules on non-resolvable configurations and reduce configuration-time overhead:

subproject.configurations.configureEach { configuration ->
    if (configuration.canBeResolved) {
        configuration.resolutionStrategy {
            eachDependency { details ->
                if (details.requested.group == 'io.netty') {
                    details.useVersion(rootProject.ext.nettyAlignVersion)
                }
            }
        }
    }
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@kotlin_chat_v2_sample/build.gradle` around lines 31 - 33, The resolution
rules are being registered for every configuration which can be unnecessary or
invalid; update the subproject.configurations.configureEach block to only
register configuration.resolutionStrategy.eachDependency for resolvable
configurations by checking configuration.canBeResolved first (i.e., wrap the
resolutionStrategy/eachDependency registration inside an if
(configuration.canBeResolved) guard) so you only call
configuration.resolutionStrategy.eachDependency for configurations that can be
resolved.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@kotlin_chat_v2_sample/build.gradle`:
- Around line 5-14: The Netty version is duplicated between the buildscript
dependency resolution and the ext property; unify them by declaring a single
variable (e.g., ext.nettyAlignVersion) before the buildscript/configuration
blocks and reference that variable in the configurations.classpath
resolutionStrategy (replace the hardcoded '4.1.118.Final' used in
details.useVersion) and keep subprojects referencing ext.nettyAlignVersion so
both buildscript and subprojects consume the same source of truth (update any
buildscript or resolutionStrategy references to use the ext property).
- Around line 31-33: The resolution rules are being registered for every
configuration which can be unnecessary or invalid; update the
subproject.configurations.configureEach block to only register
configuration.resolutionStrategy.eachDependency for resolvable configurations by
checking configuration.canBeResolved first (i.e., wrap the
resolutionStrategy/eachDependency registration inside an if
(configuration.canBeResolved) guard) so you only call
configuration.resolutionStrategy.eachDependency for configurations that can be
resolved.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0abd4526-e103-429b-9598-e9bdf1488227

📥 Commits

Reviewing files that changed from the base of the PR and between fe33dc1 and 689b1a5.

📒 Files selected for processing (1)
  • kotlin_chat_v2_sample/build.gradle

@raymondjoneskustomer raymondjoneskustomer marked this pull request as ready for review April 10, 2026 16:33
@raymondjoneskustomer raymondjoneskustomer requested a review from a team as a code owner April 10, 2026 16:33
Comment thread kotlin_chat_v2_sample/build.gradle Outdated
eachDependency { details ->
if (details.requested.group == 'io.netty') {
// buildscript runs before root `ext`; keep in sync with ext.nettyAlignVersion below
details.useVersion('4.1.118.Final')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@raymondjoneskustomer Sure you don't want details.require so that it's just enforcing a minimum version?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread README.md

Sample apps exercise the **Android chat SDK** end-to-end (HTTP + **PubNub**). Behavior and channel naming follow **chat-api**; see [pubnub.md](https://github.com/kustomer/chat-api/blob/master/pubnub.md).

**See also:** [Chat ecosystem map — `CHAT_CONNECTIONS.md`](https://github.com/kustomer/chat-api/blob/master/docs/CHAT_CONNECTIONS.md) · [chat-api — Chat Lifecycle](https://github.com/kustomer/chat-api/blob/master/README.md#chat-lifecycle) · [customer-android-kotlin](https://github.com/kustomer/customer-android-kotlin)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/kustomer/chat-api/blob/master/docs/CHAT_CONNECTIONS.md doesn't exist.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not yet @bhutzel-kustomer , because that is also part of the MASS PR

eachDependency has no details.require; only useVersion when requested
version is missing or below 4.1.118.Final (CVE floor). Addresses PR
feedback from eng-mobile-team.

Made-with: Cursor
@raymondjoneskustomer raymondjoneskustomer merged commit c541445 into main Apr 13, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants