From 4f7e4b0c360a521686199bf0fb8b2b2758eae7b5 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Fri, 9 Jan 2026 14:12:03 +0100 Subject: [PATCH 1/6] Fix CallView when the friend has only a phone number --- Linphone/Contacts/ContactsManager.swift | 9 +++++---- Linphone/GeneratedGit.swift | 2 +- Linphone/UI/Call/ViewModel/CallViewModel.swift | 4 +++- Linphone/UI/Main/ContentView.swift | 2 ++ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Linphone/Contacts/ContactsManager.swift b/Linphone/Contacts/ContactsManager.swift index 1338effcc..adda9f5ee 100644 --- a/Linphone/Contacts/ContactsManager.swift +++ b/Linphone/Contacts/ContactsManager.swift @@ -424,18 +424,19 @@ final class ContactsManager: ObservableObject { var friend: Friend? if let friendList = self.friendList { - friend = friendList.friends.first(where: { $0.addresses.contains(where: { $0.asStringUriOnly() == sipUri }) }) + friend = friendList.friends.first(where: { $0.addresses.contains(where: { $0.asStringUriOnly() == sipUri }) || $0.phoneNumbers.contains(where: { $0 == address.username }) }) } + if friend == nil, let linphoneFriendList = self.linphoneFriendList { - friend = linphoneFriendList.friends.first(where: { $0.addresses.contains(where: { $0.asStringUriOnly() == sipUri }) }) + friend = linphoneFriendList.friends.first(where: { $0.addresses.contains(where: { $0.asStringUriOnly() == sipUri }) || $0.phoneNumbers.contains(where: { $0 == address.username }) }) } if friend == nil, let tempRemoteFriendList = self.tempRemoteFriendList { - friend = tempRemoteFriendList.friends.first(where: { $0.addresses.contains(where: { $0.asStringUriOnly() == sipUri }) }) + friend = tempRemoteFriendList.friends.first(where: { $0.addresses.contains(where: { $0.asStringUriOnly() == sipUri }) || $0.phoneNumbers.contains(where: { $0 == address.username }) }) } CoreContext.shared.mCore.friendsLists.forEach { friendList in if friendList.type == .CardDAV { - friend = friendList.friends.first(where: { $0.addresses.contains(where: { $0.asStringUriOnly() == sipUri }) }) + friend = friendList.friends.first(where: { $0.addresses.contains(where: { $0.asStringUriOnly() == sipUri }) || $0.phoneNumbers.contains(where: { $0 == address.username }) }) } } diff --git a/Linphone/GeneratedGit.swift b/Linphone/GeneratedGit.swift index ec24c7abb..8ffb5a75a 100644 --- a/Linphone/GeneratedGit.swift +++ b/Linphone/GeneratedGit.swift @@ -2,6 +2,6 @@ import Foundation public enum AppGitInfo { public static let branch = "master" - public static let commit = "990d2f36a" + public static let commit = "6575a4b0f" public static let tag = "6.1.0-alpha" } diff --git a/Linphone/UI/Call/ViewModel/CallViewModel.swift b/Linphone/UI/Call/ViewModel/CallViewModel.swift index 9c5c97dd5..4d48fb5c4 100644 --- a/Linphone/UI/Call/ViewModel/CallViewModel.swift +++ b/Linphone/UI/Call/ViewModel/CallViewModel.swift @@ -178,7 +178,9 @@ class CallViewModel: ObservableObject { let friend = ContactsManager.shared.getFriendWithAddress(address: self.currentCall!.remoteAddress) if friend != nil && friend!.address != nil && friend!.address!.displayName != nil { displayNameTmp = friend!.address!.displayName! - } else { + } else if friend != nil && friend?.name != nil { + displayNameTmp = friend?.name ?? "No name" + } else { if self.currentCall!.remoteAddress!.displayName != nil { displayNameTmp = self.currentCall!.remoteAddress!.displayName! } else if self.currentCall!.remoteAddress!.username != nil && displayNameTmp.isEmpty { diff --git a/Linphone/UI/Main/ContentView.swift b/Linphone/UI/Main/ContentView.swift index f837974f8..20fdc661f 100644 --- a/Linphone/UI/Main/ContentView.swift +++ b/Linphone/UI/Main/ContentView.swift @@ -1507,6 +1507,8 @@ struct ContentView: View { } } .onReceive(NotificationCenter.default.publisher(for: NSNotification.Name("ContactLoaded"))) { _ in + callViewModel.resetCallView() + if let conversationsListVM = conversationsListViewModel { conversationsListVM.updateChatRoomsList() } From aed6876065b9a0c86b3bf41cd21dbabdac474eec Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Fri, 9 Jan 2026 16:47:56 +0100 Subject: [PATCH 2/6] Remove videoCaptureEnabled and videoDisplayEnabled from CoreContext init --- Linphone/Core/CoreContext.swift | 2 -- Linphone/GeneratedGit.swift | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Linphone/Core/CoreContext.swift b/Linphone/Core/CoreContext.swift index 2f0222d12..d96d5b6e6 100644 --- a/Linphone/Core/CoreContext.swift +++ b/Linphone/Core/CoreContext.swift @@ -163,8 +163,6 @@ class CoreContext: ObservableObject { let userAgent = "LinphoneiOS/\(appGitTag) (\(UIDevice.current.localizedModel.replacingOccurrences(of: "'", with: ""))) LinphoneSDK" self.mCore.setUserAgent(name: userAgent, version: self.coreVersion) - self.mCore.videoCaptureEnabled = true - self.mCore.videoDisplayEnabled = true self.mCore.videoPreviewEnabled = false self.mCore.fecEnabled = true diff --git a/Linphone/GeneratedGit.swift b/Linphone/GeneratedGit.swift index 8ffb5a75a..714e5969b 100644 --- a/Linphone/GeneratedGit.swift +++ b/Linphone/GeneratedGit.swift @@ -2,6 +2,6 @@ import Foundation public enum AppGitInfo { public static let branch = "master" - public static let commit = "6575a4b0f" + public static let commit = "4f7e4b0c3" public static let tag = "6.1.0-alpha" } From 221f0b10d7c6b21d8b2678a4d9b233ef85f99dad Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Mon, 12 Jan 2026 16:32:42 +0100 Subject: [PATCH 3/6] Refresh view when config is applied --- Linphone/Core/CoreContext.swift | 3 +++ Linphone/GeneratedGit.swift | 2 +- Linphone/UI/Main/ContentView.swift | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Linphone/Core/CoreContext.swift b/Linphone/Core/CoreContext.swift index d96d5b6e6..f2905531e 100644 --- a/Linphone/Core/CoreContext.swift +++ b/Linphone/Core/CoreContext.swift @@ -59,6 +59,8 @@ class CoreContext: ObservableObject { var digestAuthInfoPendingPasswordUpdate: AuthInfo? + @Published var reloadID = UUID() + private init() { do { try initialiseCore() @@ -337,6 +339,7 @@ class CoreContext: ObservableObject { } self.accounts = accountModels ThemeManager.shared.applyTheme(named: themeMainColor) + self.reloadID = UUID() } } }, onLogCollectionUploadStateChanged: { (_: Core, _: Core.LogCollectionUploadState, info: String) in diff --git a/Linphone/GeneratedGit.swift b/Linphone/GeneratedGit.swift index 714e5969b..1df3e3179 100644 --- a/Linphone/GeneratedGit.swift +++ b/Linphone/GeneratedGit.swift @@ -2,6 +2,6 @@ import Foundation public enum AppGitInfo { public static let branch = "master" - public static let commit = "4f7e4b0c3" + public static let commit = "aed687606" public static let tag = "6.1.0-alpha" } diff --git a/Linphone/UI/Main/ContentView.swift b/Linphone/UI/Main/ContentView.swift index 20fdc661f..d38e211ad 100644 --- a/Linphone/UI/Main/ContentView.swift +++ b/Linphone/UI/Main/ContentView.swift @@ -1586,6 +1586,7 @@ struct ContentView: View { } } } + .id(coreContext.reloadID) } func openMenu() { From 986276c04fa0aca29ce8a27cdbd956914c4898e4 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Thu, 15 Jan 2026 09:30:48 +0100 Subject: [PATCH 4/6] Updated CHANGELOG & bumped version code to 6.1.0 (5) --- LinphoneApp.xcodeproj/project.pbxproj | 20 +++++++++---------- .../xcshareddata/swiftpm/Package.resolved | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/LinphoneApp.xcodeproj/project.pbxproj b/LinphoneApp.xcodeproj/project.pbxproj index 7f699ece3..d154f942d 100644 --- a/LinphoneApp.xcodeproj/project.pbxproj +++ b/LinphoneApp.xcodeproj/project.pbxproj @@ -1677,7 +1677,7 @@ CODE_SIGN_ENTITLEMENTS = msgNotificationService/msgNotificationService.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4; + CURRENT_PROJECT_VERSION = 5; DEVELOPMENT_TEAM = Z2V957B3D6; ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -1720,7 +1720,7 @@ CODE_SIGN_ENTITLEMENTS = msgNotificationService/msgNotificationService.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4; + CURRENT_PROJECT_VERSION = 5; DEVELOPMENT_TEAM = Z2V957B3D6; ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -1879,7 +1879,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_ENTITLEMENTS = Linphone/Linphone.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4; + CURRENT_PROJECT_VERSION = 5; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = "\"Linphone/Preview Content\""; @@ -1943,7 +1943,7 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_ENTITLEMENTS = Linphone/Linphone.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 4; + CURRENT_PROJECT_VERSION = 5; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_ASSET_PATHS = "\"Linphone/Preview Content\""; DEVELOPMENT_TEAM = Z2V957B3D6; @@ -2003,7 +2003,7 @@ CODE_SIGN_ENTITLEMENTS = linphoneExtension/linphoneExtension.entitlements; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4; + CURRENT_PROJECT_VERSION = 5; DEVELOPMENT_TEAM = Z2V957B3D6; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -2037,7 +2037,7 @@ CODE_SIGN_ENTITLEMENTS = linphoneExtension/linphoneExtension.entitlements; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4; + CURRENT_PROJECT_VERSION = 5; DEVELOPMENT_TEAM = Z2V957B3D6; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -2070,7 +2070,7 @@ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4; + CURRENT_PROJECT_VERSION = 5; DEVELOPMENT_TEAM = Z2V957B3D6; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -2085,7 +2085,7 @@ "@executable_path/../../Frameworks", ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 1.0; + MARKETING_VERSION = 6.1.0; PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.intentsExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -2106,7 +2106,7 @@ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4; + CURRENT_PROJECT_VERSION = 5; DEVELOPMENT_TEAM = Z2V957B3D6; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -2121,7 +2121,7 @@ "@executable_path/../../Frameworks", ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 1.0; + MARKETING_VERSION = 6.1.0; PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone.intentsExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; diff --git a/LinphoneApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/LinphoneApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 8b7063b70..446808feb 100644 --- a/LinphoneApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/LinphoneApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -123,7 +123,7 @@ "location" : "https://gitlab.linphone.org/BC/public/linphone-sdk-swift-ios.git", "state" : { "branch" : "alpha", - "revision" : "e4ec19c845a0c0cfa71f39ca01b3f9ae822c296f" + "revision" : "b00835b0e6ef9c2bdd0168fecca3c626714b6561" } }, { From c5c970d1779aa7060c0bd5c9f169142d311f273e Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Thu, 15 Jan 2026 17:45:32 +0100 Subject: [PATCH 5/6] Fix logging in app extension --- Linphone/Core/CoreContext.swift | 2 +- Linphone/GeneratedGit.swift | 2 +- Linphone/Utils/Log.swift | 2 +- msgNotificationService/NotificationService.swift | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Linphone/Core/CoreContext.swift b/Linphone/Core/CoreContext.swift index f2905531e..6ee639663 100644 --- a/Linphone/Core/CoreContext.swift +++ b/Linphone/Core/CoreContext.swift @@ -123,7 +123,7 @@ class CoreContext: ObservableObject { coreQueue.async { LoggingService.Instance.logLevel = LogLevel.Debug - Factory.Instance.logCollectionPath = Factory.Instance.getConfigDir(context: nil) + Factory.Instance.logCollectionPath = Factory.Instance.getDataDir(context: UnsafeMutablePointer(mutating: (Config.appGroupName as NSString).utf8String)) Factory.Instance.enableLogCollection(state: LogCollectionState.Enabled) Log.info("Checking if linphonerc file exists already. If not, creating one as a copy of linphonerc-default") diff --git a/Linphone/GeneratedGit.swift b/Linphone/GeneratedGit.swift index 1df3e3179..5658e01ad 100644 --- a/Linphone/GeneratedGit.swift +++ b/Linphone/GeneratedGit.swift @@ -2,6 +2,6 @@ import Foundation public enum AppGitInfo { public static let branch = "master" - public static let commit = "aed687606" + public static let commit = "986276c04" public static let tag = "6.1.0-alpha" } diff --git a/Linphone/Utils/Log.swift b/Linphone/Utils/Log.swift index e23bf81ab..d09da8240 100644 --- a/Linphone/Utils/Log.swift +++ b/Linphone/Utils/Log.swift @@ -37,7 +37,7 @@ class Log: LoggingServiceDelegate { private init() { service.domain = Bundle.main.bundleIdentifier! - Core.setLogCollectionPath(path: Factory.Instance.getDownloadDir(context: UnsafeMutablePointer(mutating: (Config.appGroupName as NSString).utf8String))) + Core.setLogCollectionPath(path: Factory.Instance.getDataDir(context: UnsafeMutablePointer(mutating: (Config.appGroupName as NSString).utf8String))) Core.enableLogCollection(state: LogCollectionState.Enabled) setMask() LoggingService.Instance.addDelegate(delegate: self) diff --git a/msgNotificationService/NotificationService.swift b/msgNotificationService/NotificationService.swift index f36c6406d..806542b62 100644 --- a/msgNotificationService/NotificationService.swift +++ b/msgNotificationService/NotificationService.swift @@ -87,8 +87,9 @@ class NotificationService: UNNotificationServiceExtension { bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) LoggingService.Instance.logLevel = LogLevel.Debug - Factory.Instance.logCollectionPath = Factory.Instance.getConfigDir(context: nil) + Factory.Instance.logCollectionPath = Factory.Instance.getDataDir(context: UnsafeMutablePointer(mutating: (Config.appGroupName as NSString).utf8String)) Factory.Instance.enableLogCollection(state: LogCollectionState.Enabled) + Log.info("[msgNotificationService] start msgNotificationService extension") /* if (VFSUtil.vfsEnabled(groupName: Config.appGroupName) && !VFSUtil.activateVFS()) { From b348307b6c17db2c3a21cb6b42f2eaea4d09ec52 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Mon, 19 Jan 2026 11:07:34 +0100 Subject: [PATCH 6/6] Update SPM dependencies --- Linphone/GeneratedGit.swift | 2 +- .../project.xcworkspace/xcshareddata/swiftpm/Package.resolved | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Linphone/GeneratedGit.swift b/Linphone/GeneratedGit.swift index 5658e01ad..bf2defb49 100644 --- a/Linphone/GeneratedGit.swift +++ b/Linphone/GeneratedGit.swift @@ -2,6 +2,6 @@ import Foundation public enum AppGitInfo { public static let branch = "master" - public static let commit = "986276c04" + public static let commit = "c5c970d17" public static let tag = "6.1.0-alpha" } diff --git a/LinphoneApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/LinphoneApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 446808feb..7835adc44 100644 --- a/LinphoneApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/LinphoneApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -123,7 +123,7 @@ "location" : "https://gitlab.linphone.org/BC/public/linphone-sdk-swift-ios.git", "state" : { "branch" : "alpha", - "revision" : "b00835b0e6ef9c2bdd0168fecca3c626714b6561" + "revision" : "0ee9cfc12080c8479a303ad275e8c24c3332572d" } }, {