zitare-native/project.yml
Till 0bd59ed148 ζ-0 Setup: Repo-Skelett, iOS-Build grün, Healthz live
- project.yml mit Bundle ev.mana.zitare + Widget + ShareExt-Targets
- ManaSwiftCore (ManaCore + ManaTokens) + ManaSwiftUI (ManaAuthUI)
  als Package-Dependencies via path:
- Pure SwiftUI für Native-Surfaces, WKWebView nur für Lese-Tabs
  (Hybrid-Sonderfall vs cards/memoro/manaspur, dokumentiert im
  Playbook ZITARE_NATIVE_GREENFIELD.md)
- Theme: paper-Variant aus @mana/themes
- ZitareAPI.healthCheck via direct URLSession (öffentlicher
  Endpoint, kein AuthenticatedTransport-Gate)
- 6/6 AppConfigTests + 1/1 UI-Smoke grün auf iPhone 16e Simulator
- Live: zitare-api.mana.how/healthz → HTTP/2 200

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 12:15:22 +02:00

209 lines
6.3 KiB
YAML

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: "1"
CFBundleDevelopmentRegion: de
CFBundleDisplayName: Zitare
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-Domain ist zitare.com (canonical).
# zitare.mana.how ist NICHT in den applinks, weil das
# mit anderen mana-Apps kollidieren würde.
com.apple.developer.associated-domains:
- applinks:zitare.com
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"
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