ζ-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>
This commit is contained in:
commit
0bd59ed148
25 changed files with 1468 additions and 0 deletions
209
project.yml
Normal file
209
project.yml
Normal file
|
|
@ -0,0 +1,209 @@
|
|||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue