From 30e9a0bec3dea7635b7924af610517c828904791 Mon Sep 17 00:00:00 2001 From: tashda Date: Fri, 1 May 2026 13:23:43 +0200 Subject: [PATCH 1/2] Revert Release signing to Manual MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Xcode Cloud Automatic-signing approach didn't work end-to-end — Apple's runners couldn't access a distribution cert and uploaded ad-hoc-signed binaries that ASC rejected with 90035. Restoring the Manual signing config ("Shellbee App Store" / "Shellbee Widgets App Store" profiles + iPhone Distribution identity) so local Xcode archive + upload to App Store Connect works as it did before. Co-Authored-By: Claude Opus 4.7 (1M context) --- Shellbee.xcodeproj/project.pbxproj | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Shellbee.xcodeproj/project.pbxproj b/Shellbee.xcodeproj/project.pbxproj index 26d724a..60b2444 100644 --- a/Shellbee.xcodeproj/project.pbxproj +++ b/Shellbee.xcodeproj/project.pbxproj @@ -856,9 +856,11 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_ENTITLEMENTS = Shellbee.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = "$(APP_DEVELOPMENT_TEAM)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = JQU2HR44D8; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = Config/Info.plist; @@ -872,6 +874,8 @@ MARKETING_VERSION = 1.5.2; PRODUCT_BUNDLE_IDENTIFIER = "$(APP_BUNDLE_ID)"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "Shellbee App Store"; STRING_CATALOG_GENERATE_SYMBOLS = YES; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -933,9 +937,11 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = ShellbeeWidgets.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = "$(APP_DEVELOPMENT_TEAM)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = JQU2HR44D8; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = ShellbeeWidgets/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Shellbee Widgets"; @@ -950,6 +956,8 @@ MARKETING_VERSION = 1.5.2; PRODUCT_BUNDLE_IDENTIFIER = "$(APP_WIDGET_BUNDLE_ID)"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "Shellbee Widgets App Store"; SKIP_INSTALL = YES; STRING_CATALOG_GENERATE_SYMBOLS = YES; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; From 65ea06d29eefc7f43b3426d6e543ab1d1c2481d7 Mon Sep 17 00:00:00 2001 From: tashda Date: Fri, 1 May 2026 13:27:21 +0200 Subject: [PATCH 2/2] Restore swipe between Activity and Log on Logs page Replace the plain switch with a native iOS 17+ horizontal paging ScrollView (.scrollTargetBehavior(.paging) + .scrollPosition(id:)) bound two-way to `mode`. Each page is sized via GeometryReader so the inner List respects the nav bar's safe-area inset. Avoids the toolbar-opaque and bottom-seam regressions that PageTabViewStyle introduced when the tab bar is hidden. Bump MARKETING_VERSION to 1.5.3. Fixes #60 Co-Authored-By: Claude Opus 4.7 (1M context) --- Shellbee.xcodeproj/project.pbxproj | 8 ++++---- Shellbee/Features/Logs/LogsView.swift | 24 +++++++++++++++++++----- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/Shellbee.xcodeproj/project.pbxproj b/Shellbee.xcodeproj/project.pbxproj index 60b2444..9b72fde 100644 --- a/Shellbee.xcodeproj/project.pbxproj +++ b/Shellbee.xcodeproj/project.pbxproj @@ -830,7 +830,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.5.3; PRODUCT_BUNDLE_IDENTIFIER = "$(APP_BUNDLE_ID)"; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -871,7 +871,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.5.3; PRODUCT_BUNDLE_IDENTIFIER = "$(APP_BUNDLE_ID)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -911,7 +911,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.5.3; PRODUCT_BUNDLE_IDENTIFIER = "$(APP_WIDGET_BUNDLE_ID)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -953,7 +953,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.5.3; PRODUCT_BUNDLE_IDENTIFIER = "$(APP_WIDGET_BUNDLE_ID)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/Shellbee/Features/Logs/LogsView.swift b/Shellbee/Features/Logs/LogsView.swift index e2f7cff..3feaba0 100644 --- a/Shellbee/Features/Logs/LogsView.swift +++ b/Shellbee/Features/Logs/LogsView.swift @@ -82,11 +82,25 @@ struct LogsView: View { @ViewBuilder private var modeContent: some View { - switch mode { - case .activity: - ActivityLogContent(viewModel: activityVM) - case .log: - BridgeLogView(viewModel: bridgeVM) + let position = Binding( + get: { mode }, + set: { if let new = $0, new != mode { mode = new } } + ) + GeometryReader { geo in + ScrollView(.horizontal) { + LazyHStack(spacing: 0) { + ActivityLogContent(viewModel: activityVM) + .frame(width: geo.size.width, height: geo.size.height) + .id(LogMode.activity) + BridgeLogView(viewModel: bridgeVM) + .frame(width: geo.size.width, height: geo.size.height) + .id(LogMode.log) + } + .scrollTargetLayout() + } + .scrollTargetBehavior(.paging) + .scrollIndicators(.hidden) + .scrollPosition(id: position) } }