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>
25 lines
676 B
Swift
25 lines
676 B
Swift
import SwiftUI
|
|
import AppFeature
|
|
|
|
/// Thin @main entry: window + DI only. Injects AppModel (FixtureDSClient + AIRouter(MockAIProvider))
|
|
/// so the whole pipeline renders with zero real backend / zero real LLM. Feature logic lives in
|
|
/// AppFeature, keeping the seam to a future Xcode/iPhone target trivial.
|
|
@main
|
|
struct DSApp: App {
|
|
@State private var model: AppModel
|
|
|
|
@MainActor
|
|
init() {
|
|
_model = State(initialValue: AppModel.preview)
|
|
}
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
RootView()
|
|
.environment(model)
|
|
.frame(minWidth: 980, minHeight: 640)
|
|
}
|
|
.windowStyle(.automatic)
|
|
}
|
|
}
|