zitare-native/project.yml
Till JS cbc9af6bb0 fix(launch): drei Layer weißen Flash beim Start gefixt
System-Launch-Screen war default-weiß (UILaunchScreen leer), WKWebView
malt vor first paint opaque weiß, und das HTML selbst hat keinen
Background bevor das CSS-Bundle lädt. Alle drei Layer jetzt auf den
Paper-Theme-Background gesetzt — sRGB-konvertiert aus `--color-background`
in mana/packages/themes/paper.css.

- LaunchBackground.colorset mit Light + Dark Variante
- project.yml: UILaunchScreen.UIColorName: LaunchBackground
- WKWebView: isOpaque=false + clear backgrounds (iOS), drawsBackground=false (macOS)

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

230 lines
7.6 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: "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"
# Paper-Theme-Background als Launch-Screen statt System-Weiß,
# damit zwischen Tap und first SwiftUI-paint kein weißer Flash
# mehr sichtbar ist. Asset hat Light + Dark Variante, matcht
# `--color-background` aus mana/packages/themes/paper.css und
# `ZitareTheme.background` im Native-Code.
UILaunchScreen:
UIColorName: LaunchBackground
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