oficina / sheets Public

Prepare sandboxed Mac and iOS TestFlight packaging

Paul Campbell pushed by codex agent, operated by paul@keymail.dev a60a8c124a756520fe3372ac23b4f37ec97721e6 parent f4d9f45
10 files changed, +508 −3
  • native/PrivacyInfo.xcprivacy +17 −0
  • native/apple/Sources/SheetsApp/SheetsApp.swift +5 −3
  • native/ios/Assets.xcassets/AppIcon.appiconset/AppIcon.png binary
  • native/ios/project.yml +4 −0
  • native/macos/AppIcon.icns binary
  • native/macos/AppStore.entitlements +12 −0
  • native/macos/Info.plist +30 −0
  • native/macos/SheetsMacStore.xcodeproj/project.pbxproj +385 −0
  • native/macos/SheetsMacStore.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 −0
  • native/macos/project.yml +48 −0
diff --git a/native/PrivacyInfo.xcprivacy b/native/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000..79bc9e2
--- /dev/null
+++ b/native/PrivacyInfo.xcprivacy
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>NSPrivacyAccessedAPITypes</key>
+ <array>
+ <dict>
+ <key>NSPrivacyAccessedAPIType</key>
+ <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
+ <key>NSPrivacyAccessedAPITypeReasons</key>
+ <array>
+ <string>CA92.1</string>
+ </array>
+ </dict>
+ </array>
+</dict>
+</plist>
diff --git a/native/apple/Sources/SheetsApp/SheetsApp.swift b/native/apple/Sources/SheetsApp/SheetsApp.swift
index d4f32cd..96628e4 100644
--- a/native/apple/Sources/SheetsApp/SheetsApp.swift
+++ b/native/apple/Sources/SheetsApp/SheetsApp.swift
@@ -1,4 +1,4 @@
-#if os(macOS)
+#if os(macOS) && canImport(RastrilloMacUpdates)
import RastrilloMacUpdates
#endif
import RastrilloApple
@@ -6,7 +6,7 @@ import SheetsKit
import SwiftUI
@main struct SheetsApp: App {
- #if os(macOS)
+ #if os(macOS) && canImport(RastrilloMacUpdates)
@State private var updater = NativeUpdater()
#endif
#if os(macOS)
@@ -28,7 +28,9 @@ import SwiftUI
#endif
}
#if os(macOS)
- .commands { NativeUpdateCommands(updater: updater) }
+ #if canImport(RastrilloMacUpdates)
+ .commands { NativeUpdateCommands(updater: updater) }
+ #endif
#endif
}
}
diff --git a/native/ios/Assets.xcassets/AppIcon.appiconset/AppIcon.png b/native/ios/Assets.xcassets/AppIcon.appiconset/AppIcon.png
index ac7e7c9..40f5065 100644
Binary files a/native/ios/Assets.xcassets/AppIcon.appiconset/AppIcon.png and b/native/ios/Assets.xcassets/AppIcon.appiconset/AppIcon.png differ
diff --git a/native/ios/project.yml b/native/ios/project.yml
index 6c6f665..3c993f6 100644
--- a/native/ios/project.yml
+++ b/native/ios/project.yml
@@ -22,6 +22,10 @@ targets:
sources:
- ../apple/Sources/SheetsApp
- Assets.xcassets
+ - path: ../LICENSE.lucide
+ buildPhase: resources
+ - path: ../PrivacyInfo.xcprivacy
+ buildPhase: resources
dependencies:
- package: SheetsNative
product: SheetsKit
diff --git a/native/macos/AppIcon.icns b/native/macos/AppIcon.icns
new file mode 100644
index 0000000..9198a29
Binary files /dev/null and b/native/macos/AppIcon.icns differ
diff --git a/native/macos/AppStore.entitlements b/native/macos/AppStore.entitlements
new file mode 100644
index 0000000..a046386
--- /dev/null
+++ b/native/macos/AppStore.entitlements
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.security.app-sandbox</key>
+ <true/>
+ <key>com.apple.security.files.user-selected.read-write</key>
+ <true/>
+ <key>com.apple.security.network.client</key>
+ <true/>
+</dict>
+</plist>
diff --git a/native/macos/Info.plist b/native/macos/Info.plist
new file mode 100644
index 0000000..2cab40b
--- /dev/null
+++ b/native/macos/Info.plist
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>$(DEVELOPMENT_LANGUAGE)</string>
+ <key>CFBundleDisplayName</key>
+ <string>Oficina Sheets</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIconFile</key>
+ <string>AppIcon</string>
+ <key>CFBundleIdentifier</key>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>Oficina Sheets</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>$(MARKETING_VERSION)</string>
+ <key>CFBundleVersion</key>
+ <string>$(CURRENT_PROJECT_VERSION)</string>
+ <key>LSApplicationCategoryType</key>
+ <string>public.app-category.productivity</string>
+ <key>NSHighResolutionCapable</key>
+ <true/>
+</dict>
+</plist>
diff --git a/native/macos/SheetsMacStore.xcodeproj/project.pbxproj b/native/macos/SheetsMacStore.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..1daea87
--- /dev/null
+++ b/native/macos/SheetsMacStore.xcodeproj/project.pbxproj
@@ -0,0 +1,385 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 77;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 5CC39F6614938AE329384AB8 /* AppIcon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 54261A6D711BA4C90D042C6A /* AppIcon.icns */; };
+ 603E79126E29D73CD628EDED /* LICENSE.lucide in Resources */ = {isa = PBXBuildFile; fileRef = 5AA27588A5A207F206A0F3F6 /* LICENSE.lucide */; };
+ 9C78334F6EDBA092C0D0E169 /* SheetsApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 916E654E0C8D3B86BB58C018 /* SheetsApp.swift */; };
+ B09E36EA52DF0E19FC743C56 /* SheetsKit in Frameworks */ = {isa = PBXBuildFile; productRef = CD52B595B2129268F78A0A8A /* SheetsKit */; };
+ C52F3F48EAE4BD0A51D2BE94 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 8AA0125DF292C29086DFC83E /* PrivacyInfo.xcprivacy */; };
+ DBF0A51B0431713C3FFB89A9 /* RastrilloApple in Frameworks */ = {isa = PBXBuildFile; productRef = 6334833E1C593E852E1F7FD4 /* RastrilloApple */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 12E225ACCFB2785464CCBCB8 /* apple */ = {isa = PBXFileReference; lastKnownFileType = folder; name = apple; path = ../apple; sourceTree = SOURCE_ROOT; };
+ 255C08D1CA0763B1DE054572 /* SheetsMacStore.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SheetsMacStore.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 54261A6D711BA4C90D042C6A /* AppIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = AppIcon.icns; sourceTree = "<group>"; };
+ 5AA27588A5A207F206A0F3F6 /* LICENSE.lucide */ = {isa = PBXFileReference; path = LICENSE.lucide; sourceTree = "<group>"; };
+ 8AA0125DF292C29086DFC83E /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
+ 916E654E0C8D3B86BB58C018 /* SheetsApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SheetsApp.swift; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 5D1F99FAE10817C6F9626A2A /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B09E36EA52DF0E19FC743C56 /* SheetsKit in Frameworks */,
+ DBF0A51B0431713C3FFB89A9 /* RastrilloApple in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 00DE240DA7582B0C0B555805 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 255C08D1CA0763B1DE054572 /* SheetsMacStore.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 31394D7FCB46710873A9926E /* native */ = {
+ isa = PBXGroup;
+ children = (
+ 5AA27588A5A207F206A0F3F6 /* LICENSE.lucide */,
+ 8AA0125DF292C29086DFC83E /* PrivacyInfo.xcprivacy */,
+ );
+ name = native;
+ path = ..;
+ sourceTree = "<group>";
+ };
+ 6581DFA207E84F766998E653 /* Packages */ = {
+ isa = PBXGroup;
+ children = (
+ 12E225ACCFB2785464CCBCB8 /* apple */,
+ );
+ name = Packages;
+ sourceTree = "<group>";
+ };
+ B8C7D78FF3DFFC221BBB89D3 /* SheetsApp */ = {
+ isa = PBXGroup;
+ children = (
+ 916E654E0C8D3B86BB58C018 /* SheetsApp.swift */,
+ );
+ name = SheetsApp;
+ path = ../apple/Sources/SheetsApp;
+ sourceTree = "<group>";
+ };
+ E5EC2C9789E2CB25A2EF75DC = {
+ isa = PBXGroup;
+ children = (
+ 54261A6D711BA4C90D042C6A /* AppIcon.icns */,
+ 31394D7FCB46710873A9926E /* native */,
+ 6581DFA207E84F766998E653 /* Packages */,
+ B8C7D78FF3DFFC221BBB89D3 /* SheetsApp */,
+ 00DE240DA7582B0C0B555805 /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ BBF71CE12A169C15448DFE17 /* SheetsMacStore */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = CA4EB5575C1FF80222F682F0 /* Build configuration list for PBXNativeTarget "SheetsMacStore" */;
+ buildPhases = (
+ 234C25F498941E102ED36418 /* Sources */,
+ 8EFEC10D961D3B57455AE206 /* Resources */,
+ 5D1F99FAE10817C6F9626A2A /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SheetsMacStore;
+ packageProductDependencies = (
+ CD52B595B2129268F78A0A8A /* SheetsKit */,
+ 6334833E1C593E852E1F7FD4 /* RastrilloApple */,
+ );
+ productName = SheetsMacStore;
+ productReference = 255C08D1CA0763B1DE054572 /* SheetsMacStore.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ A3F5B33CA29DABC65807207B /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ BuildIndependentTargetsInParallel = YES;
+ LastUpgradeCheck = 1430;
+ TargetAttributes = {
+ BBF71CE12A169C15448DFE17 = {
+ ProvisioningStyle = Automatic;
+ };
+ };
+ };
+ buildConfigurationList = 594CF8F18C652F85BD0F8E62 /* Build configuration list for PBXProject "SheetsMacStore" */;
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ Base,
+ en,
+ );
+ mainGroup = E5EC2C9789E2CB25A2EF75DC;
+ minimizedProjectReferenceProxies = 1;
+ packageReferences = (
+ BA0E7C8C83BC0368D29C5E44 /* XCRemoteSwiftPackageReference "native" */,
+ 2526B688BB50E918D848EA77 /* XCLocalSwiftPackageReference "../apple" */,
+ );
+ preferredProjectObjectVersion = 77;
+ productRefGroup = 00DE240DA7582B0C0B555805 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ BBF71CE12A169C15448DFE17 /* SheetsMacStore */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 8EFEC10D961D3B57455AE206 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5CC39F6614938AE329384AB8 /* AppIcon.icns in Resources */,
+ 603E79126E29D73CD628EDED /* LICENSE.lucide in Resources */,
+ C52F3F48EAE4BD0A51D2BE94 /* PrivacyInfo.xcprivacy in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 234C25F498941E102ED36418 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 9C78334F6EDBA092C0D0E169 /* SheetsApp.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 0FE8BB7C08DC50F51165F494 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_ENTITLEMENTS = AppStore.entitlements;
+ COMBINE_HIDPI_IMAGES = YES;
+ INFOPLIST_FILE = Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = net.amadan.oficina.sheets;
+ SDKROOT = macosx;
+ };
+ name = Release;
+ };
+ 4E107C5D116C49C05C2688EE /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ 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;
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 3;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_HARDENED_RUNTIME = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ 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;
+ MACOSX_DEPLOYMENT_TARGET = 26.0;
+ MARKETING_VERSION = 0.1.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 6.0;
+ };
+ name = Release;
+ };
+ C50FCE2D58FB2E406FAD5F92 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_ENTITLEMENTS = AppStore.entitlements;
+ COMBINE_HIDPI_IMAGES = YES;
+ INFOPLIST_FILE = Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = net.amadan.oficina.sheets;
+ SDKROOT = macosx;
+ };
+ name = Debug;
+ };
+ F432AD9AEA5B79502BDCE34D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ 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;
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 3;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_HARDENED_RUNTIME = YES;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "$(inherited)",
+ "DEBUG=1",
+ );
+ 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;
+ MACOSX_DEPLOYMENT_TARGET = 26.0;
+ MARKETING_VERSION = 0.1.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 6.0;
+ };
+ name = Debug;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 594CF8F18C652F85BD0F8E62 /* Build configuration list for PBXProject "SheetsMacStore" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ F432AD9AEA5B79502BDCE34D /* Debug */,
+ 4E107C5D116C49C05C2688EE /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+ CA4EB5575C1FF80222F682F0 /* Build configuration list for PBXNativeTarget "SheetsMacStore" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C50FCE2D58FB2E406FAD5F92 /* Debug */,
+ 0FE8BB7C08DC50F51165F494 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+/* End XCConfigurationList section */
+
+/* Begin XCLocalSwiftPackageReference section */
+ 2526B688BB50E918D848EA77 /* XCLocalSwiftPackageReference "../apple" */ = {
+ isa = XCLocalSwiftPackageReference;
+ relativePath = ../apple;
+ };
+/* End XCLocalSwiftPackageReference section */
+
+/* Begin XCRemoteSwiftPackageReference section */
+ BA0E7C8C83BC0368D29C5E44 /* XCRemoteSwiftPackageReference "native" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL = "https://amadan.net/rastrillo/native";
+ requirement = {
+ kind = revision;
+ revision = 4c61d6283a188c95647e1d0e609e69d29c2e7fa1;
+ };
+ };
+/* End XCRemoteSwiftPackageReference section */
+
+/* Begin XCSwiftPackageProductDependency section */
+ 6334833E1C593E852E1F7FD4 /* RastrilloApple */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = BA0E7C8C83BC0368D29C5E44 /* XCRemoteSwiftPackageReference "native" */;
+ productName = RastrilloApple;
+ };
+ CD52B595B2129268F78A0A8A /* SheetsKit */ = {
+ isa = XCSwiftPackageProductDependency;
+ productName = SheetsKit;
+ };
+/* End XCSwiftPackageProductDependency section */
+ };
+ rootObject = A3F5B33CA29DABC65807207B /* Project object */;
+}
diff --git a/native/macos/SheetsMacStore.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/native/macos/SheetsMacStore.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/native/macos/SheetsMacStore.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "self:">
+ </FileRef>
+</Workspace>
diff --git a/native/macos/project.yml b/native/macos/project.yml
new file mode 100644
index 0000000..b69d6e1
--- /dev/null
+++ b/native/macos/project.yml
@@ -0,0 +1,48 @@
+name: SheetsMacStore
+options:
+ deploymentTarget:
+ macOS: '26.0'
+packages:
+ SheetsNative:
+ path: ../apple
+ RastrilloNative:
+ url: https://amadan.net/rastrillo/native
+ revision: 4c61d6283a188c95647e1d0e609e69d29c2e7fa1
+settings:
+ base:
+ SWIFT_VERSION: '6.0'
+ CODE_SIGN_STYLE: Automatic
+ MARKETING_VERSION: '0.1.0'
+ CURRENT_PROJECT_VERSION: '3'
+ ENABLE_HARDENED_RUNTIME: YES
+targets:
+ SheetsMacStore:
+ type: application
+ platform: macOS
+ sources:
+ - ../apple/Sources/SheetsApp
+ - path: AppIcon.icns
+ buildPhase: resources
+ - path: ../LICENSE.lucide
+ buildPhase: resources
+ - path: ../PrivacyInfo.xcprivacy
+ buildPhase: resources
+ dependencies:
+ - package: SheetsNative
+ product: SheetsKit
+ - package: RastrilloNative
+ product: RastrilloApple
+ info:
+ path: Info.plist
+ properties:
+ CFBundleDisplayName: Oficina Sheets
+ CFBundleName: Oficina Sheets
+ CFBundleShortVersionString: $(MARKETING_VERSION)
+ CFBundleVersion: $(CURRENT_PROJECT_VERSION)
+ CFBundleIconFile: AppIcon
+ LSApplicationCategoryType: public.app-category.productivity
+ NSHighResolutionCapable: true
+ settings:
+ base:
+ PRODUCT_BUNDLE_IDENTIFIER: net.amadan.oficina.sheets
+ CODE_SIGN_ENTITLEMENTS: AppStore.entitlements