pageta-native/project.yml
Till JS fd24e0037d build(ios): mana-swift-Lib-Pfade nach Bucket-Umzug auf ../../../libs/ korrigieren
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>
2026-06-17 18:15:58 +02:00

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"