Der Umzug in apps/<name>/ios + libs/ brach die relativen SPM-Pfade (path: ../mana-swift-*). Auf die neue Lage gezogen, mit xcodegen verifiziert. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
305 lines
11 KiB
YAML
305 lines
11 KiB
YAML
name: PagetaNative
|
|
|
|
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: ../../../libs/mana-swift-core
|
|
ManaSwiftEventSync:
|
|
path: ../../../libs/mana-swift-event-sync
|
|
ManaSwiftUI:
|
|
path: ../../../libs/mana-swift-ui
|
|
ManaSwiftLLM:
|
|
path: ../../../libs/mana-swift-llm
|
|
# MLX-Stack — transitive Deps von ManaLLM. Müssen explizit deklariert
|
|
# werden, sonst kann Xcode beim Archive die Produkte nicht auflösen
|
|
# ("Missing package product 'MLXLLM'"). Bei plain `xcodebuild build`
|
|
# reicht die transitive Resolution; Archive ist strenger.
|
|
mlx-swift-lm:
|
|
url: https://github.com/ml-explore/mlx-swift-lm
|
|
branch: main
|
|
swift-huggingface:
|
|
url: https://github.com/huggingface/swift-huggingface
|
|
from: 0.9.0
|
|
swift-transformers:
|
|
url: https://github.com/huggingface/swift-transformers
|
|
from: 1.3.0
|
|
|
|
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 Apple-Developer-Team-ID. Muss mit dem AASA-Eintrag
|
|
# auf https://pageta.com/.well-known/apple-app-site-association
|
|
# matchen.
|
|
DEVELOPMENT_TEAM: QP3GLU8PH3
|
|
|
|
targets:
|
|
PagetaNative:
|
|
type: application
|
|
supportedDestinations: [iOS, macOS]
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: ev.mana.pageta
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
|
|
dependencies:
|
|
- package: ManaSwiftCore
|
|
product: ManaCore
|
|
- package: ManaSwiftCore
|
|
product: ManaTokens
|
|
- package: ManaSwiftEventSync
|
|
product: ManaEventSync
|
|
- package: ManaSwiftUI
|
|
product: ManaAuthUI
|
|
- package: ManaSwiftUI
|
|
product: ManaFeedbackUI
|
|
- package: ManaSwiftUI
|
|
product: ManaLLMUI
|
|
- package: ManaSwiftUI
|
|
product: ManaThemeUI
|
|
- package: ManaSwiftUI
|
|
product: ManaComponentsUI
|
|
- package: ManaSwiftUI
|
|
product: ManaOnboardingUI
|
|
- package: ManaSwiftLLM
|
|
product: ManaLLM
|
|
- package: ManaSwiftLLM
|
|
product: ManaLLMShared
|
|
# Transitive MLX-Stack-Produkte — Archive-Resolver braucht explizit:
|
|
- package: mlx-swift-lm
|
|
product: MLXLLM
|
|
- package: mlx-swift-lm
|
|
product: MLXLMCommon
|
|
- package: mlx-swift-lm
|
|
product: MLXHuggingFace
|
|
- package: swift-huggingface
|
|
product: HuggingFace
|
|
- package: swift-transformers
|
|
product: Tokenizers
|
|
- target: PagetaShareExtension
|
|
embed: true
|
|
platformFilter: iOS
|
|
- target: PagetaShareExtensionMac
|
|
embed: true
|
|
# XcodeGen mappt `macOS` fälschlich zu `maccatalyst` in der
|
|
# pbxproj. Wir patchen den Eintrag im scripts/xcodegen-Wrapper
|
|
# nachträglich zu `macos`. Bitte `scripts/xcodegen` statt
|
|
# plain `xcodegen` benutzen.
|
|
platformFilter: macOS
|
|
- target: PagetaWidgetExtension
|
|
embed: true
|
|
platformFilter: iOS
|
|
sources:
|
|
- path: Sources/App
|
|
- path: Sources/Features
|
|
- path: Sources/Core
|
|
- path: Sources/Resources
|
|
excludes:
|
|
- "Info.plist"
|
|
- "PagetaNative.entitlements"
|
|
info:
|
|
path: Sources/Resources/Info.plist
|
|
properties:
|
|
ITSAppUsesNonExemptEncryption: false
|
|
CFBundleShortVersionString: "0.1.0"
|
|
CFBundleVersion: "1"
|
|
CFBundleDevelopmentRegion: de
|
|
CFBundleDisplayName: Pageta
|
|
CFBundleIconName: AppIcon
|
|
LSApplicationCategoryType: "public.app-category.news"
|
|
UILaunchScreen: {}
|
|
UISupportedInterfaceOrientations:
|
|
- UIInterfaceOrientationPortrait
|
|
- UIInterfaceOrientationLandscapeLeft
|
|
- UIInterfaceOrientationLandscapeRight
|
|
UISupportedInterfaceOrientations~ipad:
|
|
- UIInterfaceOrientationPortrait
|
|
- UIInterfaceOrientationPortraitUpsideDown
|
|
- UIInterfaceOrientationLandscapeLeft
|
|
- UIInterfaceOrientationLandscapeRight
|
|
CFBundleURLTypes:
|
|
- CFBundleURLName: "ev.mana.pageta"
|
|
CFBundleURLSchemes:
|
|
- pageta
|
|
entitlements:
|
|
path: Sources/Resources/PagetaNative.entitlements
|
|
properties:
|
|
com.apple.security.app-sandbox: true
|
|
com.apple.security.network.client: true
|
|
com.apple.developer.associated-domains:
|
|
- "applinks:pageta.com"
|
|
- "webcredentials:pageta.com"
|
|
keychain-access-groups:
|
|
- $(AppIdentifierPrefix)ev.mana.session
|
|
com.apple.security.application-groups:
|
|
- group.ev.mana.pageta
|
|
- group.ev.mana.models
|
|
|
|
PagetaWidgetExtension:
|
|
type: app-extension
|
|
supportedDestinations: [iOS]
|
|
sources:
|
|
- path: Widgets/PagetaWidget
|
|
excludes:
|
|
- "Resources/Info.plist"
|
|
- "Resources/PagetaWidgetExtension.entitlements"
|
|
- path: Sources/Core/WidgetSnapshot.swift
|
|
info:
|
|
path: Widgets/PagetaWidget/Resources/Info.plist
|
|
properties:
|
|
ITSAppUsesNonExemptEncryption: false
|
|
CFBundleDisplayName: Pageta Widget
|
|
CFBundleShortVersionString: "0.1.0"
|
|
CFBundleVersion: "1"
|
|
NSExtension:
|
|
NSExtensionPointIdentifier: com.apple.widgetkit-extension
|
|
entitlements:
|
|
path: Widgets/PagetaWidget/Resources/PagetaWidgetExtension.entitlements
|
|
properties:
|
|
com.apple.security.application-groups:
|
|
- group.ev.mana.pageta
|
|
dependencies:
|
|
- sdk: WidgetKit.framework
|
|
- sdk: SwiftUI.framework
|
|
settings:
|
|
base:
|
|
# Explizit setzen — sonst lowercased XcodeGen den targetName zu
|
|
# ev.mana.pagetawidgetextension, Bundle-Prefix-Match-Check
|
|
# bei Apple failt dann. Lessons aus herbatrium η-8.2.
|
|
PRODUCT_BUNDLE_IDENTIFIER: ev.mana.pageta.widget
|
|
CODE_SIGN_STYLE: Automatic
|
|
SKIP_INSTALL: "YES"
|
|
INFOPLIST_KEY_CFBundleDisplayName: Pageta Widget
|
|
|
|
PagetaShareExtension:
|
|
type: app-extension
|
|
supportedDestinations: [iOS]
|
|
sources:
|
|
- path: ShareExtension
|
|
excludes:
|
|
- "Resources/Info.plist"
|
|
- "Resources/PagetaShareExtension.entitlements"
|
|
- "GetPageHTML.js"
|
|
- path: ShareExtension/GetPageHTML.js
|
|
buildPhase: resources
|
|
- path: Sources/Core/PendingShareStore.swift
|
|
- path: Sources/Core/SharedHTMLStore.swift
|
|
info:
|
|
path: ShareExtension/Resources/Info.plist
|
|
properties:
|
|
ITSAppUsesNonExemptEncryption: false
|
|
CFBundleDisplayName: In Pageta speichern
|
|
CFBundleShortVersionString: "0.1.0"
|
|
CFBundleVersion: "1"
|
|
NSExtension:
|
|
NSExtensionPointIdentifier: com.apple.share-services
|
|
NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).ShareViewController
|
|
NSExtensionAttributes:
|
|
# JS-Preprocessing greift das gerenderte HTML aus der zustimmenden
|
|
# Safari-Session (umgeht Consent-Wände). WebPage-Activation ist
|
|
# Pflicht, damit das JS überhaupt läuft; WebURL bleibt für Shares
|
|
# aus anderen Apps (nur URL).
|
|
NSExtensionJavaScriptPreprocessingFile: GetPageHTML
|
|
NSExtensionActivationRule:
|
|
NSExtensionActivationSupportsWebURLWithMaxCount: 1
|
|
NSExtensionActivationSupportsWebPageWithMaxCount: 1
|
|
NSExtensionActivationSupportsText: true
|
|
entitlements:
|
|
path: ShareExtension/Resources/PagetaShareExtension.entitlements
|
|
properties:
|
|
com.apple.security.application-groups:
|
|
- group.ev.mana.pageta
|
|
settings:
|
|
base:
|
|
# Explizit setzen — XcodeGen würde sonst ev.mana.pagetashareextension
|
|
# daraus machen (targetName lowercased), Apple validiert
|
|
# Bundle-Prefix-Match zwischen App und Extensions. Lessons-Learned
|
|
# aus herbatrium η-8.2.
|
|
PRODUCT_BUNDLE_IDENTIFIER: ev.mana.pageta.share
|
|
CODE_SIGN_STYLE: Automatic
|
|
SKIP_INSTALL: "YES"
|
|
|
|
PagetaShareExtensionMac:
|
|
type: app-extension
|
|
supportedDestinations: [macOS]
|
|
sources:
|
|
- path: ShareExtensionMac
|
|
excludes:
|
|
- "Resources/Info.plist"
|
|
- "Resources/PagetaShareExtensionMac.entitlements"
|
|
- "GetPageHTML.js"
|
|
- path: ShareExtensionMac/GetPageHTML.js
|
|
buildPhase: resources
|
|
- path: Sources/Core/PendingShareStore.swift
|
|
- path: Sources/Core/SharedHTMLStore.swift
|
|
info:
|
|
path: ShareExtensionMac/Resources/Info.plist
|
|
properties:
|
|
ITSAppUsesNonExemptEncryption: false
|
|
CFBundleDisplayName: In Pageta speichern
|
|
CFBundleShortVersionString: "0.1.0"
|
|
CFBundleVersion: "1"
|
|
NSExtension:
|
|
NSExtensionPointIdentifier: com.apple.share-services
|
|
NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).ShareViewController
|
|
NSExtensionAttributes:
|
|
# JS-Preprocessing greift das gerenderte HTML aus der zustimmenden
|
|
# Safari-Session (umgeht Consent-Wände). WebPage-Activation ist
|
|
# Pflicht, damit das JS überhaupt läuft; WebURL bleibt für Shares
|
|
# aus anderen Apps (nur URL).
|
|
NSExtensionJavaScriptPreprocessingFile: GetPageHTML
|
|
NSExtensionActivationRule:
|
|
NSExtensionActivationSupportsWebURLWithMaxCount: 1
|
|
NSExtensionActivationSupportsWebPageWithMaxCount: 1
|
|
NSExtensionActivationSupportsText: true
|
|
entitlements:
|
|
path: ShareExtensionMac/Resources/PagetaShareExtensionMac.entitlements
|
|
properties:
|
|
com.apple.security.app-sandbox: true
|
|
com.apple.security.application-groups:
|
|
- group.ev.mana.pageta
|
|
settings:
|
|
base:
|
|
# Explizit setzen — XcodeGen würde sonst ev.mana.pagetashareextensionmac
|
|
# daraus machen. Apple erlaubt Extensions HÖCHSTENS EINEN Punkt nach
|
|
# der App-Bundle-ID (ev.mana.pageta) — `ev.mana.pageta.share.mac`
|
|
# hätte zwei und wird beim macOS-TestFlight-Upload abgelehnt. Darum
|
|
# ein zusammengezogenes Segment `sharemac` (analog zur iOS-Share-Ext
|
|
# `ev.mana.pageta.share`, nur mac-spezifisch).
|
|
PRODUCT_BUNDLE_IDENTIFIER: ev.mana.pageta.sharemac
|
|
CODE_SIGN_STYLE: Automatic
|
|
SKIP_INSTALL: "YES"
|
|
|
|
PagetaNativeUnitTests:
|
|
type: bundle.unit-test
|
|
platform: iOS
|
|
sources:
|
|
- path: Tests/UnitTests
|
|
dependencies:
|
|
- target: PagetaNative
|
|
- package: ManaSwiftEventSync
|
|
product: ManaEventSync
|
|
- package: ManaSwiftCore
|
|
product: ManaCore
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: ev.mana.pageta.tests
|
|
# Override base-setting: test-bundle braucht Info.plist, hat aber
|
|
# keinen eigenen statischen → autogenerieren lassen.
|
|
GENERATE_INFOPLIST_FILE: "YES"
|