diff --git a/Packages/ZettelKit/Package.swift b/Packages/ZettelKit/Package.swift index 8fb411f..58243cb 100644 --- a/Packages/ZettelKit/Package.swift +++ b/Packages/ZettelKit/Package.swift @@ -5,7 +5,7 @@ import PackageDescription let package = Package( name: "ZettelKit", platforms: [ - .macOS(.v26), + .macOS(.v15), .iOS(.v26) ], products: [ diff --git a/Zettel.xcodeproj/project.pbxproj b/Zettel.xcodeproj/project.pbxproj index cc548db..f66457d 100644 --- a/Zettel.xcodeproj/project.pbxproj +++ b/Zettel.xcodeproj/project.pbxproj @@ -254,7 +254,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 26.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.2; ONLY_ACTIVE_ARCH = YES; PRODUCT_BUNDLE_IDENTIFIER = ""; @@ -496,7 +496,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 26.0; + MACOSX_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = ""; PRODUCT_NAME = Zettel; diff --git a/ZettelMac/Info.plist b/ZettelMac/Info.plist index 7203bbf..83e786c 100644 --- a/ZettelMac/Info.plist +++ b/ZettelMac/Info.plist @@ -24,7 +24,7 @@ LSMinimumSystemVersion - 26.0 + 15.0 ITSAppUsesNonExemptEncryption diff --git a/ZettelMac/Preferences/MacDockIconPreference.swift b/ZettelMac/Preferences/MacDockIconPreference.swift index 267db5a..aba6d03 100644 --- a/ZettelMac/Preferences/MacDockIconPreference.swift +++ b/ZettelMac/Preferences/MacDockIconPreference.swift @@ -36,7 +36,7 @@ enum MacDockIconPreference { let activationPolicy: NSApplication.ActivationPolicy = shouldHide ? .accessory : .regular let didSet = NSApplication.shared.setActivationPolicy(activationPolicy) if !didSet { - let currentIsHidden = NSApplication.shared.activationPolicy == .accessory + let currentIsHidden = NSApplication.shared.activationPolicy() == .accessory UserDefaults.standard.set(currentIsHidden, forKey: storageKey) } } diff --git a/ZettelMac/Views/TagAutocompletePanel.swift b/ZettelMac/Views/TagAutocompletePanel.swift index 9dde9e9..a541edf 100644 --- a/ZettelMac/Views/TagAutocompletePanel.swift +++ b/ZettelMac/Views/TagAutocompletePanel.swift @@ -99,7 +99,7 @@ struct TagSuggestionsView: View { } } .padding(.vertical, 4) - .glassEffect(in: .rect(cornerRadius: 10)) + .modifier(GlassEffectFallback(cornerRadius: 10)) // No SwiftUI shadow — NSHostingView clips it to a hard rect. // p.hasShadow = true on the NSPanel gives the correct shaped shadow. } @@ -157,6 +157,21 @@ private struct TagSuggestionRow: View { } } +// MARK: - Glass Effect Fallback + +/// Applies `.glassEffect` on macOS 26+, falls back to `.background(.ultraThinMaterial)` on earlier versions. +private struct GlassEffectFallback: ViewModifier { + let cornerRadius: CGFloat + + func body(content: Content) -> some View { + if #available(macOS 26, *) { + content.glassEffect(in: .rect(cornerRadius: cornerRadius)) + } else { + content.background(.ultraThinMaterial, in: .rect(cornerRadius: cornerRadius)) + } + } +} + // MARK: - Controller /// Manages the floating `NSPanel` that hosts `TagSuggestionsView`. diff --git a/ZettelMac/Window/ZettelWindowManager.swift b/ZettelMac/Window/ZettelWindowManager.swift index b9efd58..48be4e7 100644 --- a/ZettelMac/Window/ZettelWindowManager.swift +++ b/ZettelMac/Window/ZettelWindowManager.swift @@ -215,9 +215,11 @@ final class ZettelWindowManager: NSObject, ObservableObject { panel.titlebarAppearsTransparent = true panel.titleVisibility = .hidden - // Transparent background for Liquid Glass - panel.isOpaque = false - panel.backgroundColor = .clear + // Transparent background for Liquid Glass (macOS 26+) + if #available(macOS 26, *) { + panel.isOpaque = false + panel.backgroundColor = .clear + } // Set min size panel.minSize = NSSize(width: 420, height: 380)