From b17f573cfcab8c19d41602b51560b40eb20dc71a Mon Sep 17 00:00:00 2001 From: Ismail Carlik Date: Mon, 25 May 2026 10:22:30 +0300 Subject: [PATCH 1/2] Feature: Search in app list by bundle identifier. --- .../Sources/Apps/UIKit/SourceAppsTableRepresentableView.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Feather/Views/Sources/Apps/UIKit/SourceAppsTableRepresentableView.swift b/Feather/Views/Sources/Apps/UIKit/SourceAppsTableRepresentableView.swift index bccde7482..d9fa8add3 100644 --- a/Feather/Views/Sources/Apps/UIKit/SourceAppsTableRepresentableView.swift +++ b/Feather/Views/Sources/Apps/UIKit/SourceAppsTableRepresentableView.swift @@ -134,6 +134,7 @@ extension SourceAppsTableRepresentableView { class Coordinator: NSObject, UITabl private func _calculateSortedApps() -> [(source: ASRepository, app: ASRepository.App)] { let filtered = _allAppsWithSource.filter { searchText.isEmpty || + ($0.app.id?.localizedCaseInsensitiveContains(searchText) ?? false) || ($0.app.name?.localizedCaseInsensitiveContains(searchText) ?? false) || ($0.app.description?.localizedCaseInsensitiveContains(searchText) ?? false) || ($0.app.subtitle?.localizedCaseInsensitiveContains(searchText) ?? false) || From 5b64ef9ab0df6b297b20a5ba2fd4dd9587de4152 Mon Sep 17 00:00:00 2001 From: Ismail Carlik Date: Mon, 25 May 2026 10:33:09 +0300 Subject: [PATCH 2/2] The search logic was changed at the suggestion of CoPilot. --- .../Sources/Apps/UIKit/SourceAppsTableRepresentableView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Feather/Views/Sources/Apps/UIKit/SourceAppsTableRepresentableView.swift b/Feather/Views/Sources/Apps/UIKit/SourceAppsTableRepresentableView.swift index d9fa8add3..631655d1f 100644 --- a/Feather/Views/Sources/Apps/UIKit/SourceAppsTableRepresentableView.swift +++ b/Feather/Views/Sources/Apps/UIKit/SourceAppsTableRepresentableView.swift @@ -134,7 +134,7 @@ extension SourceAppsTableRepresentableView { class Coordinator: NSObject, UITabl private func _calculateSortedApps() -> [(source: ASRepository, app: ASRepository.App)] { let filtered = _allAppsWithSource.filter { searchText.isEmpty || - ($0.app.id?.localizedCaseInsensitiveContains(searchText) ?? false) || + ($0.app.id?.range(of: searchText, options: [.caseInsensitive, .diacriticInsensitive], locale: Locale(identifier: "en_US")) != nil) || ($0.app.name?.localizedCaseInsensitiveContains(searchText) ?? false) || ($0.app.description?.localizedCaseInsensitiveContains(searchText) ?? false) || ($0.app.subtitle?.localizedCaseInsensitiveContains(searchText) ?? false) ||