From d6fb60c8c128566abab21c6e15b1fd7ce2761235 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 11 Jun 2026 16:00:03 +0800
Subject: [PATCH] Fix settings window height for stable tabs

---
 src/Apptag/PreferencesView.swift |   12 +++++++-----
 src/build.sh                     |    7 ++++---
 src/CHANGELOG.md                 |    7 +++++++
 src/Apptag/Info.plist            |    4 ++--
 src/Apptag/ApptagApp.swift       |    4 ++--
 5 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/src/Apptag/ApptagApp.swift b/src/Apptag/ApptagApp.swift
index 1612504..c88dc4a 100644
--- a/src/Apptag/ApptagApp.swift
+++ b/src/Apptag/ApptagApp.swift
@@ -17,7 +17,7 @@
         Settings {
             PreferencesView()
         }
-        .defaultSize(width: 1000, height: 480)
+        .defaultSize(width: 1000, height: 640)
         .commands {
             CommandGroup(replacing: .systemServices) { }
             CommandGroup(replacing: .appVisibility) { }
@@ -42,7 +42,7 @@
     private static let launcherOverlayLevel = NSWindow.Level(rawValue: NSWindow.Level.mainMenu.rawValue - 1)
     private static let overlayDefaultLevel = launcherOverlayLevel
     private static let overlayTextInputLevel = launcherOverlayLevel
-    private static let settingsContentSize = NSSize(width: 1000, height: 480)
+    private static let settingsContentSize = NSSize(width: 1000, height: 640)
 
     private var statusItem: NSStatusItem?
     private var overlayKeyMonitor: Any?
diff --git a/src/Apptag/Info.plist b/src/Apptag/Info.plist
index 44b3ab3..173c742 100644
--- a/src/Apptag/Info.plist
+++ b/src/Apptag/Info.plist
@@ -19,9 +19,9 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>7.8.27</string>
+	<string>7.8.28</string>
 	<key>CFBundleVersion</key>
-	<string>20260611.1548</string>
+	<string>20260611.1558</string>
 	<key>LSApplicationCategoryType</key>
 	<string>public.app-category.utilities</string>
 	<key>LSMinimumSystemVersion</key>
diff --git a/src/Apptag/PreferencesView.swift b/src/Apptag/PreferencesView.swift
index 7c4b398..d3f0002 100644
--- a/src/Apptag/PreferencesView.swift
+++ b/src/Apptag/PreferencesView.swift
@@ -38,6 +38,7 @@
 
 struct PreferencesView: View {
     private let settingsWindowWidth: CGFloat = 1000
+    private let settingsWindowHeight: CGFloat = 640
     private let settingsContentWidth: CGFloat = 940
     private let generalContentWidth: CGFloat = 720
     private let generalLabelWidth: CGFloat = 190
@@ -528,12 +529,12 @@
     }
 
     private var settingsTabBar: some View {
-        HStack(spacing: 18) {
+        HStack(spacing: 8) {
             ForEach(SettingsTab.allCases) { tab in
                 settingsTabButton(tab)
             }
         }
-        .frame(height: 104, alignment: .center)
+        .frame(height: 96, alignment: .center)
         .frame(maxWidth: .infinity)
         .background(Color(nsColor: .windowBackgroundColor))
     }
@@ -550,11 +551,12 @@
                     .frame(width: 32, height: 32)
                 Text(tr(tab.titleKey))
                     .font(.system(size: 13, weight: .semibold))
-                    .lineLimit(1)
+                    .lineLimit(2)
+                    .multilineTextAlignment(.center)
                     .minimumScaleFactor(0.8)
             }
             .foregroundStyle(isSelected ? Color.accentColor : Color.secondary)
-            .frame(width: 72, height: 70)
+            .frame(width: 108, height: 74)
             .background(
                 RoundedRectangle(cornerRadius: 8, style: .continuous)
                     .fill(isSelected ? Color.accentColor.opacity(0.10) : Color.clear)
@@ -1031,7 +1033,7 @@
                 .transition(.opacity.combined(with: .move(edge: .bottom)))
             }
         }
-        .frame(width: settingsWindowWidth, height: 480)
+        .frame(width: settingsWindowWidth, height: settingsWindowHeight)
         .onAppear {
             syncSelectedLanguage()
             showPendingHotkeyWarningIfNeeded()
diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md
index 1ebea7c..52ef406 100644
--- a/src/CHANGELOG.md
+++ b/src/CHANGELOG.md
@@ -1,5 +1,12 @@
 # TagLauncher Changelog
 
+## [7.8.28] — 2026-06-11
+
+- 修复设置页改用自定义顶部导航后,内容区域高度不足导致 General 等 tab 默认出现纵向滚动/底部内容被截断的问题
+- 设置页窗口、SwiftUI 视图和 AppKit 手工窗口尺寸统一为稳定固定高度;顶部 tab button 放宽文字宽度并支持两行标题,避免英文标题被截断
+- 构建脚本优先使用仓库内已验证的 `icon-icns.icns`,避免当前系统 `iconutil` 对临时 AppIcon iconset 判定不稳定导致打包失败
+- 版本号更新为 `7.8.28`,Build 更新为 `20260611.1558`
+
 ## [7.8.27] — 2026-06-11
 
 - 设置页顶部导航改为自定义稳定 tab bar,不再依赖 SwiftUI `TabView` 默认 macOS 样式,避免 macOS 14 与较新系统渲染成不同的工具栏/分段控件外观
diff --git a/src/build.sh b/src/build.sh
index 60dcda1..e91bfd2 100644
--- a/src/build.sh
+++ b/src/build.sh
@@ -77,7 +77,10 @@
 
 echo "==> Copying AppIcon.icns..."
 APPICON_SOURCE_DIR="$SWIFT_DIR/Assets.xcassets/AppIcon.appiconset"
-if [ -d "$APPICON_SOURCE_DIR" ]; then
+PREBUILT_APPICON="$PROJECT_DIR/icon-icns.icns"
+if [ -f "$PREBUILT_APPICON" ]; then
+    cp "$PREBUILT_APPICON" "$RESOURCES_DIR/AppIcon.icns"
+elif [ -d "$APPICON_SOURCE_DIR" ]; then
     TMP_ICONSET_PARENT="$(mktemp -d -t taglauncher-appicon.XXXXXX)"
     TMP_ICONSET="$TMP_ICONSET_PARENT/AppIcon.iconset"
     mkdir -p "$TMP_ICONSET"
@@ -102,8 +105,6 @@
     done
     iconutil -c icns "$TMP_ICONSET" -o "$RESOURCES_DIR/AppIcon.icns"
     rm -rf "$TMP_ICONSET_PARENT"
-elif [ -f "$PROJECT_DIR/icon-icns.icns" ]; then
-    cp "$PROJECT_DIR/icon-icns.icns" "$RESOURCES_DIR/AppIcon.icns"
 elif [ -f "$SWIFT_DIR/AppIcon.iconset/icon_512x512@2x.png" ]; then
     iconutil -c icns "$SWIFT_DIR/AppIcon.iconset" -o "$RESOURCES_DIR/AppIcon.icns" 2>/dev/null
 else

--
Gitblit v1.9.3