Slim bottom tab bar to Apple height; remove redundant reload button; bump to 2.4
Build iOS App / Build .ipa and publish source (push) Successful in 25s

- Bottom tab bar: reduce vertical padding (8→4), icon size (20→18), and
  bottom inset (8→4) so it matches Apple's standard compact tab bar height
  (Apple Music etc.) instead of a tall bar.
- Remove the manual reload button from the loaded PR toolbar — the detail
  view auto-loads on appearance, so it was redundant clutter. The reload
  button is kept only on the error/retry state. Bump to 2.4.
This commit is contained in:
Hermes committed 2026-08-13 06:59:09 +00:00
1 parent 880cff9e68
commit 7399187fb4
2 files changed
+11 -12

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 = 14; CURRENT_PROJECT_VERSION = 15;
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 = 2.3; MARKETING_VERSION = 2.4;
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 = 14; CURRENT_PROJECT_VERSION = 15;
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 = 2.3; MARKETING_VERSION = 2.4;
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;
+7 -8
View File
@@ -100,7 +100,6 @@ struct PRDetailView: View {
bottomTabBar bottomTabBar
} }
.toolbar { .toolbar {
ToolbarItem(placement: .primaryAction) { reloadButton }
if prIsOpen { if prIsOpen {
ToolbarItem(placement: .primaryAction) { mergeButton } ToolbarItem(placement: .primaryAction) { mergeButton }
ToolbarItem(placement: .primaryAction) { reviewMenu } ToolbarItem(placement: .primaryAction) { reviewMenu }
@@ -132,17 +131,17 @@ struct PRDetailView: View {
} }
/// Bottom tab bar: icon-only navigation between the PR's sections, in a /// Bottom tab bar: icon-only navigation between the PR's sections, in a
/// floating capsule style (like the latest iOS tab bars) rather than a /// compact floating capsule style matching Apple's standard tab bar
/// full-width bar. /// height (Apple Music etc.), not a tall bar.
private var bottomTabBar: some View { private var bottomTabBar: some View {
HStack { HStack {
ForEach(DetailTab.allCases) { tab in ForEach(DetailTab.allCases) { tab in
Button { Button {
selectedTab = tab selectedTab = tab
} label: { } label: {
VStack(spacing: 2) { VStack(spacing: 1) {
Image(systemName: tab.icon) Image(systemName: tab.icon)
.font(.system(size: 20)) .font(.system(size: 18))
Text(tab.rawValue) Text(tab.rawValue)
.font(.caption2) .font(.caption2)
} }
@@ -151,15 +150,15 @@ struct PRDetailView: View {
} }
} }
} }
.padding(.vertical, 8) .padding(.vertical, 4)
.padding(.horizontal, 6) .padding(.horizontal, 6)
.background( .background(
Capsule() Capsule()
.fill(.regularMaterial) .fill(.regularMaterial)
.shadow(color: .black.opacity(0.15), radius: 8, y: 2) .shadow(color: .black.opacity(0.12), radius: 6, y: 1)
) )
.padding(.horizontal, 16) .padding(.horizontal, 16)
.padding(.bottom, 8) .padding(.bottom, 4)
} }
private var reviewMenu: some View { private var reviewMenu: some View {