diff --git a/.github/workflows/build-plugin.yml b/.github/workflows/build-plugin.yml index 690089876..58b1a2e87 100644 --- a/.github/workflows/build-plugin.yml +++ b/.github/workflows/build-plugin.yml @@ -44,7 +44,7 @@ jobs: build-plugin: name: "Build ${{ matrix.tag }}" needs: resolve-tags - runs-on: macos-15 + runs-on: macos-26 timeout-minutes: 30 strategy: matrix: ${{ fromJson(needs.resolve-tags.outputs.matrix) }} @@ -62,7 +62,7 @@ jobs: - name: Select Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: "26.2" + xcode-version: "26.5-beta" - name: Download static libraries env: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1799f37d4..fea2942d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,7 +32,7 @@ jobs: build-arm64: name: Build ARM64 - runs-on: macos-15 + runs-on: macos-26 timeout-minutes: 20 steps: @@ -42,7 +42,7 @@ jobs: - name: Select Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: '26.2' + xcode-version: '26.5-beta' - name: Download static libraries env: @@ -146,7 +146,7 @@ jobs: build-x86_64: name: Build x86_64 - runs-on: macos-15 + runs-on: macos-26 timeout-minutes: 25 steps: @@ -156,7 +156,7 @@ jobs: - name: Select Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: '26.2' + xcode-version: '26.5-beta' - name: Download static libraries env: @@ -271,7 +271,7 @@ jobs: release: name: Create GitHub Release - runs-on: macos-15 + runs-on: macos-26 needs: [lint, build-arm64, build-x86_64] if: startsWith(github.ref, 'refs/tags/v') timeout-minutes: 10 @@ -287,7 +287,7 @@ jobs: - name: Select Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: '26.2' + xcode-version: '26.5-beta' - name: Download build artifacts uses: actions/download-artifact@v4 diff --git a/TablePro/Core/Services/Export/ForeignApp/DBeaverImporter.swift b/TablePro/Core/Services/Export/ForeignApp/DBeaverImporter.swift index df403acc5..c3b3cc60d 100644 --- a/TablePro/Core/Services/Export/ForeignApp/DBeaverImporter.swift +++ b/TablePro/Core/Services/Export/ForeignApp/DBeaverImporter.swift @@ -327,14 +327,14 @@ struct DBeaverImporter: ForeignAppImporter { private func defaultPort(for dbType: String) -> Int { switch dbType { - case "MySQL", "MariaDB": return 3306 - case "PostgreSQL": return 5432 + case "MySQL", "MariaDB": return 3_306 + case "PostgreSQL": return 5_432 case "MongoDB": return 27_017 - case "Redis": return 6379 - case "SQL Server": return 1433 - case "Oracle": return 1521 - case "ClickHouse": return 8123 - case "Cassandra": return 9042 + case "Redis": return 6_379 + case "SQL Server": return 1_433 + case "Oracle": return 1_521 + case "ClickHouse": return 8_123 + case "Cassandra": return 9_042 default: return 0 } } diff --git a/TablePro/Core/Services/Export/ForeignApp/SequelAceImporter.swift b/TablePro/Core/Services/Export/ForeignApp/SequelAceImporter.swift index 00034c7c1..9e2616eaa 100644 --- a/TablePro/Core/Services/Export/ForeignApp/SequelAceImporter.swift +++ b/TablePro/Core/Services/Export/ForeignApp/SequelAceImporter.swift @@ -157,7 +157,7 @@ struct SequelAceImporter: ForeignAppImporter { } else if let strPort = entry["port"] as? String, let parsed = Int(strPort) { port = parsed } else { - port = 3306 + port = 3_306 } let username = entry["user"] as? String ?? "" let database = entry["database"] as? String ?? "" diff --git a/TablePro/Core/Services/Export/ForeignApp/TablePlusImporter.swift b/TablePro/Core/Services/Export/ForeignApp/TablePlusImporter.swift index b30a95779..1c806bc7b 100644 --- a/TablePro/Core/Services/Export/ForeignApp/TablePlusImporter.swift +++ b/TablePro/Core/Services/Export/ForeignApp/TablePlusImporter.swift @@ -206,7 +206,7 @@ struct TablePlusImporter: ForeignAppImporter { let paths = entry["TlsKeyPaths"] as? [String] ?? [] return ExportableSSLConfig( mode: "Required", - caCertificatePath: paths.count > 0 ? paths[0] : nil, + caCertificatePath: !paths.isEmpty ? paths[0] : nil, clientCertificatePath: paths.count > 1 ? paths[1] : nil, clientKeyPath: paths.count > 2 ? paths[2] : nil ) @@ -247,11 +247,11 @@ struct TablePlusImporter: ForeignAppImporter { private func defaultPort(for dbType: String) -> Int { switch dbType { - case "MySQL", "MariaDB": return 3306 - case "PostgreSQL", "Redshift": return 5432 + case "MySQL", "MariaDB": return 3_306 + case "PostgreSQL", "Redshift": return 5_432 case "MongoDB": return 27_017 - case "Redis": return 6379 - case "SQL Server": return 1433 + case "Redis": return 6_379 + case "SQL Server": return 1_433 default: return 0 } } diff --git a/TablePro/Views/Main/Child/MainStatusBarView.swift b/TablePro/Views/Main/Child/MainStatusBarView.swift index 7ac6e9491..3f2edd75c 100644 --- a/TablePro/Views/Main/Child/MainStatusBarView.swift +++ b/TablePro/Views/Main/Child/MainStatusBarView.swift @@ -9,7 +9,6 @@ import SwiftUI /// Status bar at the bottom of the results section struct MainStatusBarView: View { - let tab: QueryTab? let filterStateManager: FilterStateManager let columnVisibilityManager: ColumnVisibilityManager diff --git a/TablePro/Views/Main/MainContentView.swift b/TablePro/Views/Main/MainContentView.swift index 8a04216b3..7886916c8 100644 --- a/TablePro/Views/Main/MainContentView.swift +++ b/TablePro/Views/Main/MainContentView.swift @@ -125,10 +125,12 @@ struct MainContentView: View { private func sheetContent(for sheet: ActiveSheet) -> some View { let dismissBinding = Binding( get: { coordinator.activeSheet != nil }, - set: { if !$0 { - coordinator.activeSheet = nil - coordinator.exportPreselectedTableNames = nil - } } + set: { + if !$0 { + coordinator.activeSheet = nil + coordinator.exportPreselectedTableNames = nil + } + } ) switch sheet { diff --git a/TablePro/Views/QueryPlan/QueryPlanTreeView.swift b/TablePro/Views/QueryPlan/QueryPlanTreeView.swift index 250967c81..f42ab201c 100644 --- a/TablePro/Views/QueryPlan/QueryPlanTreeView.swift +++ b/TablePro/Views/QueryPlan/QueryPlanTreeView.swift @@ -51,7 +51,6 @@ struct QueryPlanTreeView: View { // MARK: - Row View private struct QueryPlanRowView: View { - let node: QueryPlanNode var body: some View { diff --git a/scripts/build-release.sh b/scripts/build-release.sh index 445437f6b..bf355c508 100755 --- a/scripts/build-release.sh +++ b/scripts/build-release.sh @@ -315,13 +315,6 @@ build_for_arch() { prepare_libmongoc "$arch" prepare_hiredis "$arch" - # Xcode 26's Icon Composer (.icon) crashes actool in headless CI. - # Keep AppIcon.appiconset as fallback; remove .icon so actool uses it. - if [ -d "TablePro/AppIcon.icon" ] && [ -d "TablePro/Assets.xcassets/AppIcon.appiconset" ]; then - echo "🎨 Using AppIcon.appiconset fallback for headless CI..." - rm -rf "TablePro/AppIcon.icon" - fi - # Persistent SPM package cache (speeds up CI on self-hosted runners) SPM_CACHE_DIR="${HOME}/.spm-cache" mkdir -p "$SPM_CACHE_DIR"