From 8773254d1144fff5a3dc37d22bdd439022933bd2 Mon Sep 17 00:00:00 2001 From: Alan Wizemann Date: Mon, 20 Apr 2026 19:27:55 -0700 Subject: [PATCH] chore: accept safe parts of Xcode recommended-settings migration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xcode 26.x suggested an upgrade pass that included a critical regression: ENABLE_APP_SANDBOX = YES on the main app, which would silently break every view that reads ~/.hermes/ (state.db, config.yaml, memory files, skills, logs). Scarf is architected sandbox-off per CLAUDE.md — reverted. Kept the benign pieces: - DEAD_CODE_STRIPPING = YES on all targets (stock modern optimization) - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES at project level — static analyzer warning for un-localizable call sites; directly relevant to the i18n work in 2.1.0 and will flag regressions of the exact patterns just cleaned up - STRING_CATALOG_GENERATE_SYMBOLS = YES hoisted to project level (was already set at target level; hoisting is a no-op functional change but Xcode prefers it inherited) - Scheme file LastUpgradeVersion bumped to 2620 to match current Xcode Rejected: - ENABLE_APP_SANDBOX = YES (critical — would break app file access) - ENABLE_RESOURCE_ACCESS_AUDIO_INPUT / RUNTIME_EXCEPTION_DISABLE_LIBRARY_VALIDATION build settings (Xcode's new form replacing the entitlements file; keeping the entitlements file as the single source of truth since every release 1.x → 2.1.0 shipped and notarized with that form) - LastUpgradeCheck = 2620 (Xcode dropped 2630 → 2620; cosmetic revert) v2.1.0 was released before this Xcode pass so no rebuild needed — the downloaded zips and Sparkle appcast entry are unaffected. Co-Authored-By: Claude Opus 4.7 (1M context) --- scarf/scarf.xcodeproj/project.pbxproj | 12 ++++++++++++ .../xcshareddata/xcschemes/scarf.xcscheme | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/scarf/scarf.xcodeproj/project.pbxproj b/scarf/scarf.xcodeproj/project.pbxproj index 9a41b4d..c02a4fb 100644 --- a/scarf/scarf.xcodeproj/project.pbxproj +++ b/scarf/scarf.xcodeproj/project.pbxproj @@ -306,6 +306,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -335,6 +336,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 3Q6X2L86C4; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -360,6 +362,7 @@ MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; + STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; @@ -370,6 +373,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -399,6 +403,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 3Q6X2L86C4; ENABLE_NS_ASSERTIONS = NO; @@ -417,6 +422,7 @@ MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; + STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_COMPILATION_MODE = wholemodule; }; name = Release; @@ -431,6 +437,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 22; + DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 3Q6X2L86C4; ENABLE_APP_SANDBOX = NO; ENABLE_HARDENED_RUNTIME = YES; @@ -465,6 +472,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 22; + DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 3Q6X2L86C4; ENABLE_APP_SANDBOX = NO; ENABLE_HARDENED_RUNTIME = YES; @@ -495,6 +503,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 22; + DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 3Q6X2L86C4; GENERATE_INFOPLIST_FILE = YES; MACOSX_DEPLOYMENT_TARGET = 26.2; @@ -516,6 +525,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 22; + DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 3Q6X2L86C4; GENERATE_INFOPLIST_FILE = YES; MACOSX_DEPLOYMENT_TARGET = 26.2; @@ -536,6 +546,7 @@ buildSettings = { CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 22; + DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 3Q6X2L86C4; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 2.1.0; @@ -555,6 +566,7 @@ buildSettings = { CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 22; + DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 3Q6X2L86C4; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 2.1.0; diff --git a/scarf/scarf.xcodeproj/xcshareddata/xcschemes/scarf.xcscheme b/scarf/scarf.xcodeproj/xcshareddata/xcschemes/scarf.xcscheme index e46cbae..fe1a2c5 100644 --- a/scarf/scarf.xcodeproj/xcshareddata/xcschemes/scarf.xcscheme +++ b/scarf/scarf.xcodeproj/xcshareddata/xcschemes/scarf.xcscheme @@ -1,6 +1,6 @@