From b2b9c6ab1271ba80277e6f8a9de33bf1fe756f80 Mon Sep 17 00:00:00 2001 From: Stream Bot Date: Tue, 10 Feb 2026 11:01:53 +0000 Subject: [PATCH 01/10] Update release version to snapshot --- Sources/StreamFeeds/Utils/SystemEnvironment+Version.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/StreamFeeds/Utils/SystemEnvironment+Version.swift b/Sources/StreamFeeds/Utils/SystemEnvironment+Version.swift index a70aa64..acc6826 100644 --- a/Sources/StreamFeeds/Utils/SystemEnvironment+Version.swift +++ b/Sources/StreamFeeds/Utils/SystemEnvironment+Version.swift @@ -6,5 +6,5 @@ import Foundation extension SystemEnvironment { /// A Stream Feeds version. - public static let version: String = "0.5.2" + public static let version: String = "0.6.0-SNAPSHOT" } From 266828dced8f08852cfb4cf274a2296ccf519a55 Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Fri, 13 Feb 2026 14:29:29 +0000 Subject: [PATCH 02/10] [CI] Bump Xcode to 26.2 (#62) --- .github/workflows/cron-checks.yml | 6 +++--- .github/workflows/smoke-checks.yml | 2 +- fastlane/Fastfile | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/cron-checks.yml b/.github/workflows/cron-checks.yml index eeaac6f..ec970da 100644 --- a/.github/workflows/cron-checks.yml +++ b/.github/workflows/cron-checks.yml @@ -21,7 +21,7 @@ jobs: strategy: matrix: include: - - ios: "26.1" + - ios: "26.2" device: "iPhone 17 Pro" setup_runtime: false - ios: "18.5" @@ -39,7 +39,7 @@ jobs: fail-fast: false runs-on: macos-15 env: - XCODE_VERSION: "26.1.1" + XCODE_VERSION: "26.2" IOS_SIMULATOR_DEVICE: "${{ matrix.device }} (${{ matrix.ios }})" steps: - uses: actions/checkout@v4.1.1 @@ -74,7 +74,7 @@ jobs: strategy: matrix: include: - - xcode: 26.1.1 # swift 6.2 + - xcode: 26.2 # swift 6.2 os: macos-15 - xcode: 16.4 # swift 6.1 os: macos-15 diff --git a/.github/workflows/smoke-checks.yml b/.github/workflows/smoke-checks.yml index a5de805..412477c 100644 --- a/.github/workflows/smoke-checks.yml +++ b/.github/workflows/smoke-checks.yml @@ -20,7 +20,7 @@ concurrency: env: HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI - IOS_SIMULATOR_DEVICE: "iPhone 17 Pro (26.1)" + IOS_SIMULATOR_DEVICE: "iPhone 17 Pro (26.2)" GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_PR_NUM: ${{ github.event.pull_request.number }} diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 2ce6f8c..1c69e89 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -6,7 +6,7 @@ require 'json' require 'net/http' import 'Sonarfile' -xcode_version = ENV['XCODE_VERSION'] || '26.1.1' +xcode_version = ENV['XCODE_VERSION'] || '26.2' xcode_project = 'StreamFeeds.xcodeproj' sdk_names = ['StreamFeeds'] github_repo = ENV['GITHUB_REPOSITORY'] || 'GetStream/stream-feeds-swift' @@ -247,12 +247,12 @@ end lane :sources_matrix do { - llc: ['Sources/StreamFeeds', 'Tests/StreamFeedsTests', 'Tests/Shared', xcode_project], - sample_apps: ['Sources', 'DemoApp', xcode_project], - integration: ['Sources', 'Integration', xcode_project], - ruby: ['fastlane', 'Gemfile', 'Gemfile.lock'], - size: ['Sources', xcode_project], - public_interface: ['Sources'] + llc: ['Sources/StreamFeeds', 'Tests/StreamFeedsTests', 'Tests/Shared', '.github/workflows/smoke-checks.yml', xcode_project], + sample_apps: ['Sources', 'DemoApp', '.github/workflows/smoke-checks.yml', xcode_project], + integration: ['Sources', 'Integration', '.github/workflows/smoke-checks.yml', xcode_project], + ruby: ['fastlane', 'Gemfile', 'Gemfile.lock', '.github/workflows/smoke-checks.yml'], + size: ['Sources', '.github/workflows/smoke-checks.yml', xcode_project], + public_interface: ['Sources', '.github/workflows/smoke-checks.yml'] } end From bc69e483b144500e27c530659e4a8297f6fd7b6e Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Tue, 24 Feb 2026 15:10:11 +0000 Subject: [PATCH 03/10] [CI] Fix iOS 15 setup (#63) --- .github/workflows/cron-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cron-checks.yml b/.github/workflows/cron-checks.yml index ec970da..2b6e78f 100644 --- a/.github/workflows/cron-checks.yml +++ b/.github/workflows/cron-checks.yml @@ -33,7 +33,7 @@ jobs: - ios: "16.4" device: "iPhone 14 Pro" setup_runtime: true - - ios: "15.5" + - ios: "15.4" device: "iPhone 13 Pro" setup_runtime: true fail-fast: false From 07531b8c31548bbedc7ca5ed775870692a420c70 Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Mon, 20 Apr 2026 09:59:10 +0100 Subject: [PATCH 04/10] Update AGENTS.md (#59) --- AGENTS.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 7ed5382..59d108c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -25,7 +25,10 @@ DemoApp/ # The demo app for testing Use the closest folder’s conventions when editing. Query actual target/product names from Package.swift before building. -Local setup (SPM) +### New files & target membership + β€’ When creating new source or resource files, add them to the correct Xcode target(s). Update the project (e.g. project.pbxproj) so each new file is included in the appropriate target's "Compile Sources" (or "Copy Bundle Resources" for assets). Match the target(s) used by sibling files in the same directory (e.g. Sources/StreamFeeds/ β†’ StreamFeeds; Tests/StreamFeedsTests/ β†’ StreamFeedsTests). Omitting target membership will cause build failures or unused files. + +### Local setup (SPM) 1. Clone the repository and open it in Xcode (root contains Package.swift). 2. Resolve packages. 3. Choose an iOS Simulator (e.g., iPhone 15) and Build. From 16f1842a503899e8e86ca583b19b896100c2b062 Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Thu, 23 Apr 2026 11:16:01 +0100 Subject: [PATCH 05/10] [CI] Introduce guard job (#64) --- .github/actions/ci-guard/action.yml | 23 +++++++++++++++++++++++ .github/workflows/sdk-size-metrics.yml | 9 +++++++-- .github/workflows/smoke-checks.yml | 13 +++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 .github/actions/ci-guard/action.yml diff --git a/.github/actions/ci-guard/action.yml b/.github/actions/ci-guard/action.yml new file mode 100644 index 0000000..70a6473 --- /dev/null +++ b/.github/actions/ci-guard/action.yml @@ -0,0 +1,23 @@ +name: Guard +description: > + Loads the current PR title (not the stale event payload) and cancels the workflow when it + contains skip-ci, case-insensitive. No-op when the event is not pull_request. +inputs: + github_token: + description: Token with actions:write and pull-requests:read + required: true +runs: + using: composite + steps: + - run: | + set -euo pipefail + if [ "${{ github.event_name }}" != "pull_request" ]; then + exit 0 + fi + PR_TITLE=$(gh pr view ${{ github.event.pull_request.number }} --repo "${{ github.repository }}" --json title --jq .title) + if printf '%s' "$PR_TITLE" | grep -Fqi 'skip-ci'; then + gh run cancel "${{ github.run_id }}" --repo "${{ github.repository }}" + fi + shell: bash + env: + GH_TOKEN: ${{ inputs.github_token }} diff --git a/.github/workflows/sdk-size-metrics.yml b/.github/workflows/sdk-size-metrics.yml index e71245a..ec7e2d3 100644 --- a/.github/workflows/sdk-size-metrics.yml +++ b/.github/workflows/sdk-size-metrics.yml @@ -16,17 +16,22 @@ jobs: sdk_size: name: Metrics runs-on: macos-15 + if: github.event_name != 'pull_request' || github.event.pull_request.draft == false env: GITHUB_TOKEN: '${{ secrets.CI_BOT_GITHUB_TOKEN }}' GITHUB_PR_NUM: ${{ github.event.pull_request.number }} steps: + - uses: actions/checkout@v3.1.0 + + - uses: ./.github/actions/ci-guard + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + - name: Connect Bot uses: webfactory/ssh-agent@v0.7.0 with: ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }} - - uses: actions/checkout@v3.1.0 - - uses: ./.github/actions/bootstrap - name: Run General SDK Size Metrics diff --git a/.github/workflows/smoke-checks.yml b/.github/workflows/smoke-checks.yml index 412477c..9869b34 100644 --- a/.github/workflows/smoke-checks.yml +++ b/.github/workflows/smoke-checks.yml @@ -25,9 +25,19 @@ env: GITHUB_PR_NUM: ${{ github.event.pull_request.number }} jobs: + guard: + name: Guard + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4.1.1 + - uses: ./.github/actions/ci-guard + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + test-llc: name: Test LLC runs-on: macos-15 + needs: guard steps: - uses: actions/checkout@v4.1.1 with: @@ -74,6 +84,7 @@ jobs: automated-code-review: name: Automated Code Review runs-on: macos-15 + needs: guard env: XCODE_VERSION: "16.0" steps: @@ -89,6 +100,7 @@ jobs: build-apps: name: Build Demo App runs-on: macos-15 + needs: guard steps: - uses: actions/checkout@v4.1.1 - uses: ./.github/actions/ruby-cache @@ -99,6 +111,7 @@ jobs: build-spm-integration: name: Build SPM Integration App runs-on: macos-15 + needs: guard steps: - uses: actions/checkout@v4.1.1 - uses: ./.github/actions/ruby-cache From 8a13eb503c128ee8edf5944933230bba81277dfa Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Mon, 27 Apr 2026 14:04:34 +0100 Subject: [PATCH 06/10] Remove iOS 15 from CI checks (#65) --- .github/workflows/cron-checks.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/cron-checks.yml b/.github/workflows/cron-checks.yml index 2b6e78f..d66bcb6 100644 --- a/.github/workflows/cron-checks.yml +++ b/.github/workflows/cron-checks.yml @@ -33,9 +33,6 @@ jobs: - ios: "16.4" device: "iPhone 14 Pro" setup_runtime: true - - ios: "15.4" - device: "iPhone 13 Pro" - setup_runtime: true fail-fast: false runs-on: macos-15 env: From d16f4b744394a8c9e299b897a22c69def031922c Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Tue, 28 Apr 2026 18:45:08 +0100 Subject: [PATCH 07/10] Bump StreamCore dependency version (#66) --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 77faff1..f01d19e 100644 --- a/Package.swift +++ b/Package.swift @@ -14,7 +14,7 @@ let package = Package( ) ], dependencies: [ - .package(url: "https://github.com/GetStream/stream-core-swift.git", exact: "0.6.2") + .package(url: "https://github.com/GetStream/stream-core-swift.git", exact: "0.6.3") ], targets: [ .target( From 353db958deea06e9564a288c56a37cab3562cdbc Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Tue, 19 May 2026 11:25:36 +0100 Subject: [PATCH 08/10] [CI] Unlock StreamCore version in Package.swift (#67) --- Package.swift | 2 +- StreamFeeds.xcodeproj/project.pbxproj | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Package.swift b/Package.swift index f01d19e..9c203c1 100644 --- a/Package.swift +++ b/Package.swift @@ -14,7 +14,7 @@ let package = Package( ) ], dependencies: [ - .package(url: "https://github.com/GetStream/stream-core-swift.git", exact: "0.6.3") + .package(url: "https://github.com/GetStream/stream-core-swift.git", from: "0.6.3") ], targets: [ .target( diff --git a/StreamFeeds.xcodeproj/project.pbxproj b/StreamFeeds.xcodeproj/project.pbxproj index bb3da35..b705a18 100644 --- a/StreamFeeds.xcodeproj/project.pbxproj +++ b/StreamFeeds.xcodeproj/project.pbxproj @@ -863,8 +863,8 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/GetStream/stream-core-swift.git"; requirement = { - kind = exactVersion; - version = 0.6.2; + kind = upToNextMajorVersion; + minimumVersion = 0.6.3; }; }; /* End XCRemoteSwiftPackageReference section */ From 966cbe291d2727eac0eb750908206dbb3442e536 Mon Sep 17 00:00:00 2001 From: Toomas Vahter Date: Wed, 10 Jun 2026 15:59:29 +0300 Subject: [PATCH 09/10] Fix Sendable errors in Sort when building with Xcode 27 (#68) --- CHANGELOG.md | 1 + Package.swift | 2 +- .../StreamFeeds/StateLayer/PaginatedLists/ActivitiesQuery.swift | 2 +- .../StateLayer/PaginatedLists/ActivityReactionsQuery.swift | 2 +- .../StateLayer/PaginatedLists/BookmarkFoldersQuery.swift | 2 +- .../StreamFeeds/StateLayer/PaginatedLists/BookmarksQuery.swift | 2 +- .../StateLayer/PaginatedLists/CommentReactionsQuery.swift | 2 +- Sources/StreamFeeds/StateLayer/PaginatedLists/FeedsQuery.swift | 2 +- .../StreamFeeds/StateLayer/PaginatedLists/FollowsQuery.swift | 2 +- .../StreamFeeds/StateLayer/PaginatedLists/MembersQuery.swift | 2 +- .../StateLayer/PaginatedLists/ModerationConfigsQuery.swift | 2 +- .../StreamFeeds/StateLayer/PaginatedLists/PollVotesQuery.swift | 2 +- Sources/StreamFeeds/StateLayer/PaginatedLists/PollsQuery.swift | 2 +- StreamFeeds.xcodeproj/project.pbxproj | 2 +- Tests/StreamFeedsTests/Extensions/ArrayExtensions_Tests.swift | 2 +- 15 files changed, 15 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 282fbce..a56da0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). # Upcoming ### πŸ”„ Changed +- Update StreamCore to 0.7.0, which fixes `Sendable` errors when building with Xcode 27 [#68](https://github.com/GetStream/stream-feeds-swift/pull/68) # [0.5.2](https://github.com/GetStream/stream-feeds-swift/releases/tag/0.5.2) _February 09, 2026_ diff --git a/Package.swift b/Package.swift index 9c203c1..8bfae80 100644 --- a/Package.swift +++ b/Package.swift @@ -14,7 +14,7 @@ let package = Package( ) ], dependencies: [ - .package(url: "https://github.com/GetStream/stream-core-swift.git", from: "0.6.3") + .package(url: "https://github.com/GetStream/stream-core-swift.git", from: "0.7.0") ], targets: [ .target( diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/ActivitiesQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/ActivitiesQuery.swift index a2743d3..2e505e5 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/ActivitiesQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/ActivitiesQuery.swift @@ -220,7 +220,7 @@ public struct ActivitiesSortField: SortField { /// - Parameters: /// - rawValue: The string value representing the field name in the API. /// - localValue: A closure that extracts the comparable value from the model. - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/ActivityReactionsQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/ActivityReactionsQuery.swift index 36eb445..28e24e5 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/ActivityReactionsQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/ActivityReactionsQuery.swift @@ -157,7 +157,7 @@ public struct ActivityReactionsSortField: SortField { /// - Parameters: /// - rawValue: The string value representing the field name in the API. /// - localValue: A closure that extracts the comparable value from the model. - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/BookmarkFoldersQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/BookmarkFoldersQuery.swift index e1a0113..460c4f0 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/BookmarkFoldersQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/BookmarkFoldersQuery.swift @@ -161,7 +161,7 @@ public struct BookmarkFoldersSortField: SortField { /// - Parameters: /// - rawValue: The string value representing the field name in the API. /// - localValue: A closure that extracts the comparable value from the model. - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/BookmarksQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/BookmarksQuery.swift index 319b51c..a6e9d3f 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/BookmarksQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/BookmarksQuery.swift @@ -166,7 +166,7 @@ public struct BookmarksSortField: SortField { /// - Parameters: /// - rawValue: The string value representing the field name in the API. /// - localValue: A closure that extracts the comparable value from the model. - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/CommentReactionsQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/CommentReactionsQuery.swift index 6048c72..8ab1128 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/CommentReactionsQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/CommentReactionsQuery.swift @@ -164,7 +164,7 @@ public struct CommentReactionsSortField: SortField { /// - Parameters: /// - rawValue: The string value representing the field name in the API. /// - localValue: A closure that extracts the comparable value from the model. - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/FeedsQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/FeedsQuery.swift index 572dfae..8dcb5ed 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/FeedsQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/FeedsQuery.swift @@ -256,7 +256,7 @@ public struct FeedsSortField: SortField { /// The string value representing the field name in the API for remote sorting. public let rawValue: String - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/FollowsQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/FollowsQuery.swift index 0be07bb..96c2bc9 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/FollowsQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/FollowsQuery.swift @@ -156,7 +156,7 @@ public struct FollowsSortField: SortField { /// - Parameters: /// - rawValue: The string value representing the field name in the API. /// - localValue: A closure that extracts the comparable value from the model. - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/MembersQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/MembersQuery.swift index e00cb10..e71e955 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/MembersQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/MembersQuery.swift @@ -175,7 +175,7 @@ public struct MembersSortField: SortField { /// - Parameters: /// - rawValue: The string value representing the field name in the API. /// - localValue: A closure that extracts the comparable value from the model. - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/ModerationConfigsQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/ModerationConfigsQuery.swift index 781b687..bc7f184 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/ModerationConfigsQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/ModerationConfigsQuery.swift @@ -177,7 +177,7 @@ public struct ModerationConfigsSortField: SortField { /// - Parameters: /// - rawValue: The string value representing the field name in the API. /// - localValue: A closure that extracts the comparable value from the model. - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/PollVotesQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/PollVotesQuery.swift index cd57164..84ae3a7 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/PollVotesQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/PollVotesQuery.swift @@ -187,7 +187,7 @@ public struct PollVotesSortField: SortField { /// - Parameters: /// - rawValue: The string value representing the field name in the API. /// - localValue: A closure that extracts the comparable value from the model. - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/Sources/StreamFeeds/StateLayer/PaginatedLists/PollsQuery.swift b/Sources/StreamFeeds/StateLayer/PaginatedLists/PollsQuery.swift index 37b9ad2..ff43463 100644 --- a/Sources/StreamFeeds/StateLayer/PaginatedLists/PollsQuery.swift +++ b/Sources/StreamFeeds/StateLayer/PaginatedLists/PollsQuery.swift @@ -197,7 +197,7 @@ public struct PollsSortField: SortField { /// - Parameters: /// - rawValue: The string value representing the field name in the API. /// - localValue: A closure that extracts the comparable value from the model. - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } diff --git a/StreamFeeds.xcodeproj/project.pbxproj b/StreamFeeds.xcodeproj/project.pbxproj index b705a18..b6f08a2 100644 --- a/StreamFeeds.xcodeproj/project.pbxproj +++ b/StreamFeeds.xcodeproj/project.pbxproj @@ -864,7 +864,7 @@ repositoryURL = "https://github.com/GetStream/stream-core-swift.git"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 0.6.3; + minimumVersion = 0.7.0; }; }; /* End XCRemoteSwiftPackageReference section */ diff --git a/Tests/StreamFeedsTests/Extensions/ArrayExtensions_Tests.swift b/Tests/StreamFeedsTests/Extensions/ArrayExtensions_Tests.swift index ed7e517..1aaf9ea 100644 --- a/Tests/StreamFeedsTests/Extensions/ArrayExtensions_Tests.swift +++ b/Tests/StreamFeedsTests/Extensions/ArrayExtensions_Tests.swift @@ -23,7 +23,7 @@ struct ArrayExtensions_Tests { public let comparator: AnySortComparator public let rawValue: String - public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable { + public init(_ rawValue: String, localValue: @escaping @Sendable (Model) -> Value) where Value: Comparable & Sendable { comparator = AnySortComparator(localValue: localValue) self.rawValue = rawValue } From aca75e93a946672f0285be63256a3f903be0ec75 Mon Sep 17 00:00:00 2001 From: Stream Bot Date: Thu, 11 Jun 2026 06:49:42 +0000 Subject: [PATCH 10/10] Bump 0.5.3 --- CHANGELOG.md | 5 +++++ Sources/StreamFeeds/Info.plist | 2 +- Sources/StreamFeeds/Utils/SystemEnvironment+Version.swift | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a56da0f..a506882 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). # Upcoming +### πŸ”„ Changed + +# [0.5.3](https://github.com/GetStream/stream-feeds-swift/releases/tag/0.5.3) +_June 11, 2026_ + ### πŸ”„ Changed - Update StreamCore to 0.7.0, which fixes `Sendable` errors when building with Xcode 27 [#68](https://github.com/GetStream/stream-feeds-swift/pull/68) diff --git a/Sources/StreamFeeds/Info.plist b/Sources/StreamFeeds/Info.plist index cb2edbe..80fb0b9 100644 --- a/Sources/StreamFeeds/Info.plist +++ b/Sources/StreamFeeds/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 0.5.2 + 0.5.3 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/Sources/StreamFeeds/Utils/SystemEnvironment+Version.swift b/Sources/StreamFeeds/Utils/SystemEnvironment+Version.swift index acc6826..40b4209 100644 --- a/Sources/StreamFeeds/Utils/SystemEnvironment+Version.swift +++ b/Sources/StreamFeeds/Utils/SystemEnvironment+Version.swift @@ -6,5 +6,5 @@ import Foundation extension SystemEnvironment { /// A Stream Feeds version. - public static let version: String = "0.6.0-SNAPSHOT" + public static let version: String = "0.5.3" }