Skip to content

Commit 13e3c1a

Browse files
Merge branch 'develop' into docs/ai-migration-guide
2 parents a0c8035 + 6d5d6c1 commit 13e3c1a

2,207 files changed

Lines changed: 89393 additions & 82148 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ stream-chat-android-docs @GetStream/android-developers
99
stream-chat-android-client @GetStream/android-developers
1010
stream-chat-android-client-test @GetStream/android-developers
1111
stream-chat-android-core @GetStream/android-developers
12-
stream-chat-android-offline @GetStream/android-developers
1312
stream-chat-android-pushprovider-firebase @GetStream/android-developers
1413
stream-chat-android-pushprovider-huawei @GetStream/android-developers
1514
stream-chat-android-pushprovider-xiaomi @GetStream/android-developers
16-
stream-chat-android-state @GetStream/android-developers
1715
stream-chat-android-test @GetStream/android-developers
1816

1917
# UI
@@ -24,7 +22,6 @@ stream-chat-android-compose @GetStream/android-developers
2422
stream-chat-android-compose-sample @GetStream/android-developers
2523
stream-chat-android-ui-guides @GetStream/android-developers
2624
stream-chat-android-ui-uitests @GetStream/android-developers
27-
stream-chat-android-ui-utils @GetStream/android-developers
2825

2926
# Libraries
3027
libraries/external @GetStream/android-developers
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: App Distribute CI v7
2+
3+
# Temporary workflow to publish the v7 sample as a separate app in Firebase. When v7 is released in
4+
# production, we can remove this workflow and update the main `app-distribute.yml` instead
5+
6+
on:
7+
push:
8+
branches:
9+
- v7
10+
workflow_dispatch:
11+
12+
jobs:
13+
build_compose_sample_app:
14+
name: Build and Distribute Compose Sample App
15+
runs-on: ubuntu-24.04
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: GetStream/android-ci-actions/actions/setup-java@main
19+
- name: Prepare environment
20+
run: |
21+
git fetch --unshallow
22+
echo "${{ secrets.RELEASE_KEYSTORE }}" > .sign/release.keystore.asc
23+
gpg -d --passphrase "${{ secrets.PASSPHRASE }}" --batch .sign/release.keystore.asc > .sign/release.keystore
24+
echo "${{ secrets.RELEASE_KEYSTORE_PROPERTIES }}" > .sign/keystore.properties.asc
25+
gpg -d --passphrase "${{ secrets.PASSPHRASE }}" --batch .sign/keystore.properties.asc > .sign/keystore.properties
26+
- name: Assemble
27+
run: ./gradlew :stream-chat-android-compose-sample:assembleRelease --stacktrace
28+
- name: Upload artifact to Firebase App Distribution
29+
uses: wzieba/Firebase-Distribution-Github-Action@v1.7.0
30+
with:
31+
appId: "1:17048947178:android:07dc1e8e56b65c1f40ca93" # V7 demo app id
32+
serviceCredentialsFileContent: ${{ secrets.STREAM_ANDROID_FIREBASE_CREDENTIALS_APP_CONTENT }}
33+
groups: stream-testers
34+
file: stream-chat-android-compose-sample/build/outputs/apk/demo/release/stream-chat-android-compose-sample-demo-release.apk

.github/workflows/localazy-download.yml

Lines changed: 0 additions & 48 deletions
This file was deleted.

.github/workflows/localazy-upload.yml

Lines changed: 0 additions & 22 deletions
This file was deleted.

.github/workflows/publish-new-version.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ on:
1111
- patch
1212
- minor
1313
- major
14+
- none
1415
default: minor
16+
suffix:
17+
required: false
18+
type: string
19+
description: "Optional version suffix (e.g. beta, rc01). A dash is added automatically."
20+
default: ''
1521

1622
concurrency:
1723
group: release
@@ -30,9 +36,10 @@ jobs:
3036
permissions:
3137
contents: write
3238
needs: pre_release_check
33-
uses: GetStream/stream-build-conventions-android/.github/workflows/release.yml@v0.9.0
39+
uses: GetStream/stream-build-conventions-android/.github/workflows/release.yml@v0.10.0
3440
with:
3541
bump: ${{ inputs.bump }}
42+
suffix: ${{ inputs.suffix }}
3643
secrets:
3744
github-token: ${{ secrets.STREAM_PUBLIC_BOT_TOKEN }}
3845
maven-central-username: ${{ secrets.OSSRH_USERNAME }}

.github/workflows/sdk-size-checks.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
compare-sdk-sizes:
1212
uses: GetStream/stream-build-conventions-android/.github/workflows/sdk-size-checks.yml@v0.9.0
1313
with:
14-
modules: "stream-chat-android-client stream-chat-android-offline stream-chat-android-ui-components stream-chat-android-compose"
14+
modules: "stream-chat-android-client stream-chat-android-ui-components stream-chat-android-compose"
1515
metrics-project: "stream-chat-android-metrics"
1616
secrets:
1717
BUILD_CACHE_AWS_REGION: ${{ secrets.BUILD_CACHE_AWS_REGION }}

.github/workflows/sdk-size-updates.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
update-sdk-sizes:
1616
uses: GetStream/stream-build-conventions-android/.github/workflows/sdk-size-updates.yml@v0.9.0
1717
with:
18-
modules: "stream-chat-android-client stream-chat-android-offline stream-chat-android-ui-components stream-chat-android-compose"
18+
modules: "stream-chat-android-client stream-chat-android-ui-components stream-chat-android-compose"
1919
metrics-project: "stream-chat-android-metrics"
2020
secrets:
2121
GITHUB_PAT: ${{ secrets.STREAM_PUBLIC_BOT_TOKEN }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
*.iml
2+
.planning/
23
.composite
34
buildSrc/build
45
.gradle

AGENTS.md

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,26 @@ This project delivers **Stream Chat Android**, a modular SDK spanning low-level
1616

1717
## Project structure
1818
- `stream-chat-android-client/` – core API client, REST/WebSocket, plugin hooks
19-
- `stream-chat-android-offline/` – persistence, sync, caching, retry workers
20-
- `stream-chat-android-state/` – state container shared by UI layers
2119
- `stream-chat-android-ui-common/` – theming, assets, shared UI helpers
2220
- `stream-chat-android-compose/` & `stream-chat-android-ui-components/` – Compose and XML UI kits
2321
- `*-sample/`, `stream-chat-android-ui-uitests/`, `stream-chat-android-test/` – samples, integration, and shared test harnesses
2422
- `buildSrc/`, `config/`, `scripts/`, `fastlane/`, `metrics/` – build logic, lint configs, automation, release metrics, CI helpers
2523

26-
> Modules are published; avoid leaking internal types across boundaries without coordinating version policy and changelog updates.
24+
> Modules are published; avoid leaking internal types across boundaries without coordinating version policy.
2725
2826
## Build, test, and validation
29-
- Format/licence: `./gradlew spotlessApply`
27+
- Format/licence: `./gradlew spotlessApply` (auto-fix locally; CI runs `spotlessCheck`)
3028
- Static analysis: `./gradlew detekt` or module-scoped `:module:detekt`
29+
- API dump: `./gradlew apiDump` — regenerate public API dumps for any touched modules. Never manually edit `*.api` files.
3130
- Unit tests: `./gradlew testDebugUnitTest` (or `:module:test` for non-Android modules)
3231
- UI snapshots: `./gradlew verifyPaparazziDebug` (Compose) / `./gradlew shotVerify` (Views)
3332
- Instrumented suites: `./gradlew connectedAndroidTest` or targeted `:stream-chat-android-ui-uitests:connectedCheck`
3433
- Full gate: `./gradlew check`
3534

36-
Prefer module-scoped tasks while iterating; PRs should pass `spotlessCheck`, `detekt`, and relevant unit/UI suites before review.
35+
Prefer module-scoped tasks while iterating; PRs should pass `spotlessCheck`, `detekt`, `apiCheck`, and relevant unit/UI suites before review.
3736

3837
## Coding principles
39-
- **API stability**: Public APIs are validated; favour additive changes and mark deprecations with clear migration paths (`DEPRECATIONS.md`).
38+
- **API stability**: Public APIs are validated; favour additive changes and mark deprecations with clear migration paths.
4039
- **Offline-first**: Respect sync contracts in offline/state modules—guard race conditions, idempotency, and background workers.
4140
- **UI parity**: Keep Compose and XML kits behaviourally aligned; update shared fixtures/tests when touching one side.
4241
- **Performance**: Maintain lazy flows, paging, and baseline profiles; avoid extra recompositions or heavy main-thread work.
@@ -45,7 +44,7 @@ Prefer module-scoped tasks while iterating; PRs should pass `spotlessCheck`, `de
4544

4645
## Style & conventions
4746
- Spotless-enforced Kotlin style (4 spaces, no wildcard imports, licence headers). Run `./gradlew spotlessCheck` in CI parity.
48-
- Compose components follow noun-based naming (`MessageList`, `ChannelListHeader`); previews use `@StreamPreview` helpers.
47+
- Compose components follow noun-based naming (`MessageList`, `ChannelListHeader`).
4948
- Use `@OptIn` annotations explicitly; avoid suppressions unless documented.
5049
- Backtick test names (for example: ``fun `message list filters muted channels`()``) for readability; keep helper extensions private/internal.
5150
- Document public APIs with KDoc, including thread expectations and state notes.
@@ -59,7 +58,7 @@ Prefer module-scoped tasks while iterating; PRs should pass `spotlessCheck`, `de
5958

6059
## Documentation & comments
6160
- Update module README, `docs/`, or API docs when altering setup, themes, or sample flows.
62-
- Log deprecations or behavioural shifts in `CHANGELOG.md` and `DEPRECATIONS.md`.
61+
- Log deprecations or behavioural shifts in release notes via appropriate PR labels.
6362
- Keep inline comments focused on intent (why), not mechanics; prefer KDoc for public APIs.
6463

6564
## Security & configuration
@@ -68,7 +67,7 @@ Prefer module-scoped tasks while iterating; PRs should pass `spotlessCheck`, `de
6867
- Sanitise logs and analytics payloads; follow `SECURITY.md` for vulnerability handling.
6968

7069
## PR & release hygiene
71-
- Target `develop`; main mirrors released artifacts. Sync with release owners before touching versioning, publishing, or changelog scripts.
70+
- Target `develop`; main mirrors released artifacts. Sync with release owners before touching versioning or publishing scripts.
7271
- Keep commits imperative (`compose: Prevent duplicate typing indicators`) and scoped.
7372
- Include test evidence in PR descriptions: Gradle task output, screenshots/screencasts for UI changes.
7473
- Run `assemble`, relevant tests, and lint tasks locally before pushing. Update documentation alongside feature toggles.
@@ -78,7 +77,7 @@ Prefer module-scoped tasks while iterating; PRs should pass `spotlessCheck`, `de
7877
- [ ] Maintain binary/API compatibility; document any intentional breakage.
7978
- [ ] Honour offline/state invariants—cover edge cases like retries, reconnections, and message dedupe.
8079
- [ ] Keep Compose/XML parity when modifying shared UI behaviour.
81-
- [ ] Run Spotless and Detekt before finishing.
80+
- [ ] Run Spotless, Detekt, and `apiDump` before finishing.
8281
- [ ] Add/refresh unit, UI, or snapshot tests for new behaviour.
83-
- [ ] Update changelog/deprecation docs for user-visible changes.
82+
- [ ] Label PRs with appropriate release categories (e.g. `pr:breaking-change`) for user-visible changes.
8483
- [ ] Scrub logs/configs for secrets before committing.

0 commit comments

Comments
 (0)