From 9ac7327691996fc36a4bb572e8270fab311ba6c4 Mon Sep 17 00:00:00 2001 From: David Ralph Date: Fri, 2 Jan 2026 23:04:29 +0000 Subject: [PATCH] feat: safari support (wip) --- safari/Mue Extension/Info.plist | 13 + safari/Mue Extension/Resources/manifest.json | 26 + .../SafariWebExtensionHandler.swift | 42 ++ safari/Mue.xcodeproj/project.pbxproj | 539 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + safari/Mue/AppDelegate.swift | 21 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 58 ++ safari/Mue/Assets.xcassets/Contents.json | 6 + .../LargeIcon.imageset/Contents.json | 20 + safari/Mue/Base.lproj/Main.storyboard | 124 ++++ safari/Mue/Resources/Base.lproj/Main.html | 19 + safari/Mue/Resources/Icon.png | Bin 0 -> 100020 bytes safari/Mue/Resources/Script.js | 22 + safari/Mue/Resources/Style.css | 45 ++ safari/Mue/ViewController.swift | 57 ++ vite.config.mjs | 44 ++ 17 files changed, 1054 insertions(+) create mode 100644 safari/Mue Extension/Info.plist create mode 100644 safari/Mue Extension/Resources/manifest.json create mode 100644 safari/Mue Extension/SafariWebExtensionHandler.swift create mode 100644 safari/Mue.xcodeproj/project.pbxproj create mode 100644 safari/Mue.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 safari/Mue/AppDelegate.swift create mode 100644 safari/Mue/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 safari/Mue/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 safari/Mue/Assets.xcassets/Contents.json create mode 100644 safari/Mue/Assets.xcassets/LargeIcon.imageset/Contents.json create mode 100644 safari/Mue/Base.lproj/Main.storyboard create mode 100644 safari/Mue/Resources/Base.lproj/Main.html create mode 100644 safari/Mue/Resources/Icon.png create mode 100644 safari/Mue/Resources/Script.js create mode 100644 safari/Mue/Resources/Style.css create mode 100644 safari/Mue/ViewController.swift diff --git a/safari/Mue Extension/Info.plist b/safari/Mue Extension/Info.plist new file mode 100644 index 00000000..9ee504dc --- /dev/null +++ b/safari/Mue Extension/Info.plist @@ -0,0 +1,13 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.Safari.web-extension + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).SafariWebExtensionHandler + + + diff --git a/safari/Mue Extension/Resources/manifest.json b/safari/Mue Extension/Resources/manifest.json new file mode 100644 index 00000000..76385fc6 --- /dev/null +++ b/safari/Mue Extension/Resources/manifest.json @@ -0,0 +1,26 @@ +{ + "manifest_version": 3, + "offline_enabled": true, + "default_locale": "en", + "name": "__MSG_name__", + "description": "__MSG_description__", + "version": "7.1.2", + "homepage_url": "https://muetab.com", + "permissions": ["search"], + "action": { + "default_icon": "icons/128x128.png" + }, + "chrome_url_overrides": { + "newtab": "index.html" + }, + "icons": { + "16": "icons/16x16.png", + "48": "icons/48x48.png", + "128": "icons/128x128.png" + }, + "background": { + "scripts": ["background.js"], + "type": "module", + "persistent": false + } +} diff --git a/safari/Mue Extension/SafariWebExtensionHandler.swift b/safari/Mue Extension/SafariWebExtensionHandler.swift new file mode 100644 index 00000000..75eeb38c --- /dev/null +++ b/safari/Mue Extension/SafariWebExtensionHandler.swift @@ -0,0 +1,42 @@ +// +// SafariWebExtensionHandler.swift +// Mue Extension +// +// Created by David Ralph on 02/01/2026. +// + +import SafariServices +import os.log + +class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { + + func beginRequest(with context: NSExtensionContext) { + let request = context.inputItems.first as? NSExtensionItem + + let profile: UUID? + if #available(iOS 17.0, macOS 14.0, *) { + profile = request?.userInfo?[SFExtensionProfileKey] as? UUID + } else { + profile = request?.userInfo?["profile"] as? UUID + } + + let message: Any? + if #available(iOS 15.0, macOS 11.0, *) { + message = request?.userInfo?[SFExtensionMessageKey] + } else { + message = request?.userInfo?["message"] + } + + os_log(.default, "Received message from browser.runtime.sendNativeMessage: %@ (profile: %@)", String(describing: message), profile?.uuidString ?? "none") + + let response = NSExtensionItem() + if #available(iOS 15.0, macOS 11.0, *) { + response.userInfo = [ SFExtensionMessageKey: [ "echo": message ] ] + } else { + response.userInfo = [ "message": [ "echo": message ] ] + } + + context.completeRequest(returningItems: [ response ], completionHandler: nil) + } + +} diff --git a/safari/Mue.xcodeproj/project.pbxproj b/safari/Mue.xcodeproj/project.pbxproj new file mode 100644 index 00000000..41e3e149 --- /dev/null +++ b/safari/Mue.xcodeproj/project.pbxproj @@ -0,0 +1,539 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXBuildFile section */ + 6373522A2F087B5E002EF039 /* Mue Extension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 637352292F087B5E002EF039 /* Mue Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6373522B2F087B5E002EF039 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 637352072F087B5D002EF039 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 637352282F087B5E002EF039; + remoteInfo = "Mue Extension"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 637352482F087B5E002EF039 /* Embed Foundation Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 6373522A2F087B5E002EF039 /* Mue Extension.appex in Embed Foundation Extensions */, + ); + name = "Embed Foundation Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 6373520F2F087B5D002EF039 /* Mue.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Mue.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 637352292F087B5E002EF039 /* Mue Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Mue Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + 637352422F087B5E002EF039 /* Exceptions for "Mue Extension" folder in "Mue Extension" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = 637352282F087B5E002EF039 /* Mue Extension */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 637352112F087B5D002EF039 /* Mue */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = Mue; + sourceTree = ""; + }; + 6373522D2F087B5E002EF039 /* Mue Extension */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + 637352422F087B5E002EF039 /* Exceptions for "Mue Extension" folder in "Mue Extension" target */, + ); + explicitFolders = ( + Resources/_locales, + Resources/icons, + Resources/assets, + Resources/src, + ); + path = "Mue Extension"; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6373520C2F087B5D002EF039 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 637352262F087B5E002EF039 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 637352062F087B5D002EF039 = { + isa = PBXGroup; + children = ( + 637352112F087B5D002EF039 /* Mue */, + 6373522D2F087B5E002EF039 /* Mue Extension */, + 637352102F087B5D002EF039 /* Products */, + ); + sourceTree = ""; + }; + 637352102F087B5D002EF039 /* Products */ = { + isa = PBXGroup; + children = ( + 6373520F2F087B5D002EF039 /* Mue.app */, + 637352292F087B5E002EF039 /* Mue Extension.appex */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6373520E2F087B5D002EF039 /* Mue */ = { + isa = PBXNativeTarget; + buildConfigurationList = 637352492F087B5E002EF039 /* Build configuration list for PBXNativeTarget "Mue" */; + buildPhases = ( + 6373520B2F087B5D002EF039 /* Sources */, + 6373520C2F087B5D002EF039 /* Frameworks */, + 6373520D2F087B5D002EF039 /* Resources */, + 637352482F087B5E002EF039 /* Embed Foundation Extensions */, + ); + buildRules = ( + ); + dependencies = ( + 6373522C2F087B5E002EF039 /* PBXTargetDependency */, + ); + fileSystemSynchronizedGroups = ( + 637352112F087B5D002EF039 /* Mue */, + ); + name = Mue; + packageProductDependencies = ( + ); + productName = Mue; + productReference = 6373520F2F087B5D002EF039 /* Mue.app */; + productType = "com.apple.product-type.application"; + }; + 637352282F087B5E002EF039 /* Mue Extension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 637352432F087B5E002EF039 /* Build configuration list for PBXNativeTarget "Mue Extension" */; + buildPhases = ( + 637352252F087B5E002EF039 /* Sources */, + 637352262F087B5E002EF039 /* Frameworks */, + 637352272F087B5E002EF039 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + 6373522D2F087B5E002EF039 /* Mue Extension */, + ); + name = "Mue Extension"; + packageProductDependencies = ( + ); + productName = "Mue Extension"; + productReference = 637352292F087B5E002EF039 /* Mue Extension.appex */; + productType = "com.apple.product-type.app-extension"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 637352072F087B5D002EF039 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 2620; + LastUpgradeCheck = 2620; + TargetAttributes = { + 6373520E2F087B5D002EF039 = { + CreatedOnToolsVersion = 26.2; + }; + 637352282F087B5E002EF039 = { + CreatedOnToolsVersion = 26.2; + }; + }; + }; + buildConfigurationList = 6373520A2F087B5D002EF039 /* Build configuration list for PBXProject "Mue" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 637352062F087B5D002EF039; + minimizedProjectReferenceProxies = 1; + preferredProjectObjectVersion = 77; + productRefGroup = 637352102F087B5D002EF039 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 6373520E2F087B5D002EF039 /* Mue */, + 637352282F087B5E002EF039 /* Mue Extension */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 6373520D2F087B5D002EF039 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 637352272F087B5E002EF039 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 6373520B2F087B5D002EF039 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 637352252F087B5E002EF039 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 6373522C2F087B5E002EF039 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 637352282F087B5E002EF039 /* Mue Extension */; + targetProxy = 6373522B2F087B5E002EF039 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 637352442F087B5E002EF039 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + ENABLE_APP_SANDBOX = YES; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_USER_SELECTED_FILES = readonly; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "Mue Extension/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "Mue Extension"; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "-framework", + SafariServices, + ); + PRODUCT_BUNDLE_IDENTIFIER = mueauthors.mue.Extension; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 637352452F087B5E002EF039 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + ENABLE_APP_SANDBOX = YES; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_USER_SELECTED_FILES = readonly; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "Mue Extension/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "Mue Extension"; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "-framework", + SafariServices, + ); + PRODUCT_BUNDLE_IDENTIFIER = mueauthors.mue.Extension; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 637352462F087B5E002EF039 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 26.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 637352472F087B5E002EF039 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 26.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + }; + name = Release; + }; + 6373524A2F087B5E002EF039 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + ENABLE_APP_SANDBOX = YES; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES; + ENABLE_USER_SELECTED_FILES = readonly; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleDisplayName = Mue; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INFOPLIST_KEY_NSMainStoryboardFile = Main; + INFOPLIST_KEY_NSPrincipalClass = NSApplication; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "-framework", + SafariServices, + "-framework", + WebKit, + ); + PRODUCT_BUNDLE_IDENTIFIER = mueauthors.mue; + PRODUCT_NAME = "$(TARGET_NAME)"; + REGISTER_APP_GROUPS = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 6373524B2F087B5E002EF039 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + ENABLE_APP_SANDBOX = YES; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES; + ENABLE_USER_SELECTED_FILES = readonly; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleDisplayName = Mue; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INFOPLIST_KEY_NSMainStoryboardFile = Main; + INFOPLIST_KEY_NSPrincipalClass = NSApplication; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "-framework", + SafariServices, + "-framework", + WebKit, + ); + PRODUCT_BUNDLE_IDENTIFIER = mueauthors.mue; + PRODUCT_NAME = "$(TARGET_NAME)"; + REGISTER_APP_GROUPS = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6373520A2F087B5D002EF039 /* Build configuration list for PBXProject "Mue" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 637352462F087B5E002EF039 /* Debug */, + 637352472F087B5E002EF039 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 637352432F087B5E002EF039 /* Build configuration list for PBXNativeTarget "Mue Extension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 637352442F087B5E002EF039 /* Debug */, + 637352452F087B5E002EF039 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 637352492F087B5E002EF039 /* Build configuration list for PBXNativeTarget "Mue" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6373524A2F087B5E002EF039 /* Debug */, + 6373524B2F087B5E002EF039 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 637352072F087B5D002EF039 /* Project object */; +} diff --git a/safari/Mue.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/safari/Mue.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/safari/Mue.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/safari/Mue/AppDelegate.swift b/safari/Mue/AppDelegate.swift new file mode 100644 index 00000000..1f8f65ed --- /dev/null +++ b/safari/Mue/AppDelegate.swift @@ -0,0 +1,21 @@ +// +// AppDelegate.swift +// Mue +// +// Created by David Ralph on 02/01/2026. +// + +import Cocoa + +@main +class AppDelegate: NSObject, NSApplicationDelegate { + + func applicationDidFinishLaunching(_ notification: Notification) { + // Override point for customization after application launch. + } + + func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + +} diff --git a/safari/Mue/Assets.xcassets/AccentColor.colorset/Contents.json b/safari/Mue/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/safari/Mue/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/safari/Mue/Assets.xcassets/AppIcon.appiconset/Contents.json b/safari/Mue/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..3f00db43 --- /dev/null +++ b/safari/Mue/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/safari/Mue/Assets.xcassets/Contents.json b/safari/Mue/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/safari/Mue/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/safari/Mue/Assets.xcassets/LargeIcon.imageset/Contents.json b/safari/Mue/Assets.xcassets/LargeIcon.imageset/Contents.json new file mode 100644 index 00000000..a19a5492 --- /dev/null +++ b/safari/Mue/Assets.xcassets/LargeIcon.imageset/Contents.json @@ -0,0 +1,20 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/safari/Mue/Base.lproj/Main.storyboard b/safari/Mue/Base.lproj/Main.storyboard new file mode 100644 index 00000000..bfe40da2 --- /dev/null +++ b/safari/Mue/Base.lproj/Main.storyboard @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/safari/Mue/Resources/Base.lproj/Main.html b/safari/Mue/Resources/Base.lproj/Main.html new file mode 100644 index 00000000..129e2774 --- /dev/null +++ b/safari/Mue/Resources/Base.lproj/Main.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + Mue Icon +

You can turn on Mue’s extension in Safari Extensions preferences.

+

Mue’s extension is currently on. You can turn it off in Safari Extensions preferences.

+

Mue’s extension is currently off. You can turn it on in Safari Extensions preferences.

+ + + diff --git a/safari/Mue/Resources/Icon.png b/safari/Mue/Resources/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..423b491de9f0c035d4c9d7736c535bebfe078c8e GIT binary patch literal 100020 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 V_?Dz(4+H(D^+fM+=_BiR{|z2&Zv_AV literal 0 HcmV?d00001 diff --git a/safari/Mue/Resources/Script.js b/safari/Mue/Resources/Script.js new file mode 100644 index 00000000..d7e0ff8e --- /dev/null +++ b/safari/Mue/Resources/Script.js @@ -0,0 +1,22 @@ +function show(enabled, useSettingsInsteadOfPreferences) { + if (useSettingsInsteadOfPreferences) { + document.getElementsByClassName('state-on')[0].innerText = "Mue’s extension is currently on. You can turn it off in the Extensions section of Safari Settings."; + document.getElementsByClassName('state-off')[0].innerText = "Mue’s extension is currently off. You can turn it on in the Extensions section of Safari Settings."; + document.getElementsByClassName('state-unknown')[0].innerText = "You can turn on Mue’s extension in the Extensions section of Safari Settings."; + document.getElementsByClassName('open-preferences')[0].innerText = "Quit and Open Safari Settings…"; + } + + if (typeof enabled === "boolean") { + document.body.classList.toggle(`state-on`, enabled); + document.body.classList.toggle(`state-off`, !enabled); + } else { + document.body.classList.remove(`state-on`); + document.body.classList.remove(`state-off`); + } +} + +function openPreferences() { + webkit.messageHandlers.controller.postMessage("open-preferences"); +} + +document.querySelector("button.open-preferences").addEventListener("click", openPreferences); diff --git a/safari/Mue/Resources/Style.css b/safari/Mue/Resources/Style.css new file mode 100644 index 00000000..cbde9e69 --- /dev/null +++ b/safari/Mue/Resources/Style.css @@ -0,0 +1,45 @@ +* { + -webkit-user-select: none; + -webkit-user-drag: none; + cursor: default; +} + +:root { + color-scheme: light dark; + + --spacing: 20px; +} + +html { + height: 100%; +} + +body { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + + gap: var(--spacing); + margin: 0 calc(var(--spacing) * 2); + height: 100%; + + font: -apple-system-short-body; + text-align: center; +} + +body:not(.state-on, .state-off) :is(.state-on, .state-off) { + display: none; +} + +body.state-on :is(.state-off, .state-unknown) { + display: none; +} + +body.state-off :is(.state-on, .state-unknown) { + display: none; +} + +button { + font-size: 1em; +} diff --git a/safari/Mue/ViewController.swift b/safari/Mue/ViewController.swift new file mode 100644 index 00000000..ea6b1403 --- /dev/null +++ b/safari/Mue/ViewController.swift @@ -0,0 +1,57 @@ +// +// ViewController.swift +// Mue +// +// Created by David Ralph on 02/01/2026. +// + +import Cocoa +import SafariServices +import WebKit + +let extensionBundleIdentifier = "mueauthors.Mue.Extension" + +class ViewController: NSViewController, WKNavigationDelegate, WKScriptMessageHandler { + + @IBOutlet var webView: WKWebView! + + override func viewDidLoad() { + super.viewDidLoad() + + self.webView.navigationDelegate = self + + self.webView.configuration.userContentController.add(self, name: "controller") + + self.webView.loadFileURL(Bundle.main.url(forResource: "Main", withExtension: "html")!, allowingReadAccessTo: Bundle.main.resourceURL!) + } + + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { + SFSafariExtensionManager.getStateOfSafariExtension(withIdentifier: extensionBundleIdentifier) { (state, error) in + guard let state = state, error == nil else { + // Insert code to inform the user that something went wrong. + return + } + + DispatchQueue.main.async { + if #available(macOS 13, *) { + webView.evaluateJavaScript("show(\(state.isEnabled), true)") + } else { + webView.evaluateJavaScript("show(\(state.isEnabled), false)") + } + } + } + } + + func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { + if (message.body as! String != "open-preferences") { + return; + } + + SFSafariApplication.showPreferencesForExtension(withIdentifier: extensionBundleIdentifier) { error in + DispatchQueue.main.async { + NSApplication.shared.terminate(nil) + } + } + } + +} diff --git a/vite.config.mjs b/vite.config.mjs index e4de6be3..0044f6dd 100644 --- a/vite.config.mjs +++ b/vite.config.mjs @@ -70,6 +70,50 @@ const prepareBuilds = () => ({ { recursive: true }, ); + // safari + const safariResourcesPath = path.resolve(__dirname, './safari/Mue Extension/Resources'); + fs.mkdirSync(safariResourcesPath, { recursive: true }); + + // Copy manifest (already exists in Resources, but ensure it's updated) + // The manifest.json is managed separately for Safari + + // Copy background.js + fs.copyFileSync( + path.resolve(__dirname, './manifest/background.js'), + path.resolve(safariResourcesPath, 'background.js'), + ); + + // Copy built files from dist + fs.cpSync(path.resolve(__dirname, './dist'), safariResourcesPath, { + recursive: true, + filter: (src) => { + // Don't overwrite the manifest.json we've already set up + return !src.endsWith('manifest.json'); + }, + }); + + // Copy icons + fs.cpSync( + path.resolve(__dirname, './src/assets/icons'), + path.resolve(safariResourcesPath, 'icons'), + { recursive: true }, + ); + + // Copy src/assets + fs.mkdirSync(path.resolve(safariResourcesPath, 'src/assets'), { recursive: true }); + fs.cpSync( + path.resolve(__dirname, './src/assets'), + path.resolve(safariResourcesPath, 'src/assets'), + { recursive: true }, + ); + + // Copy locales + fs.cpSync( + path.resolve(__dirname, './manifest/_locales'), + path.resolve(safariResourcesPath, '_locales'), + { recursive: true }, + ); + // create zip const zip = new ADMZip(); zip.addLocalFolder(path.resolve(__dirname, './build/chrome'));