Skip to content

Commit 396fcca

Browse files
committed
Merge remote-tracking branch 'origin/master' into v10.0.0
# Conflicts: # packages/stream_chat_flutter/CHANGELOG.md
2 parents 31b2809 + 7729fcf commit 396fcca

File tree

34 files changed

+529
-96
lines changed

34 files changed

+529
-96
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Package Analysis
2+
3+
runs:
4+
using: "composite"
5+
steps:
6+
- name: "Install Tools"
7+
shell: bash
8+
run: flutter pub global activate melos
9+
10+
- name: "Bootstrap Workspace"
11+
shell: bash
12+
run: melos bootstrap --verbose
13+
14+
# Only analyze lib/; non-client code doesn't need to work on
15+
# all supported legacy version.
16+
- name: "Stream Chat Analyze"
17+
shell: bash
18+
run: cd packages/stream_chat/lib && dart analyze --fatal-infos . && cd .. && flutter test --exclude-tags golden
19+
20+
- name: "Stream Chat Flutter Core Analyze"
21+
shell: bash
22+
run: cd packages/stream_chat_flutter_core/lib && dart analyze --fatal-infos . && cd .. && flutter test --exclude-tags golden
23+
24+
- name: "Stream Chat Flutter Analyze"
25+
shell: bash
26+
run: cd packages/stream_chat_flutter/lib && dart analyze --fatal-infos . && cd .. && flutter test --exclude-tags golden
27+
28+
- name: "Stream Chat Persistence Analyze"
29+
shell: bash
30+
run: cd packages/stream_chat_persistence/lib && dart analyze --fatal-infos . && cd .. && flutter test --exclude-tags golden
31+
32+
- name: "Stream Chat Localizations Analyze"
33+
shell: bash
34+
run: cd packages/stream_chat_localizations/lib && dart analyze --fatal-infos . && cd .. && flutter test --exclude-tags golden
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: beta_version_analyze
2+
3+
on:
4+
schedule:
5+
# Runs "At 02:00 every monday"
6+
- cron: '0 2 * * 1'
7+
workflow_dispatch:
8+
9+
jobs:
10+
# Does a sanity check on packages for the next beta version so we are not surprised by any breaking changes.
11+
analyze_beta_versions:
12+
timeout-minutes: 15
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: "Git Checkout"
16+
uses: actions/checkout@v4
17+
with:
18+
fetch-depth: 0
19+
20+
- name: "Install Flutter"
21+
uses: subosito/flutter-action@v2
22+
with:
23+
channel: beta
24+
cache: true
25+
cache-key: flutter-:os:-:channel:-:version:-:arch:-:hash:-${{ hashFiles('**/pubspec.lock') }}
26+
27+
- name: 📊 Analyze and test packages
28+
uses: ./.github/actions/package_analysis
29+
30+
slack:
31+
name: Slack Report
32+
runs-on: ubuntu-latest
33+
needs: [analyze_beta_versions]
34+
if: failure() && github.event_name == 'schedule'
35+
steps:
36+
- uses: 8398a7/action-slack@v3
37+
with:
38+
status: failure
39+
text: "<@U08BMRSM8G5> & <@U01EYU51M89>: The beta build for Flutter Chat failed. Please check the logs."
40+
job_name: "${{ github.workflow }}: ${{ github.job }}"
41+
fields: repo,commit,author,workflow
42+
env:
43+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_NIGHTLY_CHECKS }}

.github/workflows/distribute_external.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,18 +80,19 @@ jobs:
8080
bundler-cache: true
8181
working-directory: sample_app/android
8282

83-
- name: Setup Firebase Service Account'
83+
- name: Distribute to S3
8484
working-directory: sample_app/android
85-
run: echo "${{ secrets.SAMPLE_FIREBASE_UPLOAD_CREDENTIALS }}" | base64 --decode | jq > ./firebase-service-account.json
86-
87-
- name: Distribute to Firebase
88-
working-directory: sample_app/android
89-
run: bundle exec fastlane distribute_to_firebase
85+
env:
86+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
87+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
88+
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
89+
run: bundle exec fastlane distribute_to_s3
9090

9191
ios:
9292
needs: determine_platforms
9393
if: ${{ needs.determine_platforms.outputs.run_ios == 'true' }}
94-
runs-on: macos-15 # Testflight requires macOS 15 or later
94+
runs-on: macos-15 # Requires xcode 15 or later
95+
9596
steps:
9697
- name: Connect Bot
9798
uses: webfactory/ssh-agent@v0.9.1

.github/workflows/distribute_internal.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ jobs:
9999
ios:
100100
needs: determine_platforms
101101
if: ${{ needs.determine_platforms.outputs.run_ios == 'true' }}
102-
runs-on: macos-latest
102+
runs-on: macos-15 # Requires xcode 15 or later
103103
timeout-minutes: 30
104104
steps:
105105
- name: Connect Bot

.github/workflows/legacy_version_analyze.yml

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -47,25 +47,5 @@ jobs:
4747
cache: true
4848
cache-key: flutter-:os:-:channel:-:version:-:arch:-:hash:-${{ hashFiles('**/pubspec.lock') }}
4949

50-
- name: "Install Tools"
51-
run: flutter pub global activate melos
52-
53-
- name: "Bootstrap Workspace"
54-
run: melos bootstrap --verbose
55-
56-
# Only analyze lib/; non-client code doesn't need to work on
57-
# all supported legacy version.
58-
- name: "Stream Chat Analyze"
59-
run: cd packages/stream_chat/lib && dart analyze --fatal-infos .
60-
61-
- name: "Stream Chat Flutter Core Analyze"
62-
run: cd packages/stream_chat_flutter_core/lib && dart analyze --fatal-infos .
63-
64-
- name: "Stream Chat Flutter Analyze"
65-
run: cd packages/stream_chat_flutter/lib && dart analyze --fatal-infos .
66-
67-
- name: "Stream Chat Persistence Analyze"
68-
run: cd packages/stream_chat_persistence/lib && dart analyze --fatal-infos .
69-
70-
- name: "Stream Chat Localizations Analyze"
71-
run: cd packages/stream_chat_localizations/lib && dart analyze --fatal-infos .
50+
- name: 📊 Analyze and test packages
51+
uses: ./.github/actions/package_analysis

.github/workflows/release_publish.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: release_publish
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v[0-9]+.[0-9]+.[0-9]+' # tag-pattern for regular releases
7+
- 'v[0-9]+.[0-9]+.[0-9]+-*' # tag-pattern for pre-releases
8+
workflow_dispatch: # Allow manual triggering of the workflow
9+
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.ref }}
12+
cancel-in-progress: true
13+
14+
jobs:
15+
release:
16+
permissions:
17+
contents: write # Required to creating release
18+
id-token: write # Required for authentication using OIDC
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: 📚 Checkout branch
22+
uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 0
25+
token: ${{ secrets.BOT_GITHUB_API_TOKEN }}
26+
27+
# Set up the Dart SDK and provision the OIDC token used for publishing.
28+
- name: 🎯 Setup Dart
29+
uses: dart-lang/setup-dart@v1
30+
31+
- name: 🐦 Install Flutter
32+
uses: subosito/flutter-action@v2
33+
34+
- name: 📦 Install Tools
35+
run: flutter pub global activate melos
36+
37+
- name: 🔧 Bootstrap Workspace
38+
run: melos bootstrap --verbose
39+
40+
- name: 🌵 Dry Run
41+
run: melos run lint:pub
42+
43+
- name: 📢 Release to pub.dev
44+
run: melos run release:pub
45+
46+
- name: 🏷️ Extract Version Info
47+
id: extract_version
48+
shell: bash
49+
run: |
50+
set -euo pipefail
51+
52+
tag_name="${{ github.ref_name }}"
53+
echo "📦 Tag: $tag_name"
54+
55+
# Check if this is a pre-release (contains hyphen after version)
56+
is_prerelease=$([[ $tag_name == *-* ]] && echo true || echo false)
57+
echo "ℹ️ Pre-release: $is_prerelease"
58+
59+
echo "tag=$tag_name" >> "$GITHUB_OUTPUT"
60+
echo "prerelease=$is_prerelease" >> "$GITHUB_OUTPUT"
61+
62+
- name: 🚀 Create GitHub Release
63+
uses: softprops/action-gh-release@v2
64+
with:
65+
generate_release_notes: true
66+
tag_name: ${{ steps.extract_version.outputs.tag }}
67+
prerelease: ${{ steps.extract_version.outputs.prerelease }}
68+
token: ${{ secrets.BOT_GITHUB_API_TOKEN }}

.github/workflows/release_tag.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: release_tag
2+
3+
on:
4+
push:
5+
branches: [master]
6+
7+
concurrency:
8+
group: ${{ github.workflow }}-${{ github.ref }}
9+
cancel-in-progress: true
10+
11+
jobs:
12+
release:
13+
# Only run this job for commits that indicate a release
14+
if: "${{ startsWith(github.event.head_commit.message, 'chore(repo): release') }}"
15+
runs-on: ubuntu-latest
16+
permissions:
17+
contents: write # Required to create and push tags
18+
19+
steps:
20+
- name: 📚 Checkout branch
21+
uses: actions/checkout@v4
22+
with:
23+
fetch-depth: 0
24+
token: ${{ secrets.BOT_GITHUB_API_TOKEN }}
25+
26+
- name: 🏷️ Extract Version Tag
27+
id: extract_tag
28+
shell: bash
29+
run: |
30+
set -euo pipefail
31+
32+
commit_msg="${{ github.event.head_commit.message }}"
33+
echo "📦 Commit message: $commit_msg"
34+
35+
# Match vX.Y.Z or vX.Y.Z-suffix (case-insensitive)
36+
version_regex='[vV][0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.\-]+)?'
37+
38+
if [[ "$commit_msg" =~ $version_regex ]]; then
39+
version="${BASH_REMATCH[0]}"
40+
echo "✅ Found version tag: $version"
41+
echo "tag=$version" >> "$GITHUB_OUTPUT"
42+
else
43+
echo "::error ::❌ No SemVer tag found in commit message."
44+
echo "::error ::Expected something like: 'chore(repo): release v1.2.3[-beta]'"
45+
exit 1
46+
fi
47+
48+
- name: 🚀 Create and Push Tag
49+
shell: bash
50+
run: |
51+
git config user.name "Stream SDK Bot"
52+
git config user.email "60655709+Stream-SDK-Bot@users.noreply.github.com"
53+
54+
echo "Creating and pushing tag: ${{ steps.extract_tag.outputs.tag }}"
55+
git tag ${{ steps.extract_tag.outputs.tag }}
56+
git push origin ${{ steps.extract_tag.outputs.tag }}

.github/workflows/stream_flutter_workflow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ jobs:
153153
working-directory: sample_app/android
154154
build-command: bundle exec fastlane build_apk
155155
- platform: ios
156-
os: macos-latest
156+
os: macos-15 # Requires xcode 15 or later
157157
working-directory: sample_app/ios
158158
build-command: bundle exec fastlane build_ipa no_codesign:true
159159

melos.yaml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,11 @@ command:
8080
share_plus: ^11.0.0
8181
shimmer: ^3.0.0
8282
sqlite3_flutter_libs: ^0.5.26
83-
stream_chat: ^9.10.0
84-
stream_chat_flutter: ^9.10.0
85-
stream_chat_flutter_core: ^9.10.0
86-
stream_chat_localizations: ^9.10.0
87-
stream_chat_persistence: ^9.10.0
83+
stream_chat: ^9.11.0
84+
stream_chat_flutter: ^9.11.0
85+
stream_chat_flutter_core: ^9.11.0
86+
stream_chat_localizations: ^9.11.0
87+
stream_chat_persistence: ^9.11.0
8888
streaming_shared_preferences: ^2.0.0
8989
svg_icon_widget: ^0.0.1
9090
synchronized: ^3.1.0+1
@@ -149,12 +149,8 @@ scripts:
149149
- Note: you can also rely on your IDEs Dart Analysis / Issues window.
150150
151151
lint:pub:
152-
run: |
153-
melos exec -c 5 --no-private --ignore="*example*" -- \
154-
flutter pub publish --dry-run
155-
description: |
156-
Run `pub publish --dry-run` in all packages.
157-
- Note: you can also rely on your IDEs Dart Analysis / Issues window.
152+
run: melos exec -c 1 --no-published --no-private --order-dependents -- "flutter pub publish -n"
153+
description: Dry run `pub publish` in all packages.
158154

159155
generate:all:
160156
run: melos run generate:dart && melos run generate:flutter
@@ -206,3 +202,7 @@ scripts:
206202
description: Removes all the ignored files from the coverage report.
207203
packageFilters:
208204
dirExists: coverage
205+
206+
release:pub:
207+
run: melos exec -c 1 --no-published --no-private --order-dependents -- "flutter pub publish -f"
208+
description: Publish all packages to pub.dev.

packages/stream_chat/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Upcoming
1+
## 9.11.0
22

33
✅ Added
44

0 commit comments

Comments
 (0)