diff --git a/ShhShell.xcodeproj/project.pbxproj b/ShhShell.xcodeproj/project.pbxproj index 4c31274..ff092fe 100644 --- a/ShhShell.xcodeproj/project.pbxproj +++ b/ShhShell.xcodeproj/project.pbxproj @@ -1092,10 +1092,8 @@ INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_NSFaceIDUsageDescription = "ShhShell uses Face ID to verify your identity"; INFOPLIST_KEY_NSLocalNetworkUsageDescription = "Needed to communicate with SSH Servers"; - INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Required to keep SSH connections alive, if enabled"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "Required to keep SSH connections alive, if enabled"; INFOPLIST_KEY_NSLocationUsageDescription = "Required to keep SSH connections alive, if enabled"; - INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Required to keep SSH connections alive, if enabled"; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; @@ -1136,10 +1134,8 @@ INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_NSFaceIDUsageDescription = "ShhShell uses Face ID to verify your identity"; INFOPLIST_KEY_NSLocalNetworkUsageDescription = "Needed to communicate with SSH Servers"; - INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Required to keep SSH connections alive, if enabled"; INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "Required to keep SSH connections alive, if enabled"; INFOPLIST_KEY_NSLocationUsageDescription = "Required to keep SSH connections alive, if enabled"; - INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Required to keep SSH connections alive, if enabled"; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; diff --git a/ShhShell/Info.plist b/ShhShell/Info.plist index 6e66e9e..cd0e652 100644 --- a/ShhShell/Info.plist +++ b/ShhShell/Info.plist @@ -23,8 +23,6 @@ JetBrainsMonoNerdFontMono-BoldItalic.ttf UIBackgroundModes - - location - + diff --git a/ShhShell/Settings/AppSettings.swift b/ShhShell/Settings/AppSettings.swift index c6570b7..1fcbc1a 100644 --- a/ShhShell/Settings/AppSettings.swift +++ b/ShhShell/Settings/AppSettings.swift @@ -102,4 +102,22 @@ enum AppIcon: Codable, CaseIterable, Equatable, CustomStringConvertible { return "Blueprint" } } + + var isiOS26: Bool { + switch self { + case .regular: + return true + case .beta, .betaBlueprint: + return false + } + } + + var radius: CGFloat { + switch isiOS26 { + case true, false: + return 17.578125 +// case false: +// return 16.5 + } + } } diff --git a/ShhShell/Views/Settings/SettingsView.swift b/ShhShell/Views/Settings/SettingsView.swift index 459c1cb..c4e6d93 100644 --- a/ShhShell/Views/Settings/SettingsView.swift +++ b/ShhShell/Views/Settings/SettingsView.swift @@ -38,7 +38,7 @@ struct SettingsView: View { hostsManager.selectedTheme.background.suiColor.opacity(0.7) .ignoresSafeArea(.all) List { - Section("Terminal") { + Section("Display") { VStack(alignment: .leading) { HStack { Label("Scrollback", systemImage: "scroll") @@ -52,7 +52,21 @@ struct SettingsView: View { step: 250 ) } + Toggle("Keep Display Awake", systemImage: "cup.and.saucer.fill", isOn: $hostsManager.settings.caffeinate) + if #unavailable(iOS 17), hostsManager.settings.filter == .crt { + Label("iOS 17 Required", systemImage: "exclamationmark.triangle.fill") + .foregroundStyle(.yellow) + .transition(.opacity) + } + Picker("", selection: $hostsManager.settings.filter) { + ForEach(TerminalFilter.allCases, id: \.self) { filter in + Text(filter.description).tag(filter) + } + } + .pickerStyle(.inline) + .labelsHidden() } + .animation(.spring, value: hostsManager.settings.filter) Section("Cursor") { HStack(spacing: 20) { @@ -154,51 +168,34 @@ struct SettingsView: View { } } - Section("Keepalive") { - Toggle("Location Persistence", systemImage: "location.fill", isOn: $hostsManager.settings.locationPersist) - .onChange(of: hostsManager.settings.locationPersist) { _ in - if hostsManager.settings.locationPersist && !Backgrounder.shared.checkPermsStatus() { - Backgrounder.shared.requestPerms() - } - } - Toggle("Keep Display Awake", systemImage: "cup.and.saucer.fill", isOn: $hostsManager.settings.caffeinate) - } +// Section("Keepalive") { +// Toggle("Location Persistence", systemImage: "location.fill", isOn: $hostsManager.settings.locationPersist) +// .onChange(of: hostsManager.settings.locationPersist) { _ in +// if hostsManager.settings.locationPersist && !Backgrounder.shared.checkPermsStatus() { +// Backgrounder.shared.requestPerms() +// } +// } +// } Section("Bell Feedback") { Toggle("Sound", systemImage: "bell.and.waves.left.and.right", isOn: $hostsManager.settings.bellSound) Toggle("Haptic",systemImage: "iphone.radiowaves.left.and.right", isOn: $hostsManager.settings.bellHaptic) } - - Section("Terminal Filter") { - if #unavailable(iOS 17), hostsManager.settings.filter == .crt { - Label("iOS 17 Required", systemImage: "exclamationmark.triangle.fill") - .foregroundStyle(.yellow) - .transition(.opacity) - } - Picker("", selection: $hostsManager.settings.filter) { - ForEach(TerminalFilter.allCases, id: \.self) { filter in - Text(filter.description).tag(filter) - } - } - .pickerStyle(.inline) - .labelsHidden() - } - .animation(.spring, value: hostsManager.settings.filter) - Section("App Icon") { ScrollView(.horizontal) { HStack { ForEach(AppIcon.allCases, id: \.self) { icon in let isSelected = hostsManager.settings.appIcon == icon ZStack(alignment: .top) { - RoundedRectangle(cornerRadius: 21.5) + RoundedRectangle(cornerRadius: icon.radius + 5) .foregroundStyle(.gray.opacity(0.5)) .opacity(isSelected ? 1 : 0) VStack(spacing: 0) { icon.image .resizable().scaledToFit() - .clipShape(RoundedRectangle(cornerRadius: 16.5)) + .frame(width: 85, height: 85) + .clipShape(RoundedRectangle(cornerRadius: icon.radius)) .padding(5) Text(icon.description).tag(icon) .font(.caption) @@ -207,7 +204,6 @@ struct SettingsView: View { .multilineTextAlignment(.center) } } - .frame(maxWidth: 85, maxHeight: 110) .onTapGesture { withAnimation { hostsManager.settings.appIcon = icon diff --git a/ShhShell/Views/Snippets/AddSnippetView.swift b/ShhShell/Views/Snippets/AddSnippetView.swift index 52e35c3..b47d3db 100644 --- a/ShhShell/Views/Snippets/AddSnippetView.swift +++ b/ShhShell/Views/Snippets/AddSnippetView.swift @@ -34,7 +34,7 @@ struct AddSnippetView: View { TextEditor(text: $content) .autocorrectionDisabled() .textInputAutocapitalization(.never) - .background(.black) +// .background(.black) .clipShape(RoundedRectangle(cornerRadius: 5)) .padding(.bottom) .frame(minHeight: 50)