From 03f0fd2edeba00f793bbdfac4a3f466aedd4781a Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 01:25:23 +0900 Subject: [PATCH 01/26] =?UTF-8?q?[#64]=20feat:=20iCloud=20=EA=B3=84?= =?UTF-8?q?=EC=A0=95=20=EC=83=81=ED=83=9C=20=ED=99=95=EC=9D=B8=20=EB=B0=8F?= =?UTF-8?q?=20=EB=8F=99=EA=B8=B0=ED=99=94=20=EC=84=A4=EC=A0=95=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CKContainer.accountStatus() 기반으로 iCloud 로그인 여부를 확인하고, 동기화 사용 여부를 UserDefaults에 저장하는 도메인/데이터 레이어를 추가한다. --- .../Settings/SettingsRepositoryImpl.swift | 8 +++++ .../Settings/UserDefaultsKey.swift | 1 + .../CloudKitAccountServiceImpl.swift | 35 +++++++++++++++++++ .../Interface/SettingsRepository.swift | 3 ++ .../Interface/ICloudAccountService.swift | 7 ++++ .../Interface/ICloudAccountStatus.swift | 15 ++++++++ .../ICloudSyncSettingsUseCaseImpl.swift | 20 +++++++++++ .../Settings/ICloudSyncSettingsUseCase.swift | 8 +++++ 8 files changed, 97 insertions(+) create mode 100644 Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift create mode 100644 Projects/DVDomain/Sources/Service/Interface/ICloudAccountService.swift create mode 100644 Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift create mode 100644 Projects/DVDomain/Sources/UseCase/Impl/Settings/ICloudSyncSettingsUseCaseImpl.swift create mode 100644 Projects/DVDomain/Sources/UseCase/Interface/Settings/ICloudSyncSettingsUseCase.swift diff --git a/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift b/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift index a029281..9a4fae9 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift @@ -19,4 +19,12 @@ public struct SettingsRepositoryImpl: SettingsRepository, @unchecked Sendable { public func setOnboardingCompleted() { defaults.set(true, forKey: .hasCompletedOnboarding) } + + public func isICloudSyncEnabled() -> Bool { + defaults.bool(forKey: .isICloudSyncEnabled) + } + + public func setICloudSyncEnabled(_ enabled: Bool) { + defaults.set(enabled, forKey: .isICloudSyncEnabled) + } } diff --git a/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift b/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift index 8a4907a..5302c73 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift @@ -4,6 +4,7 @@ import Foundation enum UserDefaultsKey: String { case hasCompletedOnboarding + case isICloudSyncEnabled } extension UserDefaults { diff --git a/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift b/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift new file mode 100644 index 0000000..ffd2732 --- /dev/null +++ b/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift @@ -0,0 +1,35 @@ +// Copyright © 2026 Devault. All rights reserved + +import CloudKit +import DVDomain + +public struct CloudKitAccountServiceImpl: ICloudAccountService { + + private let container: CKContainer + + /// - Parameter containerIdentifier: entitlements에 등록된 iCloud 컨테이너 식별자 + public init(containerIdentifier: String) { + self.container = CKContainer(identifier: containerIdentifier) + } + + public func fetchAccountStatus() async -> ICloudAccountStatus { + do { + switch try await container.accountStatus() { + case .available: + return .available + case .noAccount: + return .noAccount + case .restricted: + return .restricted + case .temporarilyUnavailable: + return .temporarilyUnavailable + case .couldNotDetermine: + return .couldNotDetermine + @unknown default: + return .couldNotDetermine + } + } catch { + return .couldNotDetermine + } + } +} diff --git a/Projects/DVDomain/Sources/Repository/Interface/SettingsRepository.swift b/Projects/DVDomain/Sources/Repository/Interface/SettingsRepository.swift index 2f1a658..5fcdcd5 100644 --- a/Projects/DVDomain/Sources/Repository/Interface/SettingsRepository.swift +++ b/Projects/DVDomain/Sources/Repository/Interface/SettingsRepository.swift @@ -5,4 +5,7 @@ import Foundation public protocol SettingsRepository: Sendable { func hasCompletedOnboarding() -> Bool func setOnboardingCompleted() + + func isICloudSyncEnabled() -> Bool + func setICloudSyncEnabled(_ enabled: Bool) } diff --git a/Projects/DVDomain/Sources/Service/Interface/ICloudAccountService.swift b/Projects/DVDomain/Sources/Service/Interface/ICloudAccountService.swift new file mode 100644 index 0000000..3d0b09d --- /dev/null +++ b/Projects/DVDomain/Sources/Service/Interface/ICloudAccountService.swift @@ -0,0 +1,7 @@ +// Copyright © 2026 Devault. All rights reserved + +/// 현재 기기의 iCloud 계정 상태를 확인하는 서비스입니다. +public protocol ICloudAccountService: Sendable { + /// iCloud 계정 로그인 및 사용 가능 여부를 확인한다. + func fetchAccountStatus() async -> ICloudAccountStatus +} diff --git a/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift b/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift new file mode 100644 index 0000000..a4a359c --- /dev/null +++ b/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift @@ -0,0 +1,15 @@ +// Copyright © 2026 Devault. All rights reserved + +/// iCloud 계정의 사용 가능 상태입니다. +public enum ICloudAccountStatus: Equatable, Sendable { + /// 로그인되어 있고 정상적으로 사용 가능 + case available + /// iCloud 계정이 로그인되어 있지 않음 + case noAccount + /// 상위 관리 정책 등으로 사용이 제한됨 + case restricted + /// 일시적으로 사용할 수 없음 + case temporarilyUnavailable + /// 상태를 확인하지 못함 + case couldNotDetermine +} diff --git a/Projects/DVDomain/Sources/UseCase/Impl/Settings/ICloudSyncSettingsUseCaseImpl.swift b/Projects/DVDomain/Sources/UseCase/Impl/Settings/ICloudSyncSettingsUseCaseImpl.swift new file mode 100644 index 0000000..e1215ef --- /dev/null +++ b/Projects/DVDomain/Sources/UseCase/Impl/Settings/ICloudSyncSettingsUseCaseImpl.swift @@ -0,0 +1,20 @@ +// Copyright © 2026 Devault. All rights reserved + +import Foundation + +public struct ICloudSyncSettingsUseCaseImpl: ICloudSyncSettingsUseCase { + + private let repository: any SettingsRepository + + public init(repository: any SettingsRepository) { + self.repository = repository + } + + public func isEnabled() -> Bool { + repository.isICloudSyncEnabled() + } + + public func setEnabled(_ enabled: Bool) { + repository.setICloudSyncEnabled(enabled) + } +} diff --git a/Projects/DVDomain/Sources/UseCase/Interface/Settings/ICloudSyncSettingsUseCase.swift b/Projects/DVDomain/Sources/UseCase/Interface/Settings/ICloudSyncSettingsUseCase.swift new file mode 100644 index 0000000..26adc84 --- /dev/null +++ b/Projects/DVDomain/Sources/UseCase/Interface/Settings/ICloudSyncSettingsUseCase.swift @@ -0,0 +1,8 @@ +// Copyright © 2026 Devault. All rights reserved + +import Foundation + +public protocol ICloudSyncSettingsUseCase: Sendable { + func isEnabled() -> Bool + func setEnabled(_ enabled: Bool) +} From e923b0a47533d87be1dfb196feb6d217a5e3c60b Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 01:25:41 +0900 Subject: [PATCH 02/26] =?UTF-8?q?[#64]=20chore:=20Devault=20=EC=95=B1=20?= =?UTF-8?q?=ED=83=80=EA=B2=9F=20Bundle=20ID=20=EB=B0=8F=20iCloud=20entitle?= =?UTF-8?q?ments=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bundle ID를 com.devault.devault에서 com.devault.app으로 정리하고, iCloud(CloudKit) 컨테이너 capability와 Touch ID Info.plist 설명 문구를 추가한다. --- Projects/Devault/Project.swift | 10 +++++++--- Projects/Devault/Resources/Devault.entitlements | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 Projects/Devault/Resources/Devault.entitlements diff --git a/Projects/Devault/Project.swift b/Projects/Devault/Project.swift index 3102b99..a4fa2aa 100644 --- a/Projects/Devault/Project.swift +++ b/Projects/Devault/Project.swift @@ -7,21 +7,25 @@ let project = Project.project( .target( name: DVModule.Devault.name, product: .app, + bundleId: "com.devault.app", infoPlist: .extendingDefault(with: [ "CFBundleDisplayName": .string("Devault"), + "NSFaceIDUsageDescription": .string("저장된 시크릿을 안전하게 보호하기 위해 Touch ID를 사용합니다."), ]), sources: .sources, - resources: .default, + resources: [.glob(pattern: "Resources/**", excluding: ["Resources/*.entitlements"])], + entitlements: .file(path: "Resources/Devault.entitlements"), dependencies: [ // internal dependency .presentation(), .data(), .domain(), .core(), - + // 3rd-party dependency .tca(), - ] + ], + settings: .settings(base: ["DEVELOPMENT_TEAM": "UKY6HK6U6Y"]) ), ], schemes: [ diff --git a/Projects/Devault/Resources/Devault.entitlements b/Projects/Devault/Resources/Devault.entitlements new file mode 100644 index 0000000..780bb46 --- /dev/null +++ b/Projects/Devault/Resources/Devault.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.developer.icloud-container-identifiers + + iCloud.com.devault.app + + com.apple.developer.icloud-services + + CloudKit + + + From 3f866286a9871419317b711782a79e82e30e06df Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 01:25:49 +0900 Subject: [PATCH 03/26] =?UTF-8?q?[#64]=20fix:=20iCloud=20entitlement=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20SwiftData=20?= =?UTF-8?q?=EC=B4=88=EA=B8=B0=ED=99=94=20=EC=8B=A4=ED=8C=A8=20=EB=B0=A9?= =?UTF-8?q?=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ModelConfiguration의 cloudKitDatabase 기본값(.automatic)은 앱에 iCloud entitlement가 있으면 CloudKit 미러링을 시도한다. 현재 모델들은 CloudKit이 지원하지 않는 @Attribute(.unique)를 쓰고 있어 그대로 두면 ModelContainer 초기화가 loadIssueModelContainer 에러로 실패하므로, cloudKitDatabase를 .none으로 명시해 당장은 로컬 전용으로 유지한다. --- Projects/DVData/Sources/Storage/Local/LocalStorage.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Projects/DVData/Sources/Storage/Local/LocalStorage.swift b/Projects/DVData/Sources/Storage/Local/LocalStorage.swift index 827ca1c..b3a1cad 100644 --- a/Projects/DVData/Sources/Storage/Local/LocalStorage.swift +++ b/Projects/DVData/Sources/Storage/Local/LocalStorage.swift @@ -10,7 +10,9 @@ public final class LocalStorage { } public static func makeDefault() throws -> LocalStorage { - let configuration = ModelConfiguration(isStoredInMemoryOnly: false) + // cloudKitDatabase 기본값(.automatic)은 앱에 iCloud entitlement가 있으면 CloudKit 미러링을 시도한다. + // 현재 모델들은 CloudKit이 지원하지 않는 @Attribute(.unique)를 쓰고 있어 그대로 두면 초기화가 실패하므로 명시적으로 끈다. + let configuration = ModelConfiguration(isStoredInMemoryOnly: false, cloudKitDatabase: .none) let modelContainer = try ModelContainer( for: Schema.appSchema, configurations: configuration From 70268512138ce881e7246a14527276df908538e1 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 01:25:56 +0900 Subject: [PATCH 04/26] =?UTF-8?q?[#64]=20feat:=20Lock=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=EC=97=90=20=EC=8B=A4=EC=A0=9C=20Touch=20ID=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit didTapUnlock이 LockClient를 통해 실제 LocalAuthentication 인증을 수행하도록 연결하고, 인증 실패 시 alert로 안내한다. --- .../Sources/Dependencies/LockClient.swift | 31 ++++++++++ .../Sources/Features/Lock/LockFeature.swift | 62 +++++++++++++++++++ .../Sources/Features/Lock/LockView.swift | 1 + .../Tests/Lock/LockFeatureTests.swift | 46 ++++++++++++++ .../Dependencies/LockClient+Live.swift | 18 ++++++ 5 files changed, 158 insertions(+) create mode 100644 Projects/DVPresentation/Sources/Dependencies/LockClient.swift create mode 100644 Projects/DVPresentation/Tests/Lock/LockFeatureTests.swift create mode 100644 Projects/Devault/Sources/Composition/Dependencies/LockClient+Live.swift diff --git a/Projects/DVPresentation/Sources/Dependencies/LockClient.swift b/Projects/DVPresentation/Sources/Dependencies/LockClient.swift new file mode 100644 index 0000000..2f3a097 --- /dev/null +++ b/Projects/DVPresentation/Sources/Dependencies/LockClient.swift @@ -0,0 +1,31 @@ +// Copyright © 2026 Devault. All rights reserved + +import Foundation + +import ComposableArchitecture +import DVDomain + +/// Lock Feature 전용 Client. 잠금 해제(Touch ID/시스템 암호 인증)에서 사용. +/// Main → Lock으로 다시 돌아오는 흐름(재잠금 등)에서도 동일하게 재사용. +/// Live 조립은 Devault(App 타겟)에서 `UserAuthenticationService`를 wrap. +@DependencyClient +public struct LockClient: Sendable { + + /// Touch ID 또는 시스템 암호로 잠금을 해제한다. 실패 시 `UserAuthenticationError`를 throw한다. + public var unlock: @Sendable () async throws -> Void +} + +extension LockClient: TestDependencyKey { + public static let testValue = LockClient() + + public static let previewValue = LockClient( + unlock: { } + ) +} + +extension DependencyValues { + public var lockClient: LockClient { + get { self[LockClient.self] } + set { self[LockClient.self] = newValue } + } +} diff --git a/Projects/DVPresentation/Sources/Features/Lock/LockFeature.swift b/Projects/DVPresentation/Sources/Features/Lock/LockFeature.swift index 9c12d1c..339847f 100644 --- a/Projects/DVPresentation/Sources/Features/Lock/LockFeature.swift +++ b/Projects/DVPresentation/Sources/Features/Lock/LockFeature.swift @@ -3,6 +3,7 @@ import Foundation import ComposableArchitecture +import DVDomain // MARK: - LockFeature @@ -13,6 +14,8 @@ public struct LockFeature { @ObservableState public struct State: Equatable { + @Presents var alert: AlertState? + public init() {} } @@ -24,6 +27,15 @@ public struct LockFeature { case didTapUnlock + // MARK: - Internal + + case unlockAuthSucceeded + case unlockAuthFailed(UserAuthenticationError) + + // MARK: - Child + + case alert(PresentationAction) + // MARK: - Delegate case delegate(Delegate) @@ -31,8 +43,14 @@ public struct LockFeature { public enum Delegate: Equatable { case unlockCompleted } + + public enum Alert: Equatable {} } + // MARK: - Dependencies + + @Dependency(\.lockClient) var lockClient + // MARK: - Init public init() {} @@ -43,11 +61,55 @@ public struct LockFeature { Reduce { state, action in switch action { case .didTapUnlock: + return .run { send in + do { + try await lockClient.unlock() + await send(.unlockAuthSucceeded) + } catch let error as UserAuthenticationError { + await send(.unlockAuthFailed(error)) + } catch { + await send(.unlockAuthFailed(.failed)) + } + } + + case .unlockAuthSucceeded: return .send(.delegate(.unlockCompleted)) + case .unlockAuthFailed(let error): + state.alert = makeUnlockFailedAlert(error) + return .none + + case .alert: + return .none + case .delegate: return .none } } + .ifLet(\.$alert, action: \.alert) + } +} + +// MARK: - Private + +private extension LockFeature { + + func makeUnlockFailedAlert(_ error: UserAuthenticationError) -> AlertState { + let message: String + switch error { + case .unavailable: + message = "시스템 설정에서 로그인 암호가 설정되어 있는지 확인해주세요." + case .cancelled: + message = "다시 시도해주세요." + case .failed: + message = "다시 시도해주세요." + } + return AlertState { + TextState("잠금을 해제하지 못했어요") + } actions: { + ButtonState(role: .cancel) { TextState("확인") } + } message: { + TextState(message) + } } } diff --git a/Projects/DVPresentation/Sources/Features/Lock/LockView.swift b/Projects/DVPresentation/Sources/Features/Lock/LockView.swift index 2a7c3e6..9db5a8e 100644 --- a/Projects/DVPresentation/Sources/Features/Lock/LockView.swift +++ b/Projects/DVPresentation/Sources/Features/Lock/LockView.swift @@ -24,6 +24,7 @@ public struct LockView: View { public var body: some View { content .dvScreenBackground() + .alert($store.scope(state: \.alert, action: \.alert)) } } diff --git a/Projects/DVPresentation/Tests/Lock/LockFeatureTests.swift b/Projects/DVPresentation/Tests/Lock/LockFeatureTests.swift new file mode 100644 index 0000000..d058357 --- /dev/null +++ b/Projects/DVPresentation/Tests/Lock/LockFeatureTests.swift @@ -0,0 +1,46 @@ +// Copyright © 2026 Devault. All rights reserved + +import ComposableArchitecture +import DVDomain +import Foundation +import Testing + +@testable import DVPresentation + +@MainActor +@Suite("LockFeature") +struct LockFeatureTests { + + @Test("didTapUnlock은 인증에 성공하면 delegate로 알린다") + func unlockSucceeds() async { + let store = TestStore(initialState: LockFeature.State()) { + LockFeature() + } withDependencies: { + $0.lockClient.unlock = { } + } + + await store.send(.didTapUnlock) + await store.receive(.unlockAuthSucceeded) + await store.receive(.delegate(.unlockCompleted)) + } + + @Test("didTapUnlock은 인증에 실패하면 alert를 띄운다") + func unlockShowsAlertOnFailure() async { + let store = TestStore(initialState: LockFeature.State()) { + LockFeature() + } withDependencies: { + $0.lockClient.unlock = { throw UserAuthenticationError.failed } + } + + await store.send(.didTapUnlock) + await store.receive(.unlockAuthFailed(.failed)) { + $0.alert = AlertState { + TextState("잠금을 해제하지 못했어요") + } actions: { + ButtonState(role: .cancel) { TextState("확인") } + } message: { + TextState("다시 시도해주세요.") + } + } + } +} diff --git a/Projects/Devault/Sources/Composition/Dependencies/LockClient+Live.swift b/Projects/Devault/Sources/Composition/Dependencies/LockClient+Live.swift new file mode 100644 index 0000000..05d01f4 --- /dev/null +++ b/Projects/Devault/Sources/Composition/Dependencies/LockClient+Live.swift @@ -0,0 +1,18 @@ +// Copyright © 2026 Devault. All rights reserved + +import ComposableArchitecture +import DVPresentation +import DVDomain +import DVData + +extension LockClient: @retroactive DependencyKey { + public static let liveValue: LockClient = { + let authenticationService: any UserAuthenticationService = LocalUserAuthenticationServiceImpl() + + return LockClient( + unlock: { + try await authenticationService.authenticate(reason: "잠금을 해제하려면 인증이 필요합니다") + } + ) + }() +} From 086f6cfc2507996e99b91eeef41e408a99745247 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 01:26:06 +0900 Subject: [PATCH 05/26] =?UTF-8?q?[#64]=20feat:=20=EC=98=A8=EB=B3=B4?= =?UTF-8?q?=EB=94=A9=EC=97=90=20=EC=8B=A4=EC=A0=9C=20Touch=20ID=20?= =?UTF-8?q?=EC=9D=B8=EC=A6=9D=EA=B3=BC=20iCloud=20=EB=8F=99=EA=B8=B0?= =?UTF-8?q?=ED=99=94=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enable Touch ID는 OnboardingClient를 통해 실제 인증을 수행한 뒤 다음 단계로 넘어가고, Enable Sync는 iCloud 계정 상태를 확인해 사용 가능하면 동기화 설정을 저장한다. 두 경우 모두 실패 시 alert로 안내한다. --- .../Dependencies/OnboardingClient.swift | 34 +++++++ .../Onboarding/OnboardingFeature.swift | 96 ++++++++++++++++++- .../Features/Onboarding/OnboardingView.swift | 3 +- .../Onboarding/OnboardingFeatureTests.swift | 96 +++++++++++++++++++ .../Dependencies/OnboardingClient+Live.swift | 30 ++++++ 5 files changed, 254 insertions(+), 5 deletions(-) create mode 100644 Projects/DVPresentation/Sources/Dependencies/OnboardingClient.swift create mode 100644 Projects/DVPresentation/Tests/Onboarding/OnboardingFeatureTests.swift create mode 100644 Projects/Devault/Sources/Composition/Dependencies/OnboardingClient+Live.swift diff --git a/Projects/DVPresentation/Sources/Dependencies/OnboardingClient.swift b/Projects/DVPresentation/Sources/Dependencies/OnboardingClient.swift new file mode 100644 index 0000000..d47153d --- /dev/null +++ b/Projects/DVPresentation/Sources/Dependencies/OnboardingClient.swift @@ -0,0 +1,34 @@ +// Copyright © 2026 Devault. All rights reserved + +import Foundation + +import ComposableArchitecture +import DVDomain + +/// Onboarding Feature 전용 Client. 보안(Touch ID)·iCloud 동기화 단계에서 사용. +/// Live 조립은 Devault(App 타겟)에서 `UserAuthenticationService`/`ICloudAccountService`를 wrap. +@DependencyClient +public struct OnboardingClient: Sendable { + + /// Touch ID 또는 시스템 암호로 사용자를 인증한다. 실패 시 `UserAuthenticationError`를 throw한다. + public var enableTouchID: @Sendable () async throws -> Void + + /// iCloud 계정 상태를 확인하고, 사용 가능하면 동기화 사용 설정을 저장한다. + public var enableICloudSync: @Sendable () async -> ICloudAccountStatus = { .couldNotDetermine } +} + +extension OnboardingClient: TestDependencyKey { + public static let testValue = OnboardingClient() + + public static let previewValue = OnboardingClient( + enableTouchID: { }, + enableICloudSync: { .available } + ) +} + +extension DependencyValues { + public var onboardingClient: OnboardingClient { + get { self[OnboardingClient.self] } + set { self[OnboardingClient.self] = newValue } + } +} diff --git a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift index 56fa436..b3cb47e 100644 --- a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift +++ b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift @@ -3,6 +3,7 @@ import Foundation import ComposableArchitecture +import DVDomain // MARK: - OnboardingFeature @@ -23,6 +24,7 @@ public struct OnboardingFeature { @ObservableState public struct State: Equatable { public var step: Step = .welcome + @Presents var alert: AlertState? public init(step: Step = .welcome) { self.step = step @@ -48,8 +50,18 @@ public struct OnboardingFeature { case didTapEnableTouchID case didTapNotNow case didTapEnableSync + + // MARK: - Internal + + case touchIDAuthSucceeded + case touchIDAuthFailed(UserAuthenticationError) + case iCloudSyncStatusResponse(ICloudAccountStatus) case syncingCompleted + // MARK: - Child + + case alert(PresentationAction) + // MARK: - Delegate case delegate(Delegate) @@ -57,11 +69,13 @@ public struct OnboardingFeature { public enum Delegate: Equatable { case completed } + + public enum Alert: Equatable {} } // MARK: - Dependencies - @Dependency(\.continuousClock) var clock + @Dependency(\.onboardingClient) var onboardingClient // MARK: - Init @@ -77,26 +91,100 @@ public struct OnboardingFeature { return .none case .didTapEnableTouchID: + return .run { send in + do { + try await onboardingClient.enableTouchID() + await send(.touchIDAuthSucceeded) + } catch let error as UserAuthenticationError { + await send(.touchIDAuthFailed(error)) + } catch { + await send(.touchIDAuthFailed(.failed)) + } + } + + case .touchIDAuthSucceeded: state.step = .icloudSync return .none + case .touchIDAuthFailed(let error): + state.alert = makeTouchIDFailedAlert(error) + return .none + case .didTapNotNow: return .send(.delegate(.completed)) case .didTapEnableSync: state.step = .syncing return .run { send in - // TODO: 실제 iCloud sync 완료 콜백으로 교체 - try await clock.sleep(for: .seconds(3)) - await send(.syncingCompleted) + let status = await onboardingClient.enableICloudSync() + await send(.iCloudSyncStatusResponse(status)) } + case .iCloudSyncStatusResponse(let status): + guard status == .available else { + state.step = .icloudSync + state.alert = makeICloudSyncUnavailableAlert(status) + return .none + } + return .send(.syncingCompleted) + case .syncingCompleted: return .send(.delegate(.completed)) + case .alert: + return .none + case .delegate: return .none } } + .ifLet(\.$alert, action: \.alert) + } +} + +// MARK: - Private + +private extension OnboardingFeature { + + func makeTouchIDFailedAlert(_ error: UserAuthenticationError) -> AlertState { + let message: String + switch error { + case .unavailable: + message = "시스템 설정에서 로그인 암호가 설정되어 있는지 확인해주세요." + case .cancelled: + message = "Touch ID 사용을 원하시면 다시 시도해주세요." + case .failed: + message = "다시 시도해주세요." + } + return AlertState { + TextState("인증하지 못했어요") + } actions: { + ButtonState(role: .cancel) { TextState("확인") } + } message: { + TextState(message) + } + } + + func makeICloudSyncUnavailableAlert(_ status: ICloudAccountStatus) -> AlertState { + let message: String + switch status { + case .available: + message = "다시 시도해주세요." + case .noAccount: + message = "설정 앱에서 iCloud 로그인 후 다시 시도해주세요." + case .restricted: + message = "기기의 iCloud 사용 제한 설정을 확인해주세요." + case .temporarilyUnavailable: + message = "잠시 후 다시 시도해주세요." + case .couldNotDetermine: + message = "네트워크 연결을 확인하고 다시 시도해주세요." + } + return AlertState { + TextState("iCloud 동기화를 사용할 수 없어요") + } actions: { + ButtonState(role: .cancel) { TextState("확인") } + } message: { + TextState(message) + } } } diff --git a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingView.swift b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingView.swift index e60a8cd..783753a 100644 --- a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingView.swift +++ b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingView.swift @@ -25,6 +25,7 @@ public struct OnboardingView: View { public var body: some View { content .dvScreenBackground() + .alert($store.scope(state: \.alert, action: \.alert)) } } @@ -76,7 +77,7 @@ extension OnboardingView { } // MARK: 1.2 iCloud Sync - // TODO: - 실제 iCloud sync 완료 콜백 받을 때 store.send(.syncingCompleted) + private var icloudSyncView: some View { VStack(spacing: 20) { appIconWithTextView("Sync your secrets with iCloud?") diff --git a/Projects/DVPresentation/Tests/Onboarding/OnboardingFeatureTests.swift b/Projects/DVPresentation/Tests/Onboarding/OnboardingFeatureTests.swift new file mode 100644 index 0000000..dd964d7 --- /dev/null +++ b/Projects/DVPresentation/Tests/Onboarding/OnboardingFeatureTests.swift @@ -0,0 +1,96 @@ +// Copyright © 2026 Devault. All rights reserved + +import ComposableArchitecture +import DVDomain +import Foundation +import Testing + +@testable import DVPresentation + +@MainActor +@Suite("OnboardingFeature") +struct OnboardingFeatureTests { + + @Test("didTapEnableTouchID는 인증에 성공하면 iCloud 단계로 넘어간다") + func enableTouchIDSucceeds() async { + let store = TestStore(initialState: OnboardingFeature.State(step: .security)) { + OnboardingFeature() + } withDependencies: { + $0.onboardingClient.enableTouchID = { } + } + + await store.send(.didTapEnableTouchID) + await store.receive(.touchIDAuthSucceeded) { + $0.step = .icloudSync + } + } + + @Test("didTapEnableTouchID는 인증에 실패하면 alert를 띄우고 단계를 유지한다") + func enableTouchIDShowsAlertOnFailure() async { + let store = TestStore(initialState: OnboardingFeature.State(step: .security)) { + OnboardingFeature() + } withDependencies: { + $0.onboardingClient.enableTouchID = { throw UserAuthenticationError.failed } + } + + await store.send(.didTapEnableTouchID) + await store.receive(.touchIDAuthFailed(.failed)) { + $0.alert = AlertState { + TextState("인증하지 못했어요") + } actions: { + ButtonState(role: .cancel) { TextState("확인") } + } message: { + TextState("다시 시도해주세요.") + } + } + } + + @Test("didTapEnableSync는 iCloud 계정을 사용할 수 있으면 온보딩을 완료한다") + func enableSyncSucceeds() async { + let store = TestStore(initialState: OnboardingFeature.State(step: .icloudSync)) { + OnboardingFeature() + } withDependencies: { + $0.onboardingClient.enableICloudSync = { .available } + } + + await store.send(.didTapEnableSync) { + $0.step = .syncing + } + await store.receive(.iCloudSyncStatusResponse(.available)) + await store.receive(.syncingCompleted) + await store.receive(.delegate(.completed)) + } + + @Test("didTapEnableSync는 iCloud 계정이 없으면 alert를 띄우고 되돌아간다") + func enableSyncShowsAlertWhenNoAccount() async { + let store = TestStore(initialState: OnboardingFeature.State(step: .icloudSync)) { + OnboardingFeature() + } withDependencies: { + $0.onboardingClient.enableICloudSync = { .noAccount } + } + + await store.send(.didTapEnableSync) { + $0.step = .syncing + } + await store.receive(.iCloudSyncStatusResponse(.noAccount)) { + $0.step = .icloudSync + $0.alert = AlertState { + TextState("iCloud 동기화를 사용할 수 없어요") + } actions: { + ButtonState(role: .cancel) { TextState("확인") } + } message: { + TextState("설정 앱에서 iCloud 로그인 후 다시 시도해주세요.") + } + } + } + + @Test("didTapNotNow는 온보딩을 완료 처리한다") + func notNowCompletesOnboarding() async { + let store = TestStore(initialState: OnboardingFeature.State(step: .icloudSync)) { + OnboardingFeature() + } + + await store.send(.didTapNotNow) + await store.receive(.delegate(.completed)) + } +} diff --git a/Projects/Devault/Sources/Composition/Dependencies/OnboardingClient+Live.swift b/Projects/Devault/Sources/Composition/Dependencies/OnboardingClient+Live.swift new file mode 100644 index 0000000..975f142 --- /dev/null +++ b/Projects/Devault/Sources/Composition/Dependencies/OnboardingClient+Live.swift @@ -0,0 +1,30 @@ +// Copyright © 2026 Devault. All rights reserved + +import ComposableArchitecture +import DVPresentation +import DVDomain +import DVData + +extension OnboardingClient: @retroactive DependencyKey { + public static let liveValue: OnboardingClient = { + let authenticationService: any UserAuthenticationService = LocalUserAuthenticationServiceImpl() + let accountService: any ICloudAccountService = CloudKitAccountServiceImpl( + containerIdentifier: "iCloud.com.devault.app" + ) + let repository: any SettingsRepository = SettingsRepositoryImpl() + let iCloudSyncSettings: any ICloudSyncSettingsUseCase = ICloudSyncSettingsUseCaseImpl(repository: repository) + + return OnboardingClient( + enableTouchID: { + try await authenticationService.authenticate(reason: "Touch ID를 사용하려면 인증이 필요합니다") + }, + enableICloudSync: { + let status = await accountService.fetchAccountStatus() + if status == .available { + iCloudSyncSettings.setEnabled(true) + } + return status + } + ) + }() +} From 8173d434a73ea1abdfdfd349b007ad2f0cb72b0f Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 01:33:10 +0900 Subject: [PATCH 06/26] =?UTF-8?q?[#64]=20refactor:=20SwiftData=20=EB=AA=A8?= =?UTF-8?q?=EB=8D=B8=20@Attribute(.unique)=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CloudKit은 유니크 제약을 지원하지 않아 CloudKit 미러링을 켜면 스키마 검증에서 실패한다. 유일성은 이미 각 RepositoryImpl이 insert 전 fetch로 직접 보장하고 있어(duplicateID/duplicateProjectLink 등), SwiftData 레벨의 제약은 제거해도 동작에 변화가 없다. --- Projects/DVData/Sources/Storage/Local/Models/AppAuditLog.swift | 2 +- Projects/DVData/Sources/Storage/Local/Models/BackupRecord.swift | 2 +- Projects/DVData/Sources/Storage/Local/Models/Project.swift | 2 +- Projects/DVData/Sources/Storage/Local/Models/Secret.swift | 2 +- .../DVData/Sources/Storage/Local/Models/SecretAuditLog.swift | 2 +- .../DVData/Sources/Storage/Local/Models/SecretMetadata.swift | 2 +- .../DVData/Sources/Storage/Local/Models/SecretPayload.swift | 2 +- .../DVData/Sources/Storage/Local/Models/SecretProjectLink.swift | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Projects/DVData/Sources/Storage/Local/Models/AppAuditLog.swift b/Projects/DVData/Sources/Storage/Local/Models/AppAuditLog.swift index ad1a92a..bc37b97 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/AppAuditLog.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/AppAuditLog.swift @@ -5,7 +5,7 @@ import SwiftData extension SwiftDataModel { @Model final class AppAuditLog { - @Attribute(.unique) var id: UUID + var id: UUID var eventType: String var actorContext: String var occurredAt: Date diff --git a/Projects/DVData/Sources/Storage/Local/Models/BackupRecord.swift b/Projects/DVData/Sources/Storage/Local/Models/BackupRecord.swift index 0a543dd..5a9443c 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/BackupRecord.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/BackupRecord.swift @@ -5,7 +5,7 @@ import SwiftData extension SwiftDataModel { @Model final class BackupRecord { - @Attribute(.unique) var id: UUID + var id: UUID var fileName: String var filePath: String var backupScope: String diff --git a/Projects/DVData/Sources/Storage/Local/Models/Project.swift b/Projects/DVData/Sources/Storage/Local/Models/Project.swift index b063900..c23e09b 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/Project.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/Project.swift @@ -6,7 +6,7 @@ import SwiftData extension SwiftDataModel { @Model final class Project { - @Attribute(.unique) var id: UUID + var id: UUID var name: String var createdAt: Date var updatedAt: Date diff --git a/Projects/DVData/Sources/Storage/Local/Models/Secret.swift b/Projects/DVData/Sources/Storage/Local/Models/Secret.swift index 075a82a..52042cd 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/Secret.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/Secret.swift @@ -6,7 +6,7 @@ import Foundation extension SwiftDataModel { @Model final class Secret { - @Attribute(.unique) var id: UUID + var id: UUID var name: String var secretType: String var subType: String? diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretAuditLog.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretAuditLog.swift index b5968df..344cf0a 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretAuditLog.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretAuditLog.swift @@ -5,7 +5,7 @@ import SwiftData extension SwiftDataModel { @Model final class SecretAuditLog { - @Attribute(.unique) var id: UUID + var id: UUID var eventType: String var actorContext: String var isSuspicious: Bool diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift index 2cfa7ab..f1271ca 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift @@ -6,7 +6,7 @@ import SwiftData extension SwiftDataModel { @Model final class SecretMetadata { - @Attribute(.unique) var id: UUID + var id: UUID var metadataJSON: Data var schemaVersion: Int diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift index 80813e7..a658366 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift @@ -6,7 +6,7 @@ import SwiftData extension SwiftDataModel { @Model final class SecretPayload { - @Attribute(.unique) var id: UUID + var id: UUID var encryptedData: Data var keyTag: String var schemaVersion: Int diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift index 08d18aa..8e5e589 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift @@ -5,7 +5,7 @@ import SwiftData extension SwiftDataModel { @Model final class SecretProjectLink { - @Attribute(.unique) var linkKey: String + var linkKey: String var linkedAt: Date @Relationship From 6c05b053140f45f6051e29f671085a3d51750ed1 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 01:43:03 +0900 Subject: [PATCH 07/26] =?UTF-8?q?[#64]=20refactor:=20SwiftData=20to-one=20?= =?UTF-8?q?=EA=B4=80=EA=B3=84=20optional=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CloudKit은 to-one 관계가 optional이어야 한다. SecretProjectLink.project/ secret, SecretPayload.secret, SecretMetadata.secret을 optional로 바꾸고, 관련 소비처(Project.secrets/Secret.projects 계산 프로퍼티, 프로젝트별 조회 predicate)를 nil-safe하게 고친다. 현재 delete rule이 전부 cascade라 로컬 단일 기기 환경에서는 값이 항상 채워지며, 이 optional은 기기 간 CloudKit 동기화 지연으로 관계 대상이 아직 도착하지 않은 순간만 대비한다. --- .../RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift | 2 +- Projects/DVData/Sources/Storage/Local/Models/Project.swift | 2 +- Projects/DVData/Sources/Storage/Local/Models/Secret.swift | 2 +- .../DVData/Sources/Storage/Local/Models/SecretMetadata.swift | 2 +- .../DVData/Sources/Storage/Local/Models/SecretPayload.swift | 2 +- .../Sources/Storage/Local/Models/SecretProjectLink.swift | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift b/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift index 4c6191a..f705321 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift @@ -119,7 +119,7 @@ enum SecretFetchDescriptorBuilder { return #Predicate { secret in secret.deletedAt == nil && secret.projectLinks.contains { link in - link.project.id == projectID + link.project != nil && link.project!.id == projectID } && (!hasSecretType || secret.secretType == secretType) && (!hasService || secret.service == service) && diff --git a/Projects/DVData/Sources/Storage/Local/Models/Project.swift b/Projects/DVData/Sources/Storage/Local/Models/Project.swift index c23e09b..2c8237a 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/Project.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/Project.swift @@ -16,7 +16,7 @@ extension SwiftDataModel { /// `SecretProjectLink`를 통해 연결된 시크릿 목록을 반환하는 편의 접근자입니다. var secrets: [Secret] { - secretLinks.map(\.secret) + secretLinks.compactMap(\.secret) } init( diff --git a/Projects/DVData/Sources/Storage/Local/Models/Secret.swift b/Projects/DVData/Sources/Storage/Local/Models/Secret.swift index 52042cd..202fdf2 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/Secret.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/Secret.swift @@ -33,7 +33,7 @@ extension SwiftDataModel { /// `SecretProjectLink`를 통해 연결된 프로젝트 목록을 반환하는 편의 접근자입니다. var projects: [Project] { - projectLinks.map(\.project) + projectLinks.compactMap(\.project) } init( diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift index f1271ca..0f157db 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift @@ -11,7 +11,7 @@ extension SwiftDataModel { var schemaVersion: Int @Relationship - var secret: Secret + var secret: Secret? init( id: UUID = UUID(), diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift index a658366..9ad76d5 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift @@ -12,7 +12,7 @@ extension SwiftDataModel { var schemaVersion: Int @Relationship - var secret: Secret + var secret: Secret? init( id: UUID = UUID(), diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift index 8e5e589..d11588f 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift @@ -9,10 +9,10 @@ extension SwiftDataModel { var linkedAt: Date @Relationship - var project: Project + var project: Project? @Relationship - var secret: Secret + var secret: Secret? init( project: Project, From 5598e9a9698e5b0090ef8a521b04570846610f0b Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 01:51:05 +0900 Subject: [PATCH 08/26] =?UTF-8?q?[#64]=20refactor:=20SwiftData=20=EB=AA=A8?= =?UTF-8?q?=EB=8D=B8=20non-optional=20=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0?= =?UTF-8?q?=EC=97=90=20=EC=84=A0=EC=96=B8=EB=B6=80=20=EA=B8=B0=EB=B3=B8?= =?UTF-8?q?=EA=B0=92=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CloudKit은 non-optional 프로퍼티가 선언부에 기본값을 갖고 있어야 스키마로 인식한다. 커스텀 init이 항상 값을 채워주므로 런타임 동작에는 변화가 없고, CloudKit 스키마 검증을 통과하기 위한 메타데이터 목적의 변경이다. schemaVersion 기본값은 실제 SecretContent 타입들이 전부 1을 쓰고 있어 1로 맞춘다. --- .../Storage/Local/Models/AppAuditLog.swift | 8 ++++---- .../Storage/Local/Models/BackupRecord.swift | 16 ++++++++-------- .../Sources/Storage/Local/Models/Project.swift | 10 +++++----- .../Sources/Storage/Local/Models/Secret.swift | 16 ++++++++-------- .../Storage/Local/Models/SecretAuditLog.swift | 18 +++++++++--------- .../Storage/Local/Models/SecretMetadata.swift | 6 +++--- .../Storage/Local/Models/SecretPayload.swift | 8 ++++---- .../Local/Models/SecretProjectLink.swift | 4 ++-- 8 files changed, 43 insertions(+), 43 deletions(-) diff --git a/Projects/DVData/Sources/Storage/Local/Models/AppAuditLog.swift b/Projects/DVData/Sources/Storage/Local/Models/AppAuditLog.swift index bc37b97..cdfa413 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/AppAuditLog.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/AppAuditLog.swift @@ -5,10 +5,10 @@ import SwiftData extension SwiftDataModel { @Model final class AppAuditLog { - var id: UUID - var eventType: String - var actorContext: String - var occurredAt: Date + var id: UUID = UUID() + var eventType: String = "" + var actorContext: String = "" + var occurredAt: Date = Date() init( id: UUID = UUID(), diff --git a/Projects/DVData/Sources/Storage/Local/Models/BackupRecord.swift b/Projects/DVData/Sources/Storage/Local/Models/BackupRecord.swift index 5a9443c..7da1a71 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/BackupRecord.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/BackupRecord.swift @@ -5,14 +5,14 @@ import SwiftData extension SwiftDataModel { @Model final class BackupRecord { - var id: UUID - var fileName: String - var filePath: String - var backupScope: String - var hasIndependentPassword: Bool - var keyTag: String - var totalSecrets: Int - var createdAt: Date + var id: UUID = UUID() + var fileName: String = "" + var filePath: String = "" + var backupScope: String = "" + var hasIndependentPassword: Bool = false + var keyTag: String = "" + var totalSecrets: Int = 0 + var createdAt: Date = Date() init( id: UUID = UUID(), diff --git a/Projects/DVData/Sources/Storage/Local/Models/Project.swift b/Projects/DVData/Sources/Storage/Local/Models/Project.swift index 2c8237a..e7bf3bb 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/Project.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/Project.swift @@ -6,13 +6,13 @@ import SwiftData extension SwiftDataModel { @Model final class Project { - var id: UUID - var name: String - var createdAt: Date - var updatedAt: Date + var id: UUID = UUID() + var name: String = "" + var createdAt: Date = Date() + var updatedAt: Date = Date() @Relationship(deleteRule: .cascade, inverse: \SwiftDataModel.SecretProjectLink.project) - var secretLinks: [SecretProjectLink] + var secretLinks: [SecretProjectLink] = [] /// `SecretProjectLink`를 통해 연결된 시크릿 목록을 반환하는 편의 접근자입니다. var secrets: [Secret] { diff --git a/Projects/DVData/Sources/Storage/Local/Models/Secret.swift b/Projects/DVData/Sources/Storage/Local/Models/Secret.swift index 202fdf2..f2b23b9 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/Secret.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/Secret.swift @@ -6,21 +6,21 @@ import Foundation extension SwiftDataModel { @Model final class Secret { - var id: UUID - var name: String - var secretType: String + var id: UUID = UUID() + var name: String = "" + var secretType: String = "" var subType: String? var service: String? var environment: String? var expiresAt: Date? var memo: String? - var liked: Bool + var liked: Bool = false var deletedAt: Date? - var createdAt: Date - var updatedAt: Date + var createdAt: Date = Date() + var updatedAt: Date = Date() @Relationship(deleteRule: .cascade, inverse: \SwiftDataModel.SecretProjectLink.secret) - var projectLinks: [SecretProjectLink] + var projectLinks: [SecretProjectLink] = [] @Relationship(deleteRule: .cascade, inverse: \SwiftDataModel.SecretPayload.secret) var payload: SecretPayload? @@ -29,7 +29,7 @@ extension SwiftDataModel { var metadata: SecretMetadata? @Relationship(deleteRule: .nullify, inverse: \SwiftDataModel.SecretAuditLog.secret) - var auditLogs: [SecretAuditLog] + var auditLogs: [SecretAuditLog] = [] /// `SecretProjectLink`를 통해 연결된 프로젝트 목록을 반환하는 편의 접근자입니다. var projects: [Project] { diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretAuditLog.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretAuditLog.swift index 344cf0a..b297654 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretAuditLog.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretAuditLog.swift @@ -5,16 +5,16 @@ import SwiftData extension SwiftDataModel { @Model final class SecretAuditLog { - var id: UUID - var eventType: String - var actorContext: String - var isSuspicious: Bool - var occurredAt: Date - + var id: UUID = UUID() + var eventType: String = "" + var actorContext: String = "" + var isSuspicious: Bool = false + var occurredAt: Date = Date() + // MARK: - Snapshot field - var secretSnapshotId: UUID - var secretNameSnapshot: String - var secretTypeSnapshot: String + var secretSnapshotId: UUID = UUID() + var secretNameSnapshot: String = "" + var secretTypeSnapshot: String = "" @Relationship var secret: Secret? diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift index 0f157db..7081eb2 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretMetadata.swift @@ -6,9 +6,9 @@ import SwiftData extension SwiftDataModel { @Model final class SecretMetadata { - var id: UUID - var metadataJSON: Data - var schemaVersion: Int + var id: UUID = UUID() + var metadataJSON: Data = Data() + var schemaVersion: Int = 1 @Relationship var secret: Secret? diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift index 9ad76d5..2d150d1 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretPayload.swift @@ -6,10 +6,10 @@ import SwiftData extension SwiftDataModel { @Model final class SecretPayload { - var id: UUID - var encryptedData: Data - var keyTag: String - var schemaVersion: Int + var id: UUID = UUID() + var encryptedData: Data = Data() + var keyTag: String = "" + var schemaVersion: Int = 1 @Relationship var secret: Secret? diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift index d11588f..b996f66 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift @@ -5,8 +5,8 @@ import SwiftData extension SwiftDataModel { @Model final class SecretProjectLink { - var linkKey: String - var linkedAt: Date + var linkKey: String = "" + var linkedAt: Date = Date() @Relationship var project: Project? From 6bcf58c0b97195a532fbf83d0a80085d36298de9 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 01:52:52 +0900 Subject: [PATCH 09/26] =?UTF-8?q?[#64]=20feat:=20LocalStorage=EC=97=90?= =?UTF-8?q?=EC=84=9C=20CloudKit=20=EB=AF=B8=EB=9F=AC=EB=A7=81=20=ED=99=9C?= =?UTF-8?q?=EC=84=B1=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 스키마가 CloudKit 호환 요건(unique 제거, 관계 optional화, 기본값 추가)을 모두 충족했으므로, cloudKitDatabase를 .none에서 등록해둔 iCloud 컨테이너로 명시해 실제 미러링을 켠다. --- Projects/DVData/Sources/Storage/Local/LocalStorage.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Projects/DVData/Sources/Storage/Local/LocalStorage.swift b/Projects/DVData/Sources/Storage/Local/LocalStorage.swift index b3a1cad..d30a461 100644 --- a/Projects/DVData/Sources/Storage/Local/LocalStorage.swift +++ b/Projects/DVData/Sources/Storage/Local/LocalStorage.swift @@ -10,9 +10,10 @@ public final class LocalStorage { } public static func makeDefault() throws -> LocalStorage { - // cloudKitDatabase 기본값(.automatic)은 앱에 iCloud entitlement가 있으면 CloudKit 미러링을 시도한다. - // 현재 모델들은 CloudKit이 지원하지 않는 @Attribute(.unique)를 쓰고 있어 그대로 두면 초기화가 실패하므로 명시적으로 끈다. - let configuration = ModelConfiguration(isStoredInMemoryOnly: false, cloudKitDatabase: .none) + let configuration = ModelConfiguration( + isStoredInMemoryOnly: false, + cloudKitDatabase: .private("iCloud.com.devault.app") + ) let modelContainer = try ModelContainer( for: Schema.appSchema, configurations: configuration From c71ac4eaf44bb3657e8272c3d7fc02cf82c50eb1 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 01:58:40 +0900 Subject: [PATCH 10/26] =?UTF-8?q?[#64]=20feat:=20=EB=A7=88=EC=8A=A4?= =?UTF-8?q?=ED=84=B0=20=EC=95=94=ED=98=B8=ED=99=94=20=ED=82=A4=20iCloud=20?= =?UTF-8?q?Keychain=20=EB=8F=99=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit kSecAttrAccessibleWhenUnlockedThisDeviceOnly 대신 kSecAttrAccessibleWhenUnlocked + kSecAttrSynchronizable를 사용해 마스터 키가 iCloud Keychain으로 기기 간 동기화되도록 한다. 조회 쿼리에는 kSecAttrSynchronizableAny를 추가해 이전 방식으로 저장된 키도 계속 찾을 수 있게 한다. 아직 실사용자 데이터가 없는 개발 단계라 별도 마이그레이션 로직 없이 단순 전환한다. --- .../ServiceImpl/Security/Keychain/KeychainKeyStore.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift b/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift index 62d14ad..f609be5 100644 --- a/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift +++ b/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift @@ -38,6 +38,7 @@ extension KeychainKeyStore { /// Keychain에서 tag에 해당하는 raw key Data를 조회한다. private func loadKeyData(tag: String) throws -> Data? { var query = keyQuery(tag: tag) + query[kSecAttrSynchronizable] = kSecAttrSynchronizableAny let attributes: [CFString: Any] = [ kSecReturnData: true, kSecMatchLimit: kSecMatchLimitOne, @@ -65,7 +66,8 @@ extension KeychainKeyStore { let attributes: [CFString: Any] = [ kSecValueData: data, - kSecAttrAccessible: kSecAttrAccessibleWhenUnlockedThisDeviceOnly, + kSecAttrAccessible: kSecAttrAccessibleWhenUnlocked, + kSecAttrSynchronizable: true, ] var addQuery = query From 7e8d627a21c463b7e31f37a62854450bf2a08079 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 02:05:07 +0900 Subject: [PATCH 11/26] =?UTF-8?q?[#64]=20feat:=20iCloud=20=EB=8F=99?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EC=84=A4=EC=A0=95=20NSUbiquitousKeyValueS?= =?UTF-8?q?tore=EB=A1=9C=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit isICloudSyncEnabled는 기기가 아닌 사용자 단위 설정이라 iCloud Key-value storage(NSUbiquitousKeyValueStore)로 옮겨 기기 간 동기화되게 한다. hasCompletedOnboarding은 기기별로 Touch ID 확인을 다시 거쳐야 하므로 로컬 UserDefaults에 그대로 둔다. entitlements에 ubiquity-kvstore-identifier를 추가한다. --- .../Settings/SettingsRepositoryImpl.swift | 13 ++++++++++--- .../Settings/UbiquitousStoreKey.swift | 18 ++++++++++++++++++ .../Settings/UserDefaultsKey.swift | 1 - .../Devault/Resources/Devault.entitlements | 2 ++ 4 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 Projects/DVData/Sources/RepositoryImpl/Settings/UbiquitousStoreKey.swift diff --git a/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift b/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift index 9a4fae9..111b4d2 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift @@ -7,9 +7,14 @@ import DVDomain public struct SettingsRepositoryImpl: SettingsRepository, @unchecked Sendable { private let defaults: UserDefaults + private let ubiquitousStore: NSUbiquitousKeyValueStore - public init(defaults: UserDefaults = .standard) { + public init( + defaults: UserDefaults = .standard, + ubiquitousStore: NSUbiquitousKeyValueStore = .default + ) { self.defaults = defaults + self.ubiquitousStore = ubiquitousStore } public func hasCompletedOnboarding() -> Bool { @@ -20,11 +25,13 @@ public struct SettingsRepositoryImpl: SettingsRepository, @unchecked Sendable { defaults.set(true, forKey: .hasCompletedOnboarding) } + // iCloud 동기화 사용 여부는 기기가 아닌 사용자 단위 설정이라 NSUbiquitousKeyValueStore로 관리한다. + // (hasCompletedOnboarding은 기기별로 Touch ID 확인을 다시 거쳐야 해서 로컬 UserDefaults 유지) public func isICloudSyncEnabled() -> Bool { - defaults.bool(forKey: .isICloudSyncEnabled) + ubiquitousStore.bool(forKey: .isICloudSyncEnabled) } public func setICloudSyncEnabled(_ enabled: Bool) { - defaults.set(enabled, forKey: .isICloudSyncEnabled) + ubiquitousStore.set(enabled, forKey: .isICloudSyncEnabled) } } diff --git a/Projects/DVData/Sources/RepositoryImpl/Settings/UbiquitousStoreKey.swift b/Projects/DVData/Sources/RepositoryImpl/Settings/UbiquitousStoreKey.swift new file mode 100644 index 0000000..175ea5f --- /dev/null +++ b/Projects/DVData/Sources/RepositoryImpl/Settings/UbiquitousStoreKey.swift @@ -0,0 +1,18 @@ +// Copyright © 2026 Devault. All rights reserved + +import Foundation + +enum UbiquitousStoreKey: String { + case isICloudSyncEnabled +} + +extension NSUbiquitousKeyValueStore { + func bool(forKey key: UbiquitousStoreKey) -> Bool { + bool(forKey: key.rawValue) + } + + func set(_ value: Bool, forKey key: UbiquitousStoreKey) { + set(value, forKey: key.rawValue) + synchronize() + } +} diff --git a/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift b/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift index 5302c73..8a4907a 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift @@ -4,7 +4,6 @@ import Foundation enum UserDefaultsKey: String { case hasCompletedOnboarding - case isICloudSyncEnabled } extension UserDefaults { diff --git a/Projects/Devault/Resources/Devault.entitlements b/Projects/Devault/Resources/Devault.entitlements index 780bb46..947dc6b 100644 --- a/Projects/Devault/Resources/Devault.entitlements +++ b/Projects/Devault/Resources/Devault.entitlements @@ -10,5 +10,7 @@ CloudKit + com.apple.developer.ubiquity-kvstore-identifier + $(TeamIdentifierPrefix)com.devault.app From 4df3308b27ebaeb251b86e3e0b83f554cd3e5fe9 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 02:14:01 +0900 Subject: [PATCH 12/26] =?UTF-8?q?[#64]=20fix:=20isICloudSyncEnabled=20?= =?UTF-8?q?=ED=94=8C=EB=9E=98=EA=B7=B8=EA=B0=80=20=EC=8B=A4=EC=A0=9C=20Clo?= =?UTF-8?q?udKit=20=EB=AF=B8=EB=9F=AC=EB=A7=81=EC=9D=84=20=EC=A0=9C?= =?UTF-8?q?=EC=96=B4=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8D=98=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LocalStorage.makeDefault()가 항상 .private(...)로 CloudKit 미러링을 시도해, 온보딩에서 iCloud Sync를 거절해도 데이터가 그대로 올라가고 있었다. iCloudSyncEnabled 파라미터를 받아 false면 cloudKitDatabase를 .none으로 구성하도록 고치고, LiveStorage.shared가 SettingsRepository의 저장된 값을 읽어 넘기도록 한다. --- Projects/DVData/Sources/Storage/Local/LocalStorage.swift | 4 ++-- Projects/Devault/Sources/Composition/LiveStorage.swift | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Projects/DVData/Sources/Storage/Local/LocalStorage.swift b/Projects/DVData/Sources/Storage/Local/LocalStorage.swift index d30a461..a0453da 100644 --- a/Projects/DVData/Sources/Storage/Local/LocalStorage.swift +++ b/Projects/DVData/Sources/Storage/Local/LocalStorage.swift @@ -9,10 +9,10 @@ public final class LocalStorage { self.modelContainer = modelContainer } - public static func makeDefault() throws -> LocalStorage { + public static func makeDefault(iCloudSyncEnabled: Bool) throws -> LocalStorage { let configuration = ModelConfiguration( isStoredInMemoryOnly: false, - cloudKitDatabase: .private("iCloud.com.devault.app") + cloudKitDatabase: iCloudSyncEnabled ? .private("iCloud.com.devault.app") : .none ) let modelContainer = try ModelContainer( for: Schema.appSchema, diff --git a/Projects/Devault/Sources/Composition/LiveStorage.swift b/Projects/Devault/Sources/Composition/LiveStorage.swift index 87f09cd..d558311 100644 --- a/Projects/Devault/Sources/Composition/LiveStorage.swift +++ b/Projects/Devault/Sources/Composition/LiveStorage.swift @@ -2,6 +2,7 @@ import OSLog import DVData +import DVDomain /// Composition Root에서 공유하는 ModelContainer 단일 인스턴스. /// SecretRepositoryImpl, ProjectRepositoryImpl이 동일 컨테이너를 참조해야 한다. @@ -10,7 +11,8 @@ enum LiveStorage { static let shared: LocalStorage = { do { - return try LocalStorage.makeDefault() + let settingsRepository: any SettingsRepository = SettingsRepositoryImpl() + return try LocalStorage.makeDefault(iCloudSyncEnabled: settingsRepository.isICloudSyncEnabled()) } catch { logger.critical("LocalStorage 초기화 실패: \(error, privacy: .public)") fatalError("LocalStorage 초기화 실패 — 앱을 재시작하거나 데이터를 복원하세요.\n\(error)") From 2698c0ff835460b4bf3a6ca09e635bbb133b4d36 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 02:23:47 +0900 Subject: [PATCH 13/26] =?UTF-8?q?[#64]=20chore:=20TODO=20=EC=A3=BC?= =?UTF-8?q?=EC=84=9D=20=EB=B0=8F=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RepositoryImpl/Settings/SettingsRepositoryImpl.swift | 4 ++-- Projects/Devault/Sources/Composition/LiveStorage.swift | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift b/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift index 111b4d2..fcbeafc 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift @@ -17,6 +17,7 @@ public struct SettingsRepositoryImpl: SettingsRepository, @unchecked Sendable { self.ubiquitousStore = ubiquitousStore } + // hasCompletedOnboarding은 기기별로 Touch ID 확인이 필요하므로 로컬 UserDefaults로 관리 public func hasCompletedOnboarding() -> Bool { defaults.bool(forKey: .hasCompletedOnboarding) } @@ -25,8 +26,7 @@ public struct SettingsRepositoryImpl: SettingsRepository, @unchecked Sendable { defaults.set(true, forKey: .hasCompletedOnboarding) } - // iCloud 동기화 사용 여부는 기기가 아닌 사용자 단위 설정이라 NSUbiquitousKeyValueStore로 관리한다. - // (hasCompletedOnboarding은 기기별로 Touch ID 확인을 다시 거쳐야 해서 로컬 UserDefaults 유지) + // iCloud 동기화 사용 여부: 사용자 단위 설정이므로 NSUbiquitousKeyValueStore로 관리 public func isICloudSyncEnabled() -> Bool { ubiquitousStore.bool(forKey: .isICloudSyncEnabled) } diff --git a/Projects/Devault/Sources/Composition/LiveStorage.swift b/Projects/Devault/Sources/Composition/LiveStorage.swift index d558311..91ef7f2 100644 --- a/Projects/Devault/Sources/Composition/LiveStorage.swift +++ b/Projects/Devault/Sources/Composition/LiveStorage.swift @@ -5,10 +5,11 @@ import DVData import DVDomain /// Composition Root에서 공유하는 ModelContainer 단일 인스턴스. -/// SecretRepositoryImpl, ProjectRepositoryImpl이 동일 컨테이너를 참조해야 한다. enum LiveStorage { private static let logger = Logger(subsystem: "com.devault", category: "LiveStorage") + // shared는 static let이라 앱 실행 중 isICloudSyncEnabled가 바뀌어도 이미 만들어진 ModelContainer에는 반영되지 않는다. Settings 화면에서 토글을 지원하려면 + // TODO: - Settings 화면에서 토글을 지원하려면 재시작 안내를 띄우거나, ModelContainer를 런타임에 재생성하는 hot-swap이 필요 static let shared: LocalStorage = { do { let settingsRepository: any SettingsRepository = SettingsRepositoryImpl() From 59fab04ba5655f9f495d394a5665e3cdfb01ee26 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 02:37:20 +0900 Subject: [PATCH 14/26] =?UTF-8?q?[#64]=20add:=20app=20icon=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80.=20chore:=20lottie=20=ED=8C=8C=EC=9D=BC=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/{ => Lottie}/progress.lottie | Bin Projects/Devault/Project.swift | 5 +- .../Devault_IC.icon/Assets/App Icon_BG.png | Bin 0 -> 330520 bytes .../Devault_IC.icon/Assets/App Icon_Lock.png | Bin 0 -> 7451 bytes .../AppIcon/Devault_IC.icon/icon.json | 47 ++++++++++++++++++ 5 files changed, 51 insertions(+), 1 deletion(-) rename Projects/DVDesign/Resources/{ => Lottie}/progress.lottie (100%) create mode 100644 Projects/Devault/Resources/AppIcon/Devault_IC.icon/Assets/App Icon_BG.png create mode 100644 Projects/Devault/Resources/AppIcon/Devault_IC.icon/Assets/App Icon_Lock.png create mode 100644 Projects/Devault/Resources/AppIcon/Devault_IC.icon/icon.json diff --git a/Projects/DVDesign/Resources/progress.lottie b/Projects/DVDesign/Resources/Lottie/progress.lottie similarity index 100% rename from Projects/DVDesign/Resources/progress.lottie rename to Projects/DVDesign/Resources/Lottie/progress.lottie diff --git a/Projects/Devault/Project.swift b/Projects/Devault/Project.swift index a4fa2aa..9b2955b 100644 --- a/Projects/Devault/Project.swift +++ b/Projects/Devault/Project.swift @@ -25,7 +25,10 @@ let project = Project.project( // 3rd-party dependency .tca(), ], - settings: .settings(base: ["DEVELOPMENT_TEAM": "UKY6HK6U6Y"]) + settings: .settings(base: [ + "DEVELOPMENT_TEAM": "UKY6HK6U6Y", + "ASSETCATALOG_COMPILER_APPICON_NAME": "Devault_IC", + ]) ), ], schemes: [ diff --git a/Projects/Devault/Resources/AppIcon/Devault_IC.icon/Assets/App Icon_BG.png b/Projects/Devault/Resources/AppIcon/Devault_IC.icon/Assets/App Icon_BG.png new file mode 100644 index 0000000000000000000000000000000000000000..4dcd934f6da6e0e9d9f84ec06224322c5d1025a4 GIT binary patch literal 330520 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ⅅnu5PO+y9bSnmer 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%0AEowX}5 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 U3|v5(St$Y%c5sp_1FMl>E6=iwcrVUG=2$CjDq+ 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 gL@}}PyQvX5w8Le#!;csIgL8ZM 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%0D~yc4<4jjlEPhMx~=6D0LzrWE&_~ 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 O00001zN>I{|3=%|gT;WI%2_h~aNkKsb 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 literal 0 HcmV?d00001 diff --git a/Projects/Devault/Resources/AppIcon/Devault_IC.icon/icon.json b/Projects/Devault/Resources/AppIcon/Devault_IC.icon/icon.json new file mode 100644 index 0000000..8c9b87a --- /dev/null +++ b/Projects/Devault/Resources/AppIcon/Devault_IC.icon/icon.json @@ -0,0 +1,47 @@ +{ + "fill" : { + "solid" : "display-p3:0.10196,0.14118,0.12549,1.00000" + }, + "groups" : [ + { + "layers" : [ + { + "image-name" : "App Icon_Lock.png", + "name" : "App Icon_Lock", + "position" : { + "scale" : 1.1, + "translation-in-points" : [ + 0, + -4 + ] + } + }, + { + "image-name" : "App Icon_BG.png", + "name" : "App Icon_BG", + "position" : { + "scale" : 1.85, + "translation-in-points" : [ + 0, + 0 + ] + } + } + ], + "shadow" : { + "kind" : "neutral", + "opacity" : 0.5 + }, + "translucency" : { + "enabled" : true, + "value" : 0.5 + } + } + ], + "supported-platforms" : { + "circles" : [ + "watchOS" + ], + "squares" : "shared" + } +} \ No newline at end of file From 0d19438e826e929d1a7df56ac45dc10fbf739bf0 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Fri, 31 Jul 2026 03:00:44 +0900 Subject: [PATCH 15/26] =?UTF-8?q?[#64]=20feat:=20=EC=95=B1=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20sidebar?= =?UTF-8?q?=20=EC=95=B1=20=EB=A1=9C=EA=B3=A0=EB=B7=B0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Design모듈에 DVImage, Image extension으로 dv 메서드 추가 --- .../Assets.xcassets/Image/Contents.json | 6 +++++ .../Image/appIcon.imageset/Contents.json | 12 ++++++++++ .../Image/appIcon.imageset/appIcon.pdf | Bin 0 -> 11533 bytes .../Sources/Foundations/Image/DVImage.swift | 13 +++++++++++ .../Foundations/Image/Image+DVImage.swift | 9 +++++++ .../Resources/Localizable.xcstrings | 2 +- .../Sources/Features/Lock/LockView.swift | 7 +++--- .../Features/Onboarding/OnboardingView.swift | 7 +++--- .../Features/Sidebar/SidebarView.swift | 22 ++++++++++-------- 9 files changed, 61 insertions(+), 17 deletions(-) create mode 100644 Projects/DVDesign/Resources/Assets.xcassets/Image/Contents.json create mode 100644 Projects/DVDesign/Resources/Assets.xcassets/Image/appIcon.imageset/Contents.json create mode 100644 Projects/DVDesign/Resources/Assets.xcassets/Image/appIcon.imageset/appIcon.pdf create mode 100644 Projects/DVDesign/Sources/Foundations/Image/DVImage.swift create mode 100644 Projects/DVDesign/Sources/Foundations/Image/Image+DVImage.swift diff --git a/Projects/DVDesign/Resources/Assets.xcassets/Image/Contents.json b/Projects/DVDesign/Resources/Assets.xcassets/Image/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Projects/DVDesign/Resources/Assets.xcassets/Image/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Projects/DVDesign/Resources/Assets.xcassets/Image/appIcon.imageset/Contents.json b/Projects/DVDesign/Resources/Assets.xcassets/Image/appIcon.imageset/Contents.json new file mode 100644 index 0000000..eb741c2 --- /dev/null +++ b/Projects/DVDesign/Resources/Assets.xcassets/Image/appIcon.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "appIcon.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Projects/DVDesign/Resources/Assets.xcassets/Image/appIcon.imageset/appIcon.pdf b/Projects/DVDesign/Resources/Assets.xcassets/Image/appIcon.imageset/appIcon.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fb193da817cbf63052614ef0e578969893822726 GIT binary patch literal 11533 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 literal 0 HcmV?d00001 diff --git a/Projects/DVDesign/Sources/Foundations/Image/DVImage.swift b/Projects/DVDesign/Sources/Foundations/Image/DVImage.swift new file mode 100644 index 0000000..b04b354 --- /dev/null +++ b/Projects/DVDesign/Sources/Foundations/Image/DVImage.swift @@ -0,0 +1,13 @@ +// Copyright © 2026 Devault. All rights reserved + +import SwiftUI + +public enum DVImage: CaseIterable { + case appIcon + + public var image: Image { + switch self { + case .appIcon: return Image("appIcon", bundle: .module) + } + } +} diff --git a/Projects/DVDesign/Sources/Foundations/Image/Image+DVImage.swift b/Projects/DVDesign/Sources/Foundations/Image/Image+DVImage.swift new file mode 100644 index 0000000..c1776af --- /dev/null +++ b/Projects/DVDesign/Sources/Foundations/Image/Image+DVImage.swift @@ -0,0 +1,9 @@ +// Copyright © 2026 Devault. All rights reserved + +import SwiftUI + +public extension Image { + static func dv(_ token: DVImage) -> Image { + token.image + } +} diff --git a/Projects/DVPresentation/Resources/Localizable.xcstrings b/Projects/DVPresentation/Resources/Localizable.xcstrings index 62dc6fd..6742114 100644 --- a/Projects/DVPresentation/Resources/Localizable.xcstrings +++ b/Projects/DVPresentation/Resources/Localizable.xcstrings @@ -49,4 +49,4 @@ } }, "version" : "1.1" -} \ No newline at end of file +} diff --git a/Projects/DVPresentation/Sources/Features/Lock/LockView.swift b/Projects/DVPresentation/Sources/Features/Lock/LockView.swift index 9db5a8e..79ddad1 100644 --- a/Projects/DVPresentation/Sources/Features/Lock/LockView.swift +++ b/Projects/DVPresentation/Sources/Features/Lock/LockView.swift @@ -48,9 +48,10 @@ extension LockView { private var appIconWithLogoView: some View { VStack(spacing: 20) { - RoundedRectangle(cornerRadius: 20) - .fill(Color.dv(.gray800)) - .frame(width: 80, height: 80) + Image.dv(.appIcon) + .resizable() + .scaledToFit() + .frame(width: 80) ( Text("De").foregroundStyle(Color.dv(.vaultDark)) + Text("Vault").foregroundStyle(Color.dv(.vaultGreen)) diff --git a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingView.swift b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingView.swift index 783753a..f459f84 100644 --- a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingView.swift +++ b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingView.swift @@ -116,9 +116,10 @@ extension OnboardingView { // MARK: Shared private var appIcon: some View { - RoundedRectangle(cornerRadius: 20) - .fill(Color.dv(.gray800)) - .frame(width: 80, height: 80) + Image.dv(.appIcon) + .resizable() + .scaledToFit() + .frame(width: 80) } private var appIconWithLogoView: some View { diff --git a/Projects/DVPresentation/Sources/Features/Sidebar/SidebarView.swift b/Projects/DVPresentation/Sources/Features/Sidebar/SidebarView.swift index fcc5ef8..a08fb33 100644 --- a/Projects/DVPresentation/Sources/Features/Sidebar/SidebarView.swift +++ b/Projects/DVPresentation/Sources/Features/Sidebar/SidebarView.swift @@ -41,17 +41,19 @@ extension SidebarView { .padding(.horizontal, 12) } - // 임시 로고뷰 입니다. private var logoView: some View { - HStack { - Rectangle() - .fill(Color.red) - .frame(width: 52, height: 28) - .overlay( - Text("LOGO") - .font(.system(size: 18, weight: .semibold)) - .foregroundStyle(.black) - ) + HStack(spacing: 4) { + Image.dv(.appIcon) + .resizable() + .scaledToFit() + .frame(width: 28) + + ( + Text("De").foregroundStyle(Color.dv(.vaultDark)) + + + Text("Vault").foregroundStyle(Color.dv(.vaultGreen)) + ) + .font(.dv(.headingXL)) Spacer() } } From cf6b72ce1081294c1623c33b6e2c4ac24f9e8236 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Tue, 4 Aug 2026 02:41:32 +0900 Subject: [PATCH 16/26] =?UTF-8?q?[#64]=20fix:=20public=20extension=20?= =?UTF-8?q?=EC=A0=91=EA=B7=BC=20=EC=A0=9C=EC=96=B4=20=EA=B0=80=EC=9D=B4?= =?UTF-8?q?=EB=93=9C=20=EC=9C=84=EB=B0=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 코드 가이드에 따라 public extension 대신 개별 선언마다 접근 제어자를 명시한다. --- Projects/DVCore/Sources/Logger/DVLogger.swift | 22 +++++++++---------- .../Sources/Components/DVFloatingPanel.swift | 4 ++-- .../Foundations/Color/Color+DVColor.swift | 4 ++-- .../Foundations/Fonts/Font+DVFont.swift | 4 ++-- .../Foundations/Fonts/View+DVFont.swift | 4 ++-- .../Foundations/Image/Image+DVImage.swift | 4 ++-- .../Sources/Repository/SecretQuery.swift | 6 ++--- .../Interface/Secret/PatchSecretUseCase.swift | 4 ++-- .../Sources/Dependencies/SecretClient.swift | 4 ++-- .../Sidebar/Model/ProjectItem+Mapping.swift | 4 ++-- .../Features/Sidebar/Model/ProjectItem.swift | 4 ++-- 11 files changed, 32 insertions(+), 32 deletions(-) diff --git a/Projects/DVCore/Sources/Logger/DVLogger.swift b/Projects/DVCore/Sources/Logger/DVLogger.swift index cfcdbce..8d1df93 100644 --- a/Projects/DVCore/Sources/Logger/DVLogger.swift +++ b/Projects/DVCore/Sources/Logger/DVLogger.swift @@ -52,15 +52,15 @@ public protocol DVLogger { static var defaultCategory: LogCategory { get } } -public extension DVLogger { - static var defaultCategory: LogCategory { .general } +extension DVLogger { + public static var defaultCategory: LogCategory { .general } } // MARK: - Level Methods -public extension DVLogger { +extension DVLogger { /// 상세 디버그 로그. Debug 빌드 전용. - static func debug(_ message: @autoclosure () -> String, category: LogCategory? = nil, + public static func debug(_ message: @autoclosure () -> String, category: LogCategory? = nil, file: String = #fileID, function: String = #function, line: Int = #line) { #if DEBUG emit(.debug, "⚪️", message(), category ?? defaultCategory, file, function, line) @@ -68,7 +68,7 @@ public extension DVLogger { } /// 일반 정보 로그. Debug 빌드 전용. - static func info(_ message: @autoclosure () -> String, category: LogCategory? = nil, + public static func info(_ message: @autoclosure () -> String, category: LogCategory? = nil, file: String = #fileID, function: String = #function, line: Int = #line) { #if DEBUG emit(.info, "🔵", message(), category ?? defaultCategory, file, function, line) @@ -76,7 +76,7 @@ public extension DVLogger { } /// 경고 로그. Debug 빌드 전용. - static func warn(_ message: @autoclosure () -> String, category: LogCategory? = nil, + public static func warn(_ message: @autoclosure () -> String, category: LogCategory? = nil, file: String = #fileID, function: String = #function, line: Int = #line) { #if DEBUG emit(.default, "🟡", message(), category ?? defaultCategory, file, function, line) @@ -84,13 +84,13 @@ public extension DVLogger { } /// 에러 로그. 항상 기록되며 Release 에선 마스킹된다. - static func error(_ message: @autoclosure () -> String, category: LogCategory? = nil, + public static func error(_ message: @autoclosure () -> String, category: LogCategory? = nil, file: String = #fileID, function: String = #function, line: Int = #line) { emit(.error, "🔴", message(), category ?? defaultCategory, file, function, line) } /// 치명적 에러 로그. 항상 기록되며 Release 에선 마스킹된다. - static func critical(_ message: @autoclosure () -> String, category: LogCategory? = nil, + public static func critical(_ message: @autoclosure () -> String, category: LogCategory? = nil, file: String = #fileID, function: String = #function, line: Int = #line) { emit(.fault, "🟣", message(), category ?? defaultCategory, file, function, line) } @@ -98,10 +98,10 @@ public extension DVLogger { // MARK: - measure -public extension DVLogger { +extension DVLogger { /// 동기 블록의 실행 시간을 `⏱ … - 12.34ms` 로 로깅한다. Release 에선 측정 없이 실행만 한다. @discardableResult - static func measure(_ label: String, category: LogCategory? = nil, + public static func measure(_ label: String, category: LogCategory? = nil, file: String = #fileID, function: String = #function, line: Int = #line, _ work: () throws -> T) rethrows -> T { #if DEBUG @@ -117,7 +117,7 @@ public extension DVLogger { /// ``measure(_:category:file:function:line:_:)`` 의 async 버전. @discardableResult - static func measure(_ label: String, category: LogCategory? = nil, + public static func measure(_ label: String, category: LogCategory? = nil, file: String = #fileID, function: String = #function, line: Int = #line, _ work: () async throws -> T) async rethrows -> T { #if DEBUG diff --git a/Projects/DVDesign/Sources/Components/DVFloatingPanel.swift b/Projects/DVDesign/Sources/Components/DVFloatingPanel.swift index 6c60163..3d1e6c5 100644 --- a/Projects/DVDesign/Sources/Components/DVFloatingPanel.swift +++ b/Projects/DVDesign/Sources/Components/DVFloatingPanel.swift @@ -17,8 +17,8 @@ import SwiftUI /// ``` /// /// 패널 바깥을 클릭하면 자동으로 닫힌다(`isPresented`를 `false`로 되돌림). -public extension View { - func floatingPanel( +extension View { + public func floatingPanel( isPresented: Binding, @ViewBuilder content: @escaping () -> PanelContent ) -> some View { diff --git a/Projects/DVDesign/Sources/Foundations/Color/Color+DVColor.swift b/Projects/DVDesign/Sources/Foundations/Color/Color+DVColor.swift index 7b1cc3d..ce62226 100644 --- a/Projects/DVDesign/Sources/Foundations/Color/Color+DVColor.swift +++ b/Projects/DVDesign/Sources/Foundations/Color/Color+DVColor.swift @@ -2,8 +2,8 @@ import SwiftUI -public extension Color { - static func dv(_ token: DVColor) -> Color { +extension Color { + public static func dv(_ token: DVColor) -> Color { token.color } } diff --git a/Projects/DVDesign/Sources/Foundations/Fonts/Font+DVFont.swift b/Projects/DVDesign/Sources/Foundations/Fonts/Font+DVFont.swift index d6ab05a..e5355a9 100644 --- a/Projects/DVDesign/Sources/Foundations/Fonts/Font+DVFont.swift +++ b/Projects/DVDesign/Sources/Foundations/Fonts/Font+DVFont.swift @@ -2,8 +2,8 @@ import SwiftUI -public extension Font { - static func dv(_ token: DVFont) -> Font { +extension Font { + public static func dv(_ token: DVFont) -> Font { token.font } } diff --git a/Projects/DVDesign/Sources/Foundations/Fonts/View+DVFont.swift b/Projects/DVDesign/Sources/Foundations/Fonts/View+DVFont.swift index 70d3536..0fb334a 100644 --- a/Projects/DVDesign/Sources/Foundations/Fonts/View+DVFont.swift +++ b/Projects/DVDesign/Sources/Foundations/Fonts/View+DVFont.swift @@ -2,10 +2,10 @@ import SwiftUI -public extension View { +extension View { /// `DVFont` 토큰을 line-height까지 함께 적용한다. /// 디자인 시스템과 정렬된 타이포그래피를 위해 `.font(...)` 대신 이 modifier를 사용한다. - func dvFont(_ token: DVFont) -> some View { + public func dvFont(_ token: DVFont) -> some View { self .font(token.font) .lineSpacing(token.lineSpacing) diff --git a/Projects/DVDesign/Sources/Foundations/Image/Image+DVImage.swift b/Projects/DVDesign/Sources/Foundations/Image/Image+DVImage.swift index c1776af..ff012db 100644 --- a/Projects/DVDesign/Sources/Foundations/Image/Image+DVImage.swift +++ b/Projects/DVDesign/Sources/Foundations/Image/Image+DVImage.swift @@ -2,8 +2,8 @@ import SwiftUI -public extension Image { - static func dv(_ token: DVImage) -> Image { +extension Image { + public static func dv(_ token: DVImage) -> Image { token.image } } diff --git a/Projects/DVDomain/Sources/Repository/SecretQuery.swift b/Projects/DVDomain/Sources/Repository/SecretQuery.swift index 675fe27..6be5b8d 100644 --- a/Projects/DVDomain/Sources/Repository/SecretQuery.swift +++ b/Projects/DVDomain/Sources/Repository/SecretQuery.swift @@ -28,8 +28,8 @@ public struct SecretQuery: Equatable, Sendable { } } -public extension SecretQuery { - enum Collection: Equatable, Sendable { +extension SecretQuery { + public enum Collection: Equatable, Sendable { case all case liked case expired(referenceDate: Date) @@ -54,7 +54,7 @@ public extension SecretQuery { } } - enum Sort: Equatable, Sendable { + public enum Sort: Equatable, Sendable { case recentlyAdded case oldestFirst case expiringSoon diff --git a/Projects/DVDomain/Sources/UseCase/Interface/Secret/PatchSecretUseCase.swift b/Projects/DVDomain/Sources/UseCase/Interface/Secret/PatchSecretUseCase.swift index 6159011..64fad7d 100644 --- a/Projects/DVDomain/Sources/UseCase/Interface/Secret/PatchSecretUseCase.swift +++ b/Projects/DVDomain/Sources/UseCase/Interface/Secret/PatchSecretUseCase.swift @@ -66,10 +66,10 @@ public protocol PatchSecretUseCase: Sendable { ) async throws -> Secret } -public extension PatchSecretUseCase { +extension PatchSecretUseCase { /// `update(id:patch:projectIDs: .unchanged)`의 편의 메서드. /// liked 토글, metadata 제거 등 Project 연결 변경이 없는 단순 필드 수정에 사용한다. - func updateSimple(id: UUID, with patch: SecretPatch) async throws -> Secret { + public func updateSimple(id: UUID, with patch: SecretPatch) async throws -> Secret { try await update(id: id, patch: patch, projectIDs: .unchanged) } } diff --git a/Projects/DVPresentation/Sources/Dependencies/SecretClient.swift b/Projects/DVPresentation/Sources/Dependencies/SecretClient.swift index ef110fe..ef9d166 100644 --- a/Projects/DVPresentation/Sources/Dependencies/SecretClient.swift +++ b/Projects/DVPresentation/Sources/Dependencies/SecretClient.swift @@ -110,8 +110,8 @@ private extension SecretClient { } } -public extension DependencyValues { - var secretClient: SecretClient { +extension DependencyValues { + public var secretClient: SecretClient { get { self[SecretClient.self] } set { self[SecretClient.self] = newValue } } diff --git a/Projects/DVPresentation/Sources/Features/Sidebar/Model/ProjectItem+Mapping.swift b/Projects/DVPresentation/Sources/Features/Sidebar/Model/ProjectItem+Mapping.swift index c00c207..d68894f 100644 --- a/Projects/DVPresentation/Sources/Features/Sidebar/Model/ProjectItem+Mapping.swift +++ b/Projects/DVPresentation/Sources/Features/Sidebar/Model/ProjectItem+Mapping.swift @@ -2,8 +2,8 @@ import DVDomain -public extension ProjectItem { - init(_ project: Project) { +extension ProjectItem { + public init(_ project: Project) { self.init(id: project.id, name: project.name) } } diff --git a/Projects/DVPresentation/Sources/Features/Sidebar/Model/ProjectItem.swift b/Projects/DVPresentation/Sources/Features/Sidebar/Model/ProjectItem.swift index b48aeee..b0f6d75 100644 --- a/Projects/DVPresentation/Sources/Features/Sidebar/Model/ProjectItem.swift +++ b/Projects/DVPresentation/Sources/Features/Sidebar/Model/ProjectItem.swift @@ -14,8 +14,8 @@ public struct ProjectItem: Equatable, Identifiable, Sendable { // MARK: - Preview Fixtures -public extension ProjectItem { - static let previews: [ProjectItem] = [ +extension ProjectItem { + public static let previews: [ProjectItem] = [ .init(id: UUID(uuidString: "00000000-0000-0000-0000-000000000001")!, name: "Backend"), .init(id: UUID(uuidString: "00000000-0000-0000-0000-000000000002")!, name: "Infrastructure"), .init(id: UUID(uuidString: "00000000-0000-0000-0000-000000000003")!, name: "Mobile"), From a3849344121a7ef6a164389e54a7e91b24f190bd Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Tue, 4 Aug 2026 02:41:46 +0900 Subject: [PATCH 17/26] =?UTF-8?q?[#64]=20fix:=20CloudKit=20=EC=BB=A8?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=84=88=20=EC=8B=9D=EB=B3=84=EC=9E=90=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit iCloud 컨테이너 식별자를 DVCore의 상수로 일원화한다. --- Projects/DVCore/Sources/ICloudContainer.swift | 7 +++++++ Projects/DVData/Sources/Storage/Local/LocalStorage.swift | 3 ++- .../Composition/Dependencies/OnboardingClient+Live.swift | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 Projects/DVCore/Sources/ICloudContainer.swift diff --git a/Projects/DVCore/Sources/ICloudContainer.swift b/Projects/DVCore/Sources/ICloudContainer.swift new file mode 100644 index 0000000..05b0e14 --- /dev/null +++ b/Projects/DVCore/Sources/ICloudContainer.swift @@ -0,0 +1,7 @@ +// Copyright © 2026 Devault. All rights reserved + +/// Devault.entitlements에 등록된 iCloud(CloudKit) 컨테이너 식별자. +/// entitlements 파일 자체는 plist라 이 상수를 참조할 수 없으니, 값을 바꿀 땐 함께 맞춰줘야 한다. +public enum ICloudContainer { + public static let identifier = "iCloud.com.devault.app" +} diff --git a/Projects/DVData/Sources/Storage/Local/LocalStorage.swift b/Projects/DVData/Sources/Storage/Local/LocalStorage.swift index a0453da..a71fbd0 100644 --- a/Projects/DVData/Sources/Storage/Local/LocalStorage.swift +++ b/Projects/DVData/Sources/Storage/Local/LocalStorage.swift @@ -1,5 +1,6 @@ // Copyright © 2026 Devault. All rights reserved +import DVCore import SwiftData public final class LocalStorage { @@ -12,7 +13,7 @@ public final class LocalStorage { public static func makeDefault(iCloudSyncEnabled: Bool) throws -> LocalStorage { let configuration = ModelConfiguration( isStoredInMemoryOnly: false, - cloudKitDatabase: iCloudSyncEnabled ? .private("iCloud.com.devault.app") : .none + cloudKitDatabase: iCloudSyncEnabled ? .private(ICloudContainer.identifier) : .none ) let modelContainer = try ModelContainer( for: Schema.appSchema, diff --git a/Projects/Devault/Sources/Composition/Dependencies/OnboardingClient+Live.swift b/Projects/Devault/Sources/Composition/Dependencies/OnboardingClient+Live.swift index 975f142..72cdb9a 100644 --- a/Projects/Devault/Sources/Composition/Dependencies/OnboardingClient+Live.swift +++ b/Projects/Devault/Sources/Composition/Dependencies/OnboardingClient+Live.swift @@ -1,6 +1,7 @@ // Copyright © 2026 Devault. All rights reserved import ComposableArchitecture +import DVCore import DVPresentation import DVDomain import DVData @@ -9,7 +10,7 @@ extension OnboardingClient: @retroactive DependencyKey { public static let liveValue: OnboardingClient = { let authenticationService: any UserAuthenticationService = LocalUserAuthenticationServiceImpl() let accountService: any ICloudAccountService = CloudKitAccountServiceImpl( - containerIdentifier: "iCloud.com.devault.app" + containerIdentifier: ICloudContainer.identifier ) let repository: any SettingsRepository = SettingsRepositoryImpl() let iCloudSyncSettings: any ICloudSyncSettingsUseCase = ICloudSyncSettingsUseCaseImpl(repository: repository) From f4095157fbd6c4999ec26a949a97123ddc28f11a Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Tue, 4 Aug 2026 02:42:00 +0900 Subject: [PATCH 18/26] =?UTF-8?q?[#64]=20fix:=20Keychain=20=EB=A7=88?= =?UTF-8?q?=EC=8A=A4=ED=84=B0=20=ED=82=A4=20=EC=A0=91=EA=B7=BC=20=EC=A0=95?= =?UTF-8?q?=EC=B1=85=20=EA=B0=95=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Data Protection Keychain과 AfterFirstUnlock 접근성을 명시하고, 추후 CLI 공유를 위한 keychain access group을 등록한다. --- .../Security/Keychain/KeychainKeyStore.swift | 11 ++++++----- Projects/Devault/Resources/Devault.entitlements | 4 ++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift b/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift index f609be5..8223dc5 100644 --- a/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift +++ b/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift @@ -7,18 +7,18 @@ import Security struct KeychainKeyStore: Sendable { private let service: String - + /// Keychain generic password item을 구분할 service namespace를 설정한다. init(service: String) { self.service = service } - + /// tag에 해당하는 symmetric key를 조회하고, 없으면 새 key를 생성해 Keychain에 저장한다. func getOrCreateSymmetricKey(tag: String) throws -> SymmetricKey { if let existing = try loadKeyData(tag: tag) { return SymmetricKey(data: existing) } - + let generated = try generateKeyData() let resolved = try saveOrLoadExistingKeyData(generated, tag: tag) return SymmetricKey(data: resolved) @@ -29,7 +29,7 @@ struct KeychainKeyStore: Sendable { guard let data = try loadKeyData(tag: tag) else { throw SecretCryptoError.keyUnavailable } - + return SymmetricKey(data: data) } } @@ -66,7 +66,7 @@ extension KeychainKeyStore { let attributes: [CFString: Any] = [ kSecValueData: data, - kSecAttrAccessible: kSecAttrAccessibleWhenUnlocked, + kSecAttrAccessible: kSecAttrAccessibleAfterFirstUnlock, kSecAttrSynchronizable: true, ] @@ -95,6 +95,7 @@ extension KeychainKeyStore { kSecClass: kSecClassGenericPassword, kSecAttrService: service, kSecAttrAccount: tag, + kSecUseDataProtectionKeychain: true, ] } diff --git a/Projects/Devault/Resources/Devault.entitlements b/Projects/Devault/Resources/Devault.entitlements index 947dc6b..c89864d 100644 --- a/Projects/Devault/Resources/Devault.entitlements +++ b/Projects/Devault/Resources/Devault.entitlements @@ -12,5 +12,9 @@ com.apple.developer.ubiquity-kvstore-identifier $(TeamIdentifierPrefix)com.devault.app + keychain-access-groups + + $(AppIdentifierPrefix)com.devault.shared + From 0adc5b80b9c9a42d89079027280d4ebc85de2f87 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Tue, 4 Aug 2026 02:42:18 +0900 Subject: [PATCH 19/26] =?UTF-8?q?[#64]=20refactor:=20iCloud=20=EB=8F=99?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EC=84=A4=EC=A0=95=EC=9D=84=20=EB=A1=9C?= =?UTF-8?q?=EC=BB=AC=20=EC=A0=80=EC=9E=A5=EC=9C=BC=EB=A1=9C=20=EB=90=98?= =?UTF-8?q?=EB=8F=8C=EB=A6=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit isICloudSyncEnabled는 기기별 설정이므로 UserDefaults로 되돌리고, Composition Root에서 SettingsRepository를 공유 인스턴스로 관리한다. --- .../Settings/SettingsRepositoryImpl.swift | 6 ++--- .../Settings/UbiquitousStoreKey.swift | 26 +++++++++---------- .../Settings/UserDefaultsKey.swift | 1 + .../Composition/LiveSettingsRepository.swift | 9 +++++++ .../Sources/Composition/LiveStorage.swift | 7 +++-- 5 files changed, 28 insertions(+), 21 deletions(-) create mode 100644 Projects/Devault/Sources/Composition/LiveSettingsRepository.swift diff --git a/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift b/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift index fcbeafc..5849647 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Settings/SettingsRepositoryImpl.swift @@ -26,12 +26,12 @@ public struct SettingsRepositoryImpl: SettingsRepository, @unchecked Sendable { defaults.set(true, forKey: .hasCompletedOnboarding) } - // iCloud 동기화 사용 여부: 사용자 단위 설정이므로 NSUbiquitousKeyValueStore로 관리 + // iCloud 동기화 사용 여부는 독립적으로 켜야 하므로 로컬 UserDefaults로 관리 public func isICloudSyncEnabled() -> Bool { - ubiquitousStore.bool(forKey: .isICloudSyncEnabled) + defaults.bool(forKey: .isICloudSyncEnabled) } public func setICloudSyncEnabled(_ enabled: Bool) { - ubiquitousStore.set(enabled, forKey: .isICloudSyncEnabled) + defaults.set(enabled, forKey: .isICloudSyncEnabled) } } diff --git a/Projects/DVData/Sources/RepositoryImpl/Settings/UbiquitousStoreKey.swift b/Projects/DVData/Sources/RepositoryImpl/Settings/UbiquitousStoreKey.swift index 175ea5f..1778307 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Settings/UbiquitousStoreKey.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Settings/UbiquitousStoreKey.swift @@ -2,17 +2,15 @@ import Foundation -enum UbiquitousStoreKey: String { - case isICloudSyncEnabled -} - -extension NSUbiquitousKeyValueStore { - func bool(forKey key: UbiquitousStoreKey) -> Bool { - bool(forKey: key.rawValue) - } - - func set(_ value: Bool, forKey key: UbiquitousStoreKey) { - set(value, forKey: key.rawValue) - synchronize() - } -} +// 기기 간 동기화가 필요한 설정이 생기면 여기에 케이스를 추가한다. +//enum UbiquitousStoreKey: String {} +// +//extension NSUbiquitousKeyValueStore { +// func bool(forKey key: UbiquitousStoreKey) -> Bool { +// bool(forKey: key.rawValue) +// } +// +// func set(_ value: Bool, forKey key: UbiquitousStoreKey) { +// set(value, forKey: key.rawValue) +// } +//} diff --git a/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift b/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift index 8a4907a..5302c73 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Settings/UserDefaultsKey.swift @@ -4,6 +4,7 @@ import Foundation enum UserDefaultsKey: String { case hasCompletedOnboarding + case isICloudSyncEnabled } extension UserDefaults { diff --git a/Projects/Devault/Sources/Composition/LiveSettingsRepository.swift b/Projects/Devault/Sources/Composition/LiveSettingsRepository.swift new file mode 100644 index 0000000..9f60b7d --- /dev/null +++ b/Projects/Devault/Sources/Composition/LiveSettingsRepository.swift @@ -0,0 +1,9 @@ +// Copyright © 2026 Devault. All rights reserved + +import DVData +import DVDomain + +/// Composition Root에서 공유하는 SettingsRepository 단일 인스턴스. +enum LiveSettingsRepository { + static let shared: any SettingsRepository = SettingsRepositoryImpl() +} diff --git a/Projects/Devault/Sources/Composition/LiveStorage.swift b/Projects/Devault/Sources/Composition/LiveStorage.swift index 91ef7f2..e7477d4 100644 --- a/Projects/Devault/Sources/Composition/LiveStorage.swift +++ b/Projects/Devault/Sources/Composition/LiveStorage.swift @@ -8,12 +8,11 @@ import DVDomain enum LiveStorage { private static let logger = Logger(subsystem: "com.devault", category: "LiveStorage") - // shared는 static let이라 앱 실행 중 isICloudSyncEnabled가 바뀌어도 이미 만들어진 ModelContainer에는 반영되지 않는다. Settings 화면에서 토글을 지원하려면 - // TODO: - Settings 화면에서 토글을 지원하려면 재시작 안내를 띄우거나, ModelContainer를 런타임에 재생성하는 hot-swap이 필요 + // shared는 static let이라 앱 실행 중 isICloudSyncEnabled가 바뀌어도 이미 만들어진 ModelContainer에는 반영되지 않는다. + // TODO: Settings 화면에서 토글을 지원하려면 재시작 안내를 띄우거나, ModelContainer를 런타임에 재생성하는 hot-swap이 필요하다. static let shared: LocalStorage = { do { - let settingsRepository: any SettingsRepository = SettingsRepositoryImpl() - return try LocalStorage.makeDefault(iCloudSyncEnabled: settingsRepository.isICloudSyncEnabled()) + return try LocalStorage.makeDefault(iCloudSyncEnabled: LiveSettingsRepository.shared.isICloudSyncEnabled()) } catch { logger.critical("LocalStorage 초기화 실패: \(error, privacy: .public)") fatalError("LocalStorage 초기화 실패 — 앱을 재시작하거나 데이터를 복원하세요.\n\(error)") From 680c27ccf54d54f788a50e0b35a819f7dac03ef8 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Tue, 4 Aug 2026 02:42:45 +0900 Subject: [PATCH 20/26] =?UTF-8?q?[#64]=20fix:=20CloudKit=20=EB=8F=99?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EC=A7=80=EC=97=B0=20=EC=8B=9C=20Secret=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C/=EC=97=B0=EA=B2=B0=20=EC=95=88=EC=A0=95?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SecretProjectLink에 project/secret id를 스냅샷으로 보관해 관계 동기화 지연 중에도 목록 조회와 프로젝트 연결 갱신이 흔들리지 않게 한다. --- .../RepositoryImpl/Secret/SecretRepositoryImpl.swift | 4 ++-- .../Sources/Storage/Local/Models/SecretProjectLink.swift | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Projects/DVData/Sources/RepositoryImpl/Secret/SecretRepositoryImpl.swift b/Projects/DVData/Sources/RepositoryImpl/Secret/SecretRepositoryImpl.swift index 71deadb..3242651 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Secret/SecretRepositoryImpl.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Secret/SecretRepositoryImpl.swift @@ -78,7 +78,7 @@ public actor SecretRepositoryImpl: SecretRepository { do { let descriptor = SecretFetchDescriptorBuilder.make(from: query) let localSecrets = try modelContext.fetch(descriptor) - let domainSecrets = try localSecrets.map { try $0.toDomain() } + let domainSecrets = localSecrets.compactMap { try? $0.toDomain() } return InMemorySecretQueryFilter.apply(query, to: domainSecrets) } catch let error as SecretRepositoryError { throw error @@ -282,7 +282,7 @@ public actor SecretRepositoryImpl: SecretRepository { apply(patch, to: localSecret) - let currentIDs = Set(localSecret.projects.map(\.id)) + let currentIDs = Set((localSecret.projectLinks ?? []).map(\.projectID)) let desiredIDs = Set(projectIDs) for projectID in desiredIDs.subtracting(currentIDs) { diff --git a/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift b/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift index b996f66..14468bf 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/SecretProjectLink.swift @@ -8,6 +8,12 @@ extension SwiftDataModel { var linkKey: String = "" var linkedAt: Date = Date() + // 관계(project/secret)가 아직 CloudKit에서 동기화되지 않아 nil인 순간에도 + // "이 링크가 어떤 project/secret을 가리키는지"를 판단할 수 있도록 스칼라로도 들고 있는다. + // (SecretAuditLog가 secretSnapshotId를 스냅샷으로 들고 있는 것과 같은 패턴) + var projectID: UUID = UUID() + var secretID: UUID = UUID() + @Relationship var project: Project? @@ -21,6 +27,8 @@ extension SwiftDataModel { ) { self.linkKey = "\(project.id.uuidString):\(secret.id.uuidString)" self.linkedAt = linkedAt + self.projectID = project.id + self.secretID = secret.id self.project = project self.secret = secret } From 6b846656dbac91746ac00c38ba0fc5ad4b89b3a1 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Tue, 4 Aug 2026 02:42:59 +0900 Subject: [PATCH 21/26] =?UTF-8?q?[#64]=20fix:=20CloudKit=20=EA=B4=80?= =?UTF-8?q?=EA=B3=84=20optional=20=ED=81=AC=EB=9E=98=EC=8B=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CloudKit은 to-many 관계도 optional이어야 하므로 Project/Secret의 관계 타입과 조회 predicate를 수정한다. --- .../Secret/SecretFetchDescriptorBuilder.swift | 6 +++--- Projects/DVData/Sources/Storage/Local/Models/Project.swift | 4 ++-- Projects/DVData/Sources/Storage/Local/Models/Secret.swift | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift b/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift index f705321..6c97a0e 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift @@ -118,9 +118,9 @@ enum SecretFetchDescriptorBuilder { case let .project(projectID): return #Predicate { secret in secret.deletedAt == nil && - secret.projectLinks.contains { link in - link.project != nil && link.project!.id == projectID - } && + secret.projectLinks?.contains { link in + link.project?.id == projectID + } == true && (!hasSecretType || secret.secretType == secretType) && (!hasService || secret.service == service) && (!hasEnvironment || secret.environment == environment) diff --git a/Projects/DVData/Sources/Storage/Local/Models/Project.swift b/Projects/DVData/Sources/Storage/Local/Models/Project.swift index e7bf3bb..855dbe1 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/Project.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/Project.swift @@ -12,11 +12,11 @@ extension SwiftDataModel { var updatedAt: Date = Date() @Relationship(deleteRule: .cascade, inverse: \SwiftDataModel.SecretProjectLink.project) - var secretLinks: [SecretProjectLink] = [] + var secretLinks: [SecretProjectLink]? = [] /// `SecretProjectLink`를 통해 연결된 시크릿 목록을 반환하는 편의 접근자입니다. var secrets: [Secret] { - secretLinks.compactMap(\.secret) + (secretLinks ?? []).compactMap(\.secret) } init( diff --git a/Projects/DVData/Sources/Storage/Local/Models/Secret.swift b/Projects/DVData/Sources/Storage/Local/Models/Secret.swift index f2b23b9..6a1d9da 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/Secret.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/Secret.swift @@ -20,7 +20,7 @@ extension SwiftDataModel { var updatedAt: Date = Date() @Relationship(deleteRule: .cascade, inverse: \SwiftDataModel.SecretProjectLink.secret) - var projectLinks: [SecretProjectLink] = [] + var projectLinks: [SecretProjectLink]? = [] @Relationship(deleteRule: .cascade, inverse: \SwiftDataModel.SecretPayload.secret) var payload: SecretPayload? @@ -29,11 +29,11 @@ extension SwiftDataModel { var metadata: SecretMetadata? @Relationship(deleteRule: .nullify, inverse: \SwiftDataModel.SecretAuditLog.secret) - var auditLogs: [SecretAuditLog] = [] + var auditLogs: [SecretAuditLog]? = [] /// `SecretProjectLink`를 통해 연결된 프로젝트 목록을 반환하는 편의 접근자입니다. var projects: [Project] { - projectLinks.compactMap(\.project) + (projectLinks ?? []).compactMap(\.project) } init( From 821137ded2b8fe452705a3edc9d4b51b3d50b7c0 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Tue, 4 Aug 2026 02:43:18 +0900 Subject: [PATCH 22/26] =?UTF-8?q?[#64]=20refactor:=20=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=EC=8B=A4=ED=8C=A8=20=EC=95=8C=EB=9F=BF=20=EA=B3=B5=ED=86=B5?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Touch ID/시스템 암호 인증 실패 알럿 생성 로직을 하나의 헬퍼로 통합하고, 도달 불가능한 케이스에 assertionFailure를 추가한다. --- .../Sources/Features/Lock/LockFeature.swift | 17 +----------- .../Onboarding/OnboardingFeature.swift | 18 ++----------- .../Support/UserAuthenticationAlert.swift | 27 +++++++++++++++++++ 3 files changed, 30 insertions(+), 32 deletions(-) create mode 100644 Projects/DVPresentation/Sources/Support/UserAuthenticationAlert.swift diff --git a/Projects/DVPresentation/Sources/Features/Lock/LockFeature.swift b/Projects/DVPresentation/Sources/Features/Lock/LockFeature.swift index 339847f..f9b156e 100644 --- a/Projects/DVPresentation/Sources/Features/Lock/LockFeature.swift +++ b/Projects/DVPresentation/Sources/Features/Lock/LockFeature.swift @@ -95,21 +95,6 @@ public struct LockFeature { private extension LockFeature { func makeUnlockFailedAlert(_ error: UserAuthenticationError) -> AlertState { - let message: String - switch error { - case .unavailable: - message = "시스템 설정에서 로그인 암호가 설정되어 있는지 확인해주세요." - case .cancelled: - message = "다시 시도해주세요." - case .failed: - message = "다시 시도해주세요." - } - return AlertState { - TextState("잠금을 해제하지 못했어요") - } actions: { - ButtonState(role: .cancel) { TextState("확인") } - } message: { - TextState(message) - } + makeUserAuthenticationFailedAlert(title: "잠금을 해제하지 못했어요", error: error) } } diff --git a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift index b3cb47e..1f9813e 100644 --- a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift +++ b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift @@ -147,28 +147,14 @@ public struct OnboardingFeature { private extension OnboardingFeature { func makeTouchIDFailedAlert(_ error: UserAuthenticationError) -> AlertState { - let message: String - switch error { - case .unavailable: - message = "시스템 설정에서 로그인 암호가 설정되어 있는지 확인해주세요." - case .cancelled: - message = "Touch ID 사용을 원하시면 다시 시도해주세요." - case .failed: - message = "다시 시도해주세요." - } - return AlertState { - TextState("인증하지 못했어요") - } actions: { - ButtonState(role: .cancel) { TextState("확인") } - } message: { - TextState(message) - } + makeUserAuthenticationFailedAlert(title: "인증하지 못했어요", error: error) } func makeICloudSyncUnavailableAlert(_ status: ICloudAccountStatus) -> AlertState { let message: String switch status { case .available: + assertionFailure("iCloudSyncStatusResponse가 이미 .available을 걸러내므로 도달 불가") message = "다시 시도해주세요." case .noAccount: message = "설정 앱에서 iCloud 로그인 후 다시 시도해주세요." diff --git a/Projects/DVPresentation/Sources/Support/UserAuthenticationAlert.swift b/Projects/DVPresentation/Sources/Support/UserAuthenticationAlert.swift new file mode 100644 index 0000000..06d1700 --- /dev/null +++ b/Projects/DVPresentation/Sources/Support/UserAuthenticationAlert.swift @@ -0,0 +1,27 @@ +// Copyright © 2026 Devault. All rights reserved + +import ComposableArchitecture +import DVDomain + +/// Touch ID/시스템 암호 인증 실패를 안내하는 alert. +func makeUserAuthenticationFailedAlert( + title: String, + error: UserAuthenticationError +) -> AlertState { + let message: String + switch error { + case .unavailable: + message = "시스템 설정에서 로그인 암호가 설정되어 있는지 확인해주세요." + case .cancelled: + message = "다시 시도해주세요." + case .failed: + message = "다시 시도해주세요." + } + return AlertState { + TextState(title) + } actions: { + ButtonState(role: .cancel) { TextState("확인") } + } message: { + TextState(message) + } +} From 58d51e2b88841f4ea6ad189d2bf658e88bddb41c Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Tue, 4 Aug 2026 02:43:36 +0900 Subject: [PATCH 23/26] =?UTF-8?q?[#64]=20chore:=20CloudKit=20=EB=94=94?= =?UTF-8?q?=EB=B2=84=EA=B7=B8=20=EB=A1=9C=EA=B7=B8=20launch=20argument=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tuist generate로 스킴이 재생성되어도 유지되도록 CloudKit 디버그 launch argument를 Project.swift에 코드로 명시한다. --- Projects/Devault/Project.swift | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Projects/Devault/Project.swift b/Projects/Devault/Project.swift index 9b2955b..9624b46 100644 --- a/Projects/Devault/Project.swift +++ b/Projects/Devault/Project.swift @@ -35,7 +35,14 @@ let project = Project.project( .scheme( name: DVModule.Devault.name, buildAction: .buildAction(targets: [.target(DVModule.Devault.name)]), - runAction: .runAction(executable: .target(DVModule.Devault.name)) + runAction: .runAction( + executable: .target(DVModule.Devault.name), + arguments: .arguments( + launchArguments: [ + .launchArgument(name: "-com.apple.CoreData.CloudKitDebug 1", isEnabled: true), + ] + ) + ) ), ] ) From 371256b2731fc138dc819c247d449c64ca74bc9f Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Sat, 8 Aug 2026 13:50:53 +0900 Subject: [PATCH 24/26] =?UTF-8?q?[#64]=20fix:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81=20=E2=80=94=20CloudKit?= =?UTF-8?q?=20=EB=8F=99=EA=B8=B0=ED=99=94=20=EC=95=88=EC=A0=95=EC=84=B1/?= =?UTF-8?q?=EB=B3=B4=EC=95=88=20=EA=B0=95=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 프로젝트 필터링 시 동기화 지연 중인 관계 대신 스냅샷 projectID로 판별한다. - Secret 변환 실패 시 목록에서 제외하되 Log.warn으로 남긴다. - iCloud 상태 조회 실패를 네트워크/인증 오류로 구분해 매핑한다. - Keychain 마스터 키 접근성을 WhenUnlocked로 제한한다. - BackupRecord를 별도 ModelConfiguration으로 분리해 로컬 경로가 CloudKit에 동기화되지 않게 한다. --- .../Secret/SecretFetchDescriptorBuilder.swift | 2 +- .../Secret/SecretRepositoryImpl.swift | 11 ++++++++++- .../CloudKitAccountServiceImpl.swift | 9 +++++++++ .../Security/Keychain/KeychainKeyStore.swift | 2 +- .../Sources/Storage/Local/LocalStorage.swift | 12 ++++++++++-- .../Storage/Local/Models/AppSchema.swift | 18 ++++++++++++++++++ .../Interface/ICloudAccountStatus.swift | 2 ++ .../Onboarding/OnboardingFeature.swift | 6 +++++- 8 files changed, 56 insertions(+), 6 deletions(-) diff --git a/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift b/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift index 6c97a0e..c11a4a4 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Secret/SecretFetchDescriptorBuilder.swift @@ -119,7 +119,7 @@ enum SecretFetchDescriptorBuilder { return #Predicate { secret in secret.deletedAt == nil && secret.projectLinks?.contains { link in - link.project?.id == projectID + link.projectID == projectID } == true && (!hasSecretType || secret.secretType == secretType) && (!hasService || secret.service == service) && diff --git a/Projects/DVData/Sources/RepositoryImpl/Secret/SecretRepositoryImpl.swift b/Projects/DVData/Sources/RepositoryImpl/Secret/SecretRepositoryImpl.swift index 3242651..61891c4 100644 --- a/Projects/DVData/Sources/RepositoryImpl/Secret/SecretRepositoryImpl.swift +++ b/Projects/DVData/Sources/RepositoryImpl/Secret/SecretRepositoryImpl.swift @@ -78,7 +78,16 @@ public actor SecretRepositoryImpl: SecretRepository { do { let descriptor = SecretFetchDescriptorBuilder.make(from: query) let localSecrets = try modelContext.fetch(descriptor) - let domainSecrets = localSecrets.compactMap { try? $0.toDomain() } + let domainSecrets = localSecrets.compactMap { localSecret -> DVDomain.Secret? in + do { + return try localSecret.toDomain() + } catch { + // CloudKit 동기화 지연 등으로 payload가 아직 도착하지 않았을 수 있어 목록에서만 건너뜀 + // 반복적으로 찍히면 진짜 손상된 레코드일 수 있으니 확인 필요 + Log.warn("Secret(\(localSecret.id)) 변환 실패, 목록에서 제외: \(error)", category: .storage) + return nil + } + } return InMemorySecretQueryFilter.apply(query, to: domainSecrets) } catch let error as SecretRepositoryError { throw error diff --git a/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift b/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift index ffd2732..f5bd906 100644 --- a/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift +++ b/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift @@ -28,6 +28,15 @@ public struct CloudKitAccountServiceImpl: ICloudAccountService { @unknown default: return .couldNotDetermine } + } catch let error as CKError { + switch error.code { + case .networkUnavailable, .networkFailure: + return .networkUnavailable + case .notAuthenticated: + return .noAccount + default: + return .couldNotDetermine + } } catch { return .couldNotDetermine } diff --git a/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift b/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift index 8223dc5..d5136f2 100644 --- a/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift +++ b/Projects/DVData/Sources/ServiceImpl/Security/Keychain/KeychainKeyStore.swift @@ -66,7 +66,7 @@ extension KeychainKeyStore { let attributes: [CFString: Any] = [ kSecValueData: data, - kSecAttrAccessible: kSecAttrAccessibleAfterFirstUnlock, + kSecAttrAccessible: kSecAttrAccessibleWhenUnlocked, kSecAttrSynchronizable: true, ] diff --git a/Projects/DVData/Sources/Storage/Local/LocalStorage.swift b/Projects/DVData/Sources/Storage/Local/LocalStorage.swift index a71fbd0..a7529c4 100644 --- a/Projects/DVData/Sources/Storage/Local/LocalStorage.swift +++ b/Projects/DVData/Sources/Storage/Local/LocalStorage.swift @@ -11,13 +11,21 @@ public final class LocalStorage { } public static func makeDefault(iCloudSyncEnabled: Bool) throws -> LocalStorage { - let configuration = ModelConfiguration( + let syncedConfiguration = ModelConfiguration( + "Synced", + schema: Schema.syncedSchema, isStoredInMemoryOnly: false, cloudKitDatabase: iCloudSyncEnabled ? .private(ICloudContainer.identifier) : .none ) + let localOnlyConfiguration = ModelConfiguration( + "LocalOnly", + schema: Schema.localOnlySchema, + isStoredInMemoryOnly: false, + cloudKitDatabase: .none + ) let modelContainer = try ModelContainer( for: Schema.appSchema, - configurations: configuration + configurations: syncedConfiguration, localOnlyConfiguration ) return LocalStorage(modelContainer: modelContainer) diff --git a/Projects/DVData/Sources/Storage/Local/Models/AppSchema.swift b/Projects/DVData/Sources/Storage/Local/Models/AppSchema.swift index bbde077..6128c07 100644 --- a/Projects/DVData/Sources/Storage/Local/Models/AppSchema.swift +++ b/Projects/DVData/Sources/Storage/Local/Models/AppSchema.swift @@ -7,6 +7,24 @@ enum SwiftDataModel { } extension Schema { private static let schemaVersion: Schema.Version = Version(1, 0, 0) + /// iCloud와 동기화되는 모델. CloudKit private database로 미러링 됨 + static let syncedSchema = Schema([ + SwiftDataModel.Project.self, + SwiftDataModel.Secret.self, + SwiftDataModel.SecretProjectLink.self, + SwiftDataModel.SecretPayload.self, + SwiftDataModel.SecretMetadata.self, + SwiftDataModel.SecretAuditLog.self, + SwiftDataModel.AppAuditLog.self, + ], version: schemaVersion) + + /// 기기 로컬에만 저장되는 모델. + /// BackupRecord.filePath는 해당 기기의 절대 경로라 다른 기기에서는 의미가 없고, + /// 사용자명 등 로컬 경로 정보가 그대로 iCloud에 올라가면 안 되므로 동기화 스코프에서 제외 + static let localOnlySchema = Schema([ + SwiftDataModel.BackupRecord.self, + ], version: schemaVersion) + static let appSchema = Schema([ SwiftDataModel.Project.self, SwiftDataModel.Secret.self, diff --git a/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift b/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift index a4a359c..2110dbe 100644 --- a/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift +++ b/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift @@ -10,6 +10,8 @@ public enum ICloudAccountStatus: Equatable, Sendable { case restricted /// 일시적으로 사용할 수 없음 case temporarilyUnavailable + /// 네트워크 문제로 상태 확인에 실패함 + case networkUnavailable /// 상태를 확인하지 못함 case couldNotDetermine } diff --git a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift index 1f9813e..3e42e8f 100644 --- a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift +++ b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift @@ -150,6 +150,8 @@ private extension OnboardingFeature { makeUserAuthenticationFailedAlert(title: "인증하지 못했어요", error: error) } + // 지금은 상태별로 알럿 문구만 구분한다. 동기화 진행 상태 표시, 재시도 유도 등 온보딩 iCloud UX 전반은 + // 별도 이슈에서 다룰 예정이다. func makeICloudSyncUnavailableAlert(_ status: ICloudAccountStatus) -> AlertState { let message: String switch status { @@ -162,8 +164,10 @@ private extension OnboardingFeature { message = "기기의 iCloud 사용 제한 설정을 확인해주세요." case .temporarilyUnavailable: message = "잠시 후 다시 시도해주세요." - case .couldNotDetermine: + case .networkUnavailable: message = "네트워크 연결을 확인하고 다시 시도해주세요." + case .couldNotDetermine: + message = "iCloud 상태를 확인하지 못했어요. 잠시 후 다시 시도해주세요." } return AlertState { TextState("iCloud 동기화를 사용할 수 없어요") From a441e778eb4d2f551716418d28cfa094920621f2 Mon Sep 17 00:00:00 2001 From: Hyeon-Ju Date: Sat, 8 Aug 2026 14:05:55 +0900 Subject: [PATCH 25/26] =?UTF-8?q?[#64]=20fix:=20ICloudAccountStatus?= =?UTF-8?q?=EC=97=90=20configurationUnavailable=20case=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift | 5 +++++ .../Sources/Service/Interface/ICloudAccountStatus.swift | 2 ++ .../Sources/Features/Onboarding/OnboardingFeature.swift | 3 +++ 3 files changed, 10 insertions(+) diff --git a/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift b/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift index f5bd906..594b1a5 100644 --- a/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift +++ b/Projects/DVData/Sources/ServiceImpl/ICloudSync/CloudKitAccountServiceImpl.swift @@ -1,6 +1,7 @@ // Copyright © 2026 Devault. All rights reserved import CloudKit +import DVCore import DVDomain public struct CloudKitAccountServiceImpl: ICloudAccountService { @@ -34,6 +35,10 @@ public struct CloudKitAccountServiceImpl: ICloudAccountService { return .networkUnavailable case .notAuthenticated: return .noAccount + case .badContainer, .missingEntitlement: + // container identifier 오타나 entitlement 누락 등 배포 설정 문제. 재시도로는 해결되지 않으므로 로그 추가 + Log.error("iCloud 컨테이너 설정 오류: \(error)", category: .security) + return .configurationUnavailable default: return .couldNotDetermine } diff --git a/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift b/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift index 2110dbe..f3b556a 100644 --- a/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift +++ b/Projects/DVDomain/Sources/Service/Interface/ICloudAccountStatus.swift @@ -12,6 +12,8 @@ public enum ICloudAccountStatus: Equatable, Sendable { case temporarilyUnavailable /// 네트워크 문제로 상태 확인에 실패함 case networkUnavailable + /// 컨테이너 식별자, entitlement 등 배포 설정에 문제가 있어 사용할 수 없음 + case configurationUnavailable /// 상태를 확인하지 못함 case couldNotDetermine } diff --git a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift index 3e42e8f..6916c75 100644 --- a/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift +++ b/Projects/DVPresentation/Sources/Features/Onboarding/OnboardingFeature.swift @@ -166,6 +166,9 @@ private extension OnboardingFeature { message = "잠시 후 다시 시도해주세요." case .networkUnavailable: message = "네트워크 연결을 확인하고 다시 시도해주세요." + case .configurationUnavailable: + // 앱 배포 설정(컨테이너 식별자, entitlement) 문제라 사용자가 재시도해도 해결되지 않음. + message = "iCloud 동기화를 지금 사용할 수 없어요. 나중에 다시 시도해주세요." case .couldNotDetermine: message = "iCloud 상태를 확인하지 못했어요. 잠시 후 다시 시도해주세요." } From 02a0a21b3c427803bfd6664ff009331457e0c803 Mon Sep 17 00:00:00 2001 From: doyeonk429 <80318425+doyeonk429@users.noreply.github.com> Date: Sat, 8 Aug 2026 19:00:31 +0900 Subject: [PATCH 26/26] =?UTF-8?q?[#64]=20chore:=20=ED=8C=80=20=EC=8B=9C?= =?UTF-8?q?=ED=8A=B8=20=EC=97=86=EB=8A=94=20=ED=99=98=EA=B2=BD=EC=97=90?= =?UTF-8?q?=EC=84=9C=EB=8F=84=20=EC=95=B1=20=EB=B9=8C=EB=93=9C=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=84=9C=EB=AA=85=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TUIST_LOCAL_SIGNING=1로 생성하면 iCloud entitlement 없이 ad-hoc 서명하는 로컬 빌드 모드 추가 - 앱 타겟이 프로비저닝 프로파일을 잡지 못해 서명에 실패하던 문제 수정 (CODE_SIGN_STYLE/IDENTITY 명시) - 저장소 안에서만 scripts/를 PATH에 얹어 generate-local을 접두사 없이 실행하도록 구성 - README에 팀 시트가 없는 경우의 워크스페이스 생성 절차 추가 --- .mise.toml | 4 ++++ Projects/Devault/Project.swift | 36 +++++++++++++++++++++++++++++----- README.md | 19 ++++++++++++++++++ scripts/generate-local | 7 +++++++ 4 files changed, 61 insertions(+), 5 deletions(-) create mode 100755 scripts/generate-local diff --git a/.mise.toml b/.mise.toml index f41f549..3d5e69e 100644 --- a/.mise.toml +++ b/.mise.toml @@ -1,2 +1,6 @@ [tools] tuist = "4.191.0" + +# 이 저장소 안에서만 scripts/의 명령을 접두사 없이 실행할 수 있게 한다. (예: generate-local) +[env] +_.path = ["{{config_root}}/scripts"] diff --git a/Projects/Devault/Project.swift b/Projects/Devault/Project.swift index 9624b46..4a1b231 100644 --- a/Projects/Devault/Project.swift +++ b/Projects/Devault/Project.swift @@ -1,6 +1,35 @@ import ProjectDescription import ProjectDescriptionHelpers +// MARK: - Signing + +/// Apple Developer 팀 시트가 없는 팀원을 위한 로컬 빌드 스위치. +/// +/// `TUIST_LOCAL_SIGNING=1 tuist generate`로 켜면 iCloud entitlement를 떼고 ad-hoc 서명으로 빌드한다. +/// entitlement가 없으면 CloudKit 계정 조회가 `.configurationUnavailable`로 떨어져 동기화가 켜지지 않으므로, +/// iCloud를 제외한 나머지 기능은 그대로 확인할 수 있다. +/// +/// TODO: 팀 시트를 전원에게 발급하면 이 분기와 아래 두 설정 딕셔너리를 제거한다. (#64) +let isLocalSigning = Environment.localSigning.getBoolean(default: false) + +let teamSigningSettings: SettingsDictionary = [ + "ASSETCATALOG_COMPILER_APPICON_NAME": "Devault_IC", + "DEVELOPMENT_TEAM": "UKY6HK6U6Y", + // Tuist가 macOS 타겟에 CODE_SIGN_IDENTITY = "-"(ad-hoc)를 기본으로 넣는데, + // iCloud entitlement는 프로비저닝 프로파일을 요구하므로 그대로 두면 서명 단계에서 빌드가 실패한다. + "CODE_SIGN_STYLE": "Automatic", + "CODE_SIGN_IDENTITY": "Apple Development", +] + +let localSigningSettings: SettingsDictionary = [ + "ASSETCATALOG_COMPILER_APPICON_NAME": "Devault_IC", + "CODE_SIGN_STYLE": "Manual", + // Sign to Run Locally. 프로비저닝 프로파일 없이 서명하므로 Apple ID 자체가 필요 없다. + "CODE_SIGN_IDENTITY": "-", +] + +// MARK: - Project + let project = Project.project( name: DVModule.Devault.name, targets: [ @@ -14,7 +43,7 @@ let project = Project.project( ]), sources: .sources, resources: [.glob(pattern: "Resources/**", excluding: ["Resources/*.entitlements"])], - entitlements: .file(path: "Resources/Devault.entitlements"), + entitlements: isLocalSigning ? nil : .file(path: "Resources/Devault.entitlements"), dependencies: [ // internal dependency .presentation(), @@ -25,10 +54,7 @@ let project = Project.project( // 3rd-party dependency .tca(), ], - settings: .settings(base: [ - "DEVELOPMENT_TEAM": "UKY6HK6U6Y", - "ASSETCATALOG_COMPILER_APPICON_NAME": "Devault_IC", - ]) + settings: .settings(base: isLocalSigning ? localSigningSettings : teamSigningSettings) ), ], schemes: [ diff --git a/README.md b/README.md index 2ca92b9..8c4eace 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,24 @@ tuist generate - `Devault.xcworkspace`가 생성됩니다. - 이후 Xcode에서 `Devault.xcworkspace`를 열어 작업합니다. +#### Apple Developer 팀 시트가 없다면 + +앱 타겟은 iCloud(CloudKit) entitlement를 쓰기 때문에, 팀에 초대되지 않은 계정으로는 서명에 실패해 빌드되지 않습니다. +이 경우 `tuist generate` 대신 아래 명령으로 워크스페이스를 생성하세요. + +```bash +generate-local +``` + +- iCloud entitlement를 떼고 ad-hoc 서명("Sign to Run Locally")으로 빌드합니다. Apple ID 자체가 필요 없습니다. +- 생성 이후 빌드/실행은 Xcode에서 평소와 동일합니다. +- iCloud 동기화 기능만 사용할 수 없습니다. 온보딩에서 동기화를 켜면 안내 알럿이 뜨고 넘어갑니다. +- 빌드마다 서명이 달라지므로 키체인 접근 허용을 다시 물어볼 수 있습니다. + +> `generate-local`은 `.mise.toml`이 저장소 안에서만 `scripts/`를 PATH에 얹어주는 덕에 접두사 없이 실행됩니다. +> `command not found`가 뜨면 셸에 mise가 활성화되지 않은 것이니 `./setup.sh`를 먼저 실행하고, +> 최초 1회는 `mise trust`로 설정 파일을 신뢰해야 합니다. + --- ## 자주 쓰는 명령어 @@ -61,6 +79,7 @@ tuist generate | 명령어 | 설명 | |---|---| | `tuist generate` | Xcode 워크스페이스 재생성 | +| `generate-local` | iCloud entitlement 없이 재생성 (팀 시트 없는 경우) | | `tuist install` | 외부 패키지 fetch (Package.swift 변경 시) | | `tuist clean` | Tuist 캐시 및 생성 파일 삭제 | | `./scripts/bootstrap_modules.sh` | 새 모듈 디렉토리 초기화 | diff --git a/scripts/generate-local b/scripts/generate-local new file mode 100755 index 0000000..ece3088 --- /dev/null +++ b/scripts/generate-local @@ -0,0 +1,7 @@ +#!/bin/bash +# Apple Developer 팀 시트가 없는 팀원용 워크스페이스 생성. +# iCloud entitlement를 떼고 ad-hoc 서명으로 빌드되며, iCloud 동기화 기능만 사용할 수 없다. +set -e + +cd "$(dirname "$0")/.." +TUIST_LOCAL_SIGNING=1 tuist generate "$@"