diff --git a/Neon Vision Editor.xcodeproj/project.pbxproj b/Neon Vision Editor.xcodeproj/project.pbxproj index 0ea2805..0273c26 100644 --- a/Neon Vision Editor.xcodeproj/project.pbxproj +++ b/Neon Vision Editor.xcodeproj/project.pbxproj @@ -358,7 +358,7 @@ CODE_SIGNING_ALLOWED = YES; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 272; + CURRENT_PROJECT_VERSION = 273; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = CS727NF72U; ENABLE_APP_SANDBOX = YES; @@ -439,7 +439,7 @@ CODE_SIGNING_ALLOWED = YES; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 272; + CURRENT_PROJECT_VERSION = 273; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = CS727NF72U; ENABLE_APP_SANDBOX = YES; diff --git a/Neon Vision Editor/Resources/AppIcon.icon/Assets/Angle Brackets 2.svg b/Neon Vision Editor/Resources/AppIcon.icon/Assets/Angle Brackets 2.svg new file mode 100644 index 0000000..e44fc33 --- /dev/null +++ b/Neon Vision Editor/Resources/AppIcon.icon/Assets/Angle Brackets 2.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Neon Vision Editor/Resources/AppIcon.icon/Assets/Pencil 2.svg b/Neon Vision Editor/Resources/AppIcon.icon/Assets/Pencil 2.svg new file mode 100644 index 0000000..7b1ec23 --- /dev/null +++ b/Neon Vision Editor/Resources/AppIcon.icon/Assets/Pencil 2.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Neon Vision Editor/Resources/AppIcon.icon/Assets/foreground.png b/Neon Vision Editor/Resources/AppIcon.icon/Assets/foreground.png deleted file mode 100644 index f3a230e..0000000 Binary files a/Neon Vision Editor/Resources/AppIcon.icon/Assets/foreground.png and /dev/null differ diff --git a/Neon Vision Editor/Resources/AppIcon.icon/icon.json b/Neon Vision Editor/Resources/AppIcon.icon/icon.json index 2e3cb88..79d5e0a 100644 --- a/Neon Vision Editor/Resources/AppIcon.icon/icon.json +++ b/Neon Vision Editor/Resources/AppIcon.icon/icon.json @@ -20,50 +20,55 @@ }, { "appearance" : "dark", - "value" : { - "linear-gradient" : [ - "srgb:0.10980,0.10980,0.11765,1.00000", - "srgb:0.10980,0.10980,0.11765,1.00000" - ], - "orientation" : { - "start" : { - "x" : 0.5, - "y" : 0 - }, - "stop" : { - "x" : 0.5, - "y" : 0.7 - } - } - } + "value" : "system-dark" } ], "groups" : [ { - "blur-material" : null, + "hidden" : false, "layers" : [ { - "blend-mode" : "darken", - "fill" : "none", - "hidden" : false, - "image-name" : "foreground.png", - "name" : "foreground", - "position" : { - "scale" : 1.38, - "translation-in-points" : [ - 0, - -5 - ] - } + "image-name" : "Pencil 2.svg", + "name" : "Pencil" } ], - "lighting" : "individual", - "opacity" : 1, + "name" : "Pencil", + "position" : { + "scale" : 1.05, + "translation-in-points" : [ + 0, + 0 + ] + }, "shadow" : { - "kind" : "layer-color", + "kind" : "neutral", + "opacity" : 0.5 + }, + "translucency" : { + "enabled" : true, + "value" : 0.25 + } + }, + { + "hidden" : false, + "layers" : [ + { + "image-name" : "Angle Brackets 2.svg", + "name" : "Angle Brackets" + } + ], + "name" : "Angle Brackets", + "position" : { + "scale" : 1.05, + "translation-in-points" : [ + 0, + 0 + ] + }, + "shadow" : { + "kind" : "neutral", "opacity" : 0.5 }, - "specular" : true, "translucency" : { "enabled" : true, "value" : 0.5 @@ -76,4 +81,4 @@ ], "squares" : "shared" } -} +} \ No newline at end of file diff --git a/Neon Vision Editor/UI/ContentView.swift b/Neon Vision Editor/UI/ContentView.swift index 25b52bc..a2c58a5 100644 --- a/Neon Vision Editor/UI/ContentView.swift +++ b/Neon Vision Editor/UI/ContentView.swift @@ -135,6 +135,12 @@ struct ContentView: View { @State var droppedFileLoadProgress: Double = 0 @State var droppedFileLoadLabel: String = "" @State var largeFileModeEnabled: Bool = false +#if os(iOS) + @AppStorage("SettingsForceLargeFileMode") var forceLargeFileMode: Bool = false + @AppStorage("SettingsShowKeyboardAccessoryBarIOS") var showKeyboardAccessoryBarIOS: Bool = true + @AppStorage("SettingsShowBottomActionBarIOS") var showBottomActionBarIOS: Bool = true + @AppStorage("SettingsUseLiquidGlassToolbarIOS") var shouldUseLiquidGlass: Bool = true +#endif @AppStorage("HasSeenWelcomeTourV1") var hasSeenWelcomeTourV1: Bool = false @AppStorage("WelcomeTourSeenRelease") var welcomeTourSeenRelease: String = "" @State var showWelcomeTour: Bool = false @@ -157,6 +163,11 @@ struct ContentView: View { var activeProviderName: String { lastProviderUsed } #if os(macOS) private let bracketHelperTokens: [String] = ["(", ")", "{", "}", "[", "]", "<", ">", "'", "\"", "`", "()", "{}", "[]", "\"\"", "''"] +#elseif os(iOS) + var primaryGlassMaterial: Material { .ultraThinMaterial } + var toolbarFallbackColor: Color { Color(.systemBackground) } + var toolbarDensityScale: CGFloat { 1.0 } + var toolbarDensityOpacity: Double { 1.0 } #endif var selectedModel: AIModel { @@ -1096,14 +1107,24 @@ struct ContentView: View { } } - private func updateLargeFileMode(for text: String) { + func updateLargeFileMode(for text: String) { +#if os(iOS) + let isLarge = forceLargeFileMode || text.utf8.count >= 2_000_000 +#else let isLarge = text.utf8.count >= 2_000_000 +#endif if largeFileModeEnabled != isLarge { largeFileModeEnabled = isLarge scheduleHighlightRefresh() } } + func recordDiagnostic(_ message: String) { +#if DEBUG + print("[NVE] \(message)") +#endif + } + func adjustEditorFontSize(_ delta: Double) { let clamped = min(28, max(10, editorFontSize + delta)) if clamped != editorFontSize {