From 072c23857cdc0e5f5618765a5a6fa8d5b7db9059 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 11 Dec 2025 17:47:58 -0500 Subject: [PATCH 1/4] Allow Xcode to migrate entitlements, etc. --- .../Mac/Clock Signal.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcschemes/Clock Signal Kiosk.xcscheme | 2 +- .../xcshareddata/xcschemes/Clock Signal.xcscheme | 2 +- .../xcschemes/Clock SignalTests.xcscheme | 2 +- .../Mac/Clock Signal/Clock Signal.entitlements | 13 +------------ 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index 99fc54216..eeb7c1395 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -5712,7 +5712,7 @@ attributes = { BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 1630; + LastUpgradeCheck = 2610; ORGANIZATIONNAME = "Thomas Harte"; TargetAttributes = { 4B055A691FAE763F0060FFFF = { @@ -7256,6 +7256,7 @@ DEVELOPMENT_TEAM = DV3346VVUN; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -7277,6 +7278,7 @@ MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; + STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; @@ -7318,6 +7320,7 @@ DEVELOPMENT_TEAM = DV3346VVUN; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -7331,6 +7334,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_FAST_MATH = YES; SDKROOT = macosx; + STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; @@ -7357,7 +7361,11 @@ CODE_SIGN_STYLE = Automatic; DEAD_CODE_STRIPPING = YES; ENABLE_APP_SANDBOX = YES; + ENABLE_FILE_ACCESS_PICTURE_FOLDER = readwrite; ENABLE_HARDENED_RUNTIME = YES; + ENABLE_RESOURCE_ACCESS_BLUETOOTH = YES; + ENABLE_RESOURCE_ACCESS_USB = YES; + ENABLE_USER_SELECTED_FILES = readwrite; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; @@ -7405,7 +7413,11 @@ CODE_SIGN_STYLE = Automatic; DEAD_CODE_STRIPPING = YES; ENABLE_APP_SANDBOX = YES; + ENABLE_FILE_ACCESS_PICTURE_FOLDER = readwrite; ENABLE_HARDENED_RUNTIME = YES; + ENABLE_RESOURCE_ACCESS_BLUETOOTH = YES; + ENABLE_RESOURCE_ACCESS_USB = YES; + ENABLE_USER_SELECTED_FILES = readwrite; GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1"; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme index 5ef5cd72f..6cd05ebd2 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme +++ b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme @@ -1,6 +1,6 @@ - - com.apple.security.app-sandbox - - com.apple.security.assets.pictures.read-write - - com.apple.security.device.bluetooth - - com.apple.security.device.usb - - com.apple.security.files.user-selected.read-write - - + From fd33ee0e09b54747a103d497f2b1d4113021adb3 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 11 Dec 2025 17:53:16 -0500 Subject: [PATCH 2/4] Resolve implicit conversion error. --- Machines/Enterprise/Enterprise.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Machines/Enterprise/Enterprise.cpp b/Machines/Enterprise/Enterprise.cpp index eceecd03d..b04ec20ae 100644 --- a/Machines/Enterprise/Enterprise.cpp +++ b/Machines/Enterprise/Enterprise.cpp @@ -642,7 +642,7 @@ private: /// @returns A pointer to the start of the RAM segment representing @c page if any; otherwise @c nullptr. uint8_t *ram_segment(const uint8_t page) { if(page < MinRAMSlot) return nullptr; - return &ram_[(page - MinRAMSlot) << 14]; + return &ram_[size_t((page - MinRAMSlot) << 14)]; } struct ROMPage { From 378321d6f275e2bf3e4bf2fba52dcc9312630a5c Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 11 Dec 2025 17:57:44 -0500 Subject: [PATCH 3/4] Resolve analyser warning re: unnecessary update. --- InstructionSets/M50740/Decoder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InstructionSets/M50740/Decoder.cpp b/InstructionSets/M50740/Decoder.cpp index 06e7e7323..d8f250329 100644 --- a/InstructionSets/M50740/Decoder.cpp +++ b/InstructionSets/M50740/Decoder.cpp @@ -258,7 +258,7 @@ std::pair Decoder::decode(const uint8_ const int bytes_to_consume = std::min(int(end - source), outstanding_bytes); consumed_ += bytes_to_consume; - source += bytes_to_consume; + /* source += bytes_to_consume; */ operand_bytes_ += bytes_to_consume; if(operand_size_ == operand_bytes_) { From a0b69e14b7165f0c81069318dc20810417aa7ca0 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 11 Dec 2025 17:57:59 -0500 Subject: [PATCH 4/4] Allow for localisation. --- .../Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm index 9e73a1b5d..1c4f7d496 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm @@ -93,13 +93,15 @@ struct PermissionDelegate: public Storage::FileBundle::FileBundle::PermissionDel // Ask the user for permission. dispatch_sync(dispatch_get_main_queue(), ^{ NSOpenPanel *request = [NSOpenPanel openPanel]; - request.prompt = @"Grant Permission"; - request.message = @"Please Grant Permission For Full Folder Access"; + request.prompt = NSLocalizedString(@"Grant Permission", @""); + request.message = NSLocalizedString(@"Please Grant Permission For Full Folder Access", @""); request.canChooseFiles = NO; request.allowsMultipleSelection = NO; request.canChooseDirectories = YES; [request setDirectoryURL:[url URLByDeletingLastPathComponent]]; + // TODO: a nicer accessory view; NSTextField or the relevant equivalent + // with an attributed string might work. request.accessoryView = [NSTextField labelWithString:[&] { const auto key_file = bundle.key_file();