Replace page TabView with paging ScrollView; fix diff + centering; bump to 3.2
Build iOS App / Build .ipa and publish source (push) Failing after 16s

The TabView with .page style broke NavigationLink inside tabs (the page
gesture swallows taps) and centered content. Replace with a horizontal paging
ScrollView using containerRelativeFrame and scrollTargetBehavior(.paging):
same swipe-to-change behavior, no gesture conflicts, diff view works again.
Bump to 3.2.
This commit is contained in:
Hermes committed 2026-08-14 06:46:25 +00:00
1 parent ed36ed72de
commit 1817422836
2 files changed
+28 -16

No files matched your search

+4 -4
View File
@@ -187,7 +187,7 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 22; CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_CFBundleDisplayName = "GiteaPR"; INFOPLIST_KEY_CFBundleDisplayName = "GiteaPR";
@@ -197,7 +197,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 3.1; MARKETING_VERSION = 3.2;
PRODUCT_BUNDLE_IDENTIFIER = com.bueso.giteapr; PRODUCT_BUNDLE_IDENTIFIER = com.bueso.giteapr;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
@@ -211,7 +211,7 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 22; CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_CFBundleDisplayName = "GiteaPR"; INFOPLIST_KEY_CFBundleDisplayName = "GiteaPR";
@@ -221,7 +221,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 3.1; MARKETING_VERSION = 3.2;
PRODUCT_BUNDLE_IDENTIFIER = com.bueso.giteapr; PRODUCT_BUNDLE_IDENTIFIER = com.bueso.giteapr;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
+24 -12
View File
@@ -103,19 +103,31 @@ struct PRDetailView: View {
VStack(spacing: 0) { VStack(spacing: 0) {
header(pr) header(pr)
// Page-style TabView gives iOS-native swipe-to-change between // Horizontal paging ScrollView — swipeable like a TabView, but
// sections (matching iOS 26), while the bottom bar taps select. // without breaking NavigationLink inside the tabs (TabView's .page
TabView(selection: $selectedTab) { // style swallows taps and interferes with nested navigation).
OverviewTab(pr: pr) ScrollView(.horizontal, showsIndicators: false) {
.tag(DetailTab.overview) HStack(spacing: 0) {
ConversationTab(vm: vm) OverviewTab(pr: pr)
.tag(DetailTab.conversation) .id(DetailTab.overview)
FilesTab(vm: vm) .containerRelativeFrame(.horizontal)
.tag(DetailTab.files)
ChecksTab(vm: vm, onRerun: { showRerunConfirm = $0 }) ConversationTab(vm: vm)
.tag(DetailTab.checks) .id(DetailTab.conversation)
.containerRelativeFrame(.horizontal)
FilesTab(vm: vm)
.id(DetailTab.files)
.containerRelativeFrame(.horizontal)
ChecksTab(vm: vm, onRerun: { showRerunConfirm = $0 })
.id(DetailTab.checks)
.containerRelativeFrame(.horizontal)
}
.scrollTargetLayout()
} }
.tabViewStyle(.page(indexDisplayMode: .never)) .scrollTargetBehavior(.paging)
.scrollPosition(id: $selectedTab)
.ignoresSafeArea(edges: .bottom) .ignoresSafeArea(edges: .bottom)
bottomTabBar bottomTabBar