name: ZitareNative options: bundleIdPrefix: ev.mana createIntermediateGroups: true xcodeVersion: "16.0" deploymentTarget: iOS: "18.0" macOS: "15.0" developmentLanguage: de groupSortPosition: top generateEmptyDirectories: true packages: ManaSwiftCore: path: ../mana-swift-core ManaSwiftUI: path: ../mana-swift-ui settings: base: SWIFT_VERSION: "6.0" SWIFT_STRICT_CONCURRENCY: complete CURRENT_PROJECT_VERSION: "1" MARKETING_VERSION: "0.1.0" GENERATE_INFOPLIST_FILE: "NO" ENABLE_USER_SCRIPT_SANDBOXING: "YES" DEAD_CODE_STRIPPING: "YES" CLANG_ENABLE_MODULES: "YES" # mana e.V. Apple-Developer-Team-ID. Muss matchen mit dem AASA- # Eintrag auf https://zitare.com/.well-known/apple-app-site-association. DEVELOPMENT_TEAM: QP3GLU8PH3 targets: ZitareNative: type: application supportedDestinations: [iOS, macOS] dependencies: - package: ManaSwiftCore product: ManaCore - package: ManaSwiftCore product: ManaTokens - package: ManaSwiftUI product: ManaAuthUI - target: ZitareWidgetExtension embed: true - target: ZitareShareExtension embed: true sources: - path: Sources/App - path: Sources/Features - path: Sources/Core - path: Sources/Resources excludes: - "Info.plist" - "ZitareNative.entitlements" info: path: Sources/Resources/Info.plist properties: CFBundleShortVersionString: "0.1.0" CFBundleVersion: "3" CFBundleDevelopmentRegion: de CFBundleDisplayName: Zitare # Pflicht-Key für iOS 11+ mit Asset-Catalog-Icons. Xcode setzt # ihn nur automatisch wenn GENERATE_INFOPLIST_FILE=YES; bei uns # ist die Info.plist XcodeGen-getrieben, also explizit hier. CFBundleIconName: AppIcon LSApplicationCategoryType: "public.app-category.reference" UILaunchScreen: {} UISupportedInterfaceOrientations: - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad: - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight CFBundleURLTypes: - CFBundleURLName: ev.mana.zitare CFBundleURLSchemes: - zitare NSUserActivityTypes: - NSUserActivityTypeBrowsingWeb # WKWebView lädt zitare.com + zitare.mana.how. Beide sind # https, kein App-Transport-Security-Override nötig. ITSAppUsesNonExemptEncryption: false entitlements: path: Sources/Resources/ZitareNative.entitlements properties: com.apple.security.app-sandbox: true com.apple.security.network.client: true com.apple.security.files.user-selected.read-write: true keychain-access-groups: - $(AppIdentifierPrefix)ev.mana.zitare # Universal-Link-Domains: # - zitare.com ist die kanonische Production-Domain (steht # auch im Manifest und im AASA-File auf zitare-com). # - zitare.mana.how als Staging-Domain, solange die zitare.com- # Cloudflare-Zone noch nicht aufgelöst wird (DNS-Setup # blockiert auf separatem cloudflared-Login). Nach Cloudflare- # Cut kann der Eintrag bleiben — schadet nicht, deckt einfach # beide Hosts ab. # Beide Hosts liefern identische AASA-Files (siehe nginx-app.conf # bzw. nginx-com.conf im zitare-Repo). com.apple.developer.associated-domains: - applinks:zitare.com - applinks:zitare.mana.how com.apple.security.application-groups: - group.ev.mana.zitare settings: base: PRODUCT_BUNDLE_IDENTIFIER: ev.mana.zitare CODE_SIGN_STYLE: Automatic ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor ENABLE_PREVIEWS: "YES" ZitareShareExtension: type: app-extension supportedDestinations: [iOS] sources: - path: ShareExtension excludes: - "Resources/Info.plist" - "Resources/ZitareShareExtension.entitlements" info: path: ShareExtension/Resources/Info.plist properties: CFBundleDisplayName: An Zitare schicken CFBundleShortVersionString: "0.1.0" CFBundleVersion: "1" NSExtension: NSExtensionPointIdentifier: com.apple.share-services NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).ShareViewController NSExtensionAttributes: NSExtensionActivationRule: NSExtensionActivationSupportsText: true NSExtensionActivationSupportsWebURLWithMaxCount: 1 entitlements: path: ShareExtension/Resources/ZitareShareExtension.entitlements properties: com.apple.security.application-groups: - group.ev.mana.zitare settings: base: PRODUCT_BUNDLE_IDENTIFIER: ev.mana.zitare.share CODE_SIGN_STYLE: Automatic SKIP_INSTALL: "YES" ZitareWidgetExtension: type: app-extension supportedDestinations: [iOS] sources: - path: Widgets/ZitareWidget excludes: - "Resources/Info.plist" - "Resources/ZitareWidgetExtension.entitlements" # Geteilter Snapshot-Code (SwiftData-Models + Container). # Widget liest aus dem App-Group-Store, den die App befüllt. - path: Sources/Core/Snapshot/SnapshotModels.swift info: path: Widgets/ZitareWidget/Resources/Info.plist properties: CFBundleDisplayName: Zitare Widget CFBundleShortVersionString: "0.1.0" CFBundleVersion: "1" NSExtension: NSExtensionPointIdentifier: com.apple.widgetkit-extension entitlements: path: Widgets/ZitareWidget/Resources/ZitareWidgetExtension.entitlements properties: com.apple.security.application-groups: - group.ev.mana.zitare dependencies: - sdk: WidgetKit.framework - sdk: SwiftUI.framework settings: base: PRODUCT_BUNDLE_IDENTIFIER: ev.mana.zitare.widget CODE_SIGN_STYLE: Automatic SKIP_INSTALL: "YES" INFOPLIST_KEY_CFBundleDisplayName: Zitare Widget ZitareNativeTests: type: bundle.unit-test supportedDestinations: [iOS, macOS] sources: - Tests/UnitTests dependencies: - target: ZitareNative settings: base: PRODUCT_BUNDLE_IDENTIFIER: ev.mana.zitare.tests GENERATE_INFOPLIST_FILE: "YES" ZitareNativeUITests: type: bundle.ui-testing supportedDestinations: [iOS, macOS] sources: - Tests/UITests dependencies: - target: ZitareNative settings: base: PRODUCT_BUNDLE_IDENTIFIER: ev.mana.zitare.uitests GENERATE_INFOPLIST_FILE: "YES" schemes: ZitareNative: build: targets: ZitareNative: all ZitareNativeTests: [test] ZitareNativeUITests: [test] test: targets: - ZitareNativeTests - ZitareNativeUITests gatherCoverageData: false run: config: Debug archive: config: Release