5206cf3b0c
bare SPM 실행타깃은 .app 번들/Info.plist 없어 macOS 액세서리로 취급 → Cmd+R 윈도우 미표시. xcodegen project.yml 로 진짜 application 타깃 생성. - @main 셸을 Sources/DSApp → App/DSApp.swift 이동 (SPM 간섭 제거, SPM 은 라이브러리+테스트만 소유 → swift build/test 백엔드-free 유지). - Package.swift: executableTarget DSApp 제거, AppFeature library product 추가 (App 타깃이 로컬 SPM product 로 의존). - project.yml: application 타깃 DSApp(.macOS 26, Swift6 mode), Info.plist(APPL, LSUIElement 없음=일반 윈도우 앱) + entitlements(app-sandbox·network.client· files.user-selected) → Support/ 생성, xcodeproj/Support 는 gitignore. 검증: swift build + swift test 72 green / xcodebuild BUILD SUCCEEDED (서명 off 스모크 + ad-hoc 서명 빌드 둘 다) / DS.app 실행 확인(pid 생존·sandbox 크래시 0). 사용자 경로: `xcodegen generate` → DSApp.xcodeproj 열기 → My Mac → Cmd+R. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
77 lines
2.5 KiB
YAML
77 lines
2.5 KiB
YAML
# A-6 — real macOS .app target for the DS app shell.
|
|
#
|
|
# Why this exists: opening Package.swift directly in Xcode produced an *executable* SwiftPM target
|
|
# with no .app bundle / Info.plist, so macOS treated it as an accessory and Cmd+R never opened a
|
|
# window (see ds-native-app-program memory). This generates a proper application target whose @main
|
|
# lives in App/DSApp.swift and which links the AppFeature library product from the local SwiftPM
|
|
# package. project.yml is the source of truth; DSApp.xcodeproj + Support/*.plist|.entitlements are
|
|
# generated artifacts (gitignored). Regenerate with: xcodegen generate
|
|
name: DSApp
|
|
options:
|
|
bundleIdPrefix: net.hyungi
|
|
deploymentTarget:
|
|
macOS: "26.0"
|
|
createIntermediateGroups: true
|
|
minimumXcodeGenVersion: "2.40.0"
|
|
|
|
settings:
|
|
base:
|
|
SWIFT_VERSION: "6.0" # Swift 6 language mode (matches package .swiftLanguageMode(.v6))
|
|
SWIFT_STRICT_CONCURRENCY: complete
|
|
MACOSX_DEPLOYMENT_TARGET: "26.0"
|
|
CODE_SIGN_STYLE: Automatic
|
|
# Local dev: no signing identity needed to build/run on this Mac.
|
|
CODE_SIGNING_ALLOWED: "NO"
|
|
CODE_SIGNING_REQUIRED: "NO"
|
|
|
|
packages:
|
|
# Local SwiftPM package = this repo (Package.swift): AIFabric + DSKit + AppFeature libraries.
|
|
DSPackage:
|
|
path: .
|
|
|
|
targets:
|
|
DSApp:
|
|
type: application
|
|
platform: macOS
|
|
deploymentTarget: "26.0"
|
|
sources:
|
|
- path: App # App/DSApp.swift only — @main window + DI shell
|
|
dependencies:
|
|
- package: DSPackage
|
|
product: AppFeature
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: net.hyungi.dsapp
|
|
PRODUCT_NAME: DS
|
|
GENERATE_INFOPLIST_FILE: "NO"
|
|
MARKETING_VERSION: "0.1"
|
|
CURRENT_PROJECT_VERSION: "1"
|
|
ENABLE_HARDENED_RUNTIME: "YES"
|
|
info:
|
|
path: Support/Info.plist
|
|
properties:
|
|
CFBundleName: DS
|
|
CFBundleDisplayName: DS
|
|
CFBundleShortVersionString: "0.1"
|
|
CFBundleVersion: "1"
|
|
CFBundlePackageType: APPL
|
|
LSMinimumSystemVersion: "26.0"
|
|
LSApplicationCategoryType: public.app-category.productivity
|
|
NSHumanReadableCopyright: ""
|
|
entitlements:
|
|
path: Support/DSApp.entitlements
|
|
properties:
|
|
com.apple.security.app-sandbox: true
|
|
com.apple.security.network.client: true # LiveDSClient HTTP → DS / mac mini :8890
|
|
com.apple.security.files.user-selected.read-write: true # FU-C upload / FU-D download save
|
|
|
|
schemes:
|
|
DSApp:
|
|
build:
|
|
targets:
|
|
DSApp: all
|
|
run:
|
|
config: Debug
|
|
test:
|
|
config: Debug
|