Skip to content

Commit 18855f6

Browse files
committed
chore: DevLogUI Core 의존성 추가
1 parent 8ce4f5c commit 18855f6

5 files changed

Lines changed: 11 additions & 5 deletions

File tree

.hermes/skills/devlog-architecture-harness/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ Ask the user before editing when:
7676
- Firebase/Auth/Firestore/Functions/Messaging-specific logic would leave Infra.
7777
- WidgetCore would depend on Domain, Data, Infra, Persistence, Presentation, UI, or App.
7878
- Presentation would depend on UI, Data, Infra, Persistence, or App.
79-
- UI would depend on Domain, Core, Data, Infra, Persistence, or App.
79+
- UI would depend on Domain, Data, Infra, Persistence, or App.
8080
- Data would gain concrete SDK or storage implementation details.
8181
- The Presentation `Store` flow or reducer responsibility would change.
8282
- A compile fix requires relaxing the intended architecture.

.hermes/skills/devlog-architecture-harness/references/devlog-architecture-flow.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ flowchart TD
9393
App --> WidgetCore
9494
9595
UI --> Presentation
96+
UI --> Core
9697
9798
Presentation --> Domain
9899
Presentation --> Core
@@ -123,7 +124,7 @@ flowchart TD
123124
| `DevLogInfra` | Firebase, social login, network, metadata, messaging implementations | Data, Core | Moving SDK-specific behavior out of Infra |
124125
| `DevLogPersistence` | local stores, image cache, widget snapshot persistence | Data, Core, WidgetCore | Moving domain logic or remote SDK behavior into Persistence |
125126
| `DevLogPresentation` | Store, view models, coordinators, presentation state | Domain, Core | Adding UI, Data, Infra, Persistence, or App dependency |
126-
| `DevLogUI` | SwiftUI views, reusable UI components, view composition | Presentation | Adding Domain, Core, Data, Infra, Persistence, or App dependency |
127+
| `DevLogUI` | SwiftUI views, reusable UI components, view composition | Presentation, Core | Adding Domain, Data, Infra, Persistence, or App dependency |
127128
| `DevLogApp` | composition root, lifecycle, assembler wiring | Concrete app layers | Moving feature logic into App |
128129
| `DevLogWidgetCore` | widget data contracts and pure snapshot logic | Core | Adding Domain, Data, Infra, Persistence, Presentation, UI, or App dependency |
129130
| `DevLogWidgetExtension` | WidgetKit rendering and timeline plumbing | WidgetCore | Calling app/domain services directly |
@@ -164,7 +165,7 @@ flowchart TD
164165
Shared{"Moved only because shared?"}
165166
NewDependency{"New module dependency?"}
166167
ExternalSDK{"External SDK crosses layer?"}
167-
UIBoundary{"UI sees Domain/Core/Data/Infra/Persistence/App?"}
168+
UIBoundary{"UI sees Domain/Data/Infra/Persistence/App?"}
168169
WidgetBoundary{"WidgetCore sees app/domain/data?"}
169170
BuildShortcut{"Build fix relaxes boundary?"}
170171
ScopeDrift{"Outside current task scope?"}

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Treat this repository as an Xcode workspace-based modular iOS app. There is no r
4848
- `Application/DevLogInfra`: Firebase, social login, network, link metadata, messaging, and platform service implementations. Infra may depend on Data and Core. Firebase/Auth/Firestore/Functions/Messaging-specific behavior belongs here unless the user approves another boundary.
4949
- `Application/DevLogPersistence`: local persistence, user defaults, image store, and widget snapshot persistence/updating. Persistence may depend on Data, Core, and WidgetCore when needed for snapshot persistence.
5050
- `Application/DevLogPresentation`: Store, view models, coordinators, UI state structures, and presentation-only helpers. Presentation may depend on Domain and Core. It must not depend on UI, Data, Infra, Persistence, or App.
51-
- `Application/DevLogUI`: SwiftUI views, reusable UI components, and view composition. UI may depend on Presentation. It must not depend on Domain, Core, Data, Infra, Persistence, or App.
51+
- `Application/DevLogUI`: SwiftUI views, reusable UI components, and view composition. UI may depend on Presentation and Core. It must not depend on Domain, Data, Infra, Persistence, or App.
5252
- `Application/DevLogApp`: composition root, app lifecycle, app delegate, app-level routing, and assembler wiring. App may import concrete layers to assemble the dependency graph.
5353
- `Widget/DevLogWidgetCore`: widget snapshot models, factories, keys, app-group constants, and widget-only pure helpers. WidgetCore may depend on Core. It must not depend on Domain, Data, Infra, Persistence, Presentation, UI, or App without explicit user approval.
5454
- `Widget/DevLogWidgetExtension`: WidgetKit UI, widget providers, entries, timelines, and extension resources. It should consume WidgetCore outputs rather than app/domain services directly.
@@ -69,7 +69,7 @@ Ask the user before editing when any of these are true:
6969
- A type could plausibly live in both Core and Domain.
7070
- A shared type is being moved only because multiple modules need access to it.
7171
- A new target dependency would make a lower-level module know a higher-level module.
72-
- UI would start depending on Domain, Core, Data, Infra, Persistence, or App.
72+
- UI would start depending on Domain, Data, Infra, Persistence, or App.
7373
- A build fix would be achieved by loosening an architecture boundary.
7474
- Firebase, GoogleSignIn, AuthenticationServices, UserNotifications, LinkPresentation, Network, WidgetKit, or storage implementation details would move to another layer.
7575
- A repository protocol, service protocol, assembler, or DI ownership boundary would change.

Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
/* Begin PBXBuildFile section */
1010
07DC30D6EE53D3FEB18D4560 /* WebItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F78B3C0ACB40D516459405 /* WebItemRow.swift */; };
1111
1F194D9E0C40F9C8D0BBFD81 /* CacheableImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 211DFAB11C0329E438E5D600 /* CacheableImage.swift */; };
12+
35A74D1DFFD61848769F68B9 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6127A27F1781E689752EA11A /* DevLogCore.framework */; };
1213
3BC362E7B3729B9B766D0E82 /* TodoItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 529B9370AF656D07E6CF9C75 /* TodoItemRow.swift */; };
1314
3CD4C5F7BA6AE10FD96EED2D /* PushNotificationListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD11529C090F3011129AC4A3 /* PushNotificationListView.swift */; };
1415
436190F41C9108F6D4936027 /* TodoInfoSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19FC36435309F9D84B455253 /* TodoInfoSheetView.swift */; };
@@ -75,6 +76,7 @@
7576
56823A0901F960041578908A /* AccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountView.swift; sourceTree = "<group>"; };
7677
5AF9DFAB631D9D4BFE8D5891 /* TodoManageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoManageView.swift; sourceTree = "<group>"; };
7778
6056412772C2E91882B9C3D3 /* EnvironmentValues+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EnvironmentValues+.swift"; sourceTree = "<group>"; };
79+
6127A27F1781E689752EA11A /* DevLogCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7880
6B63ED91862D0C29DCF3ACA6 /* View+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+.swift"; sourceTree = "<group>"; };
7981
77A2025370CB07568F045A6E /* WebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebView.swift; sourceTree = "<group>"; };
8082
80338B4AC83F0BC401B73C81 /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; };
@@ -105,6 +107,7 @@
105107
isa = PBXFrameworksBuildPhase;
106108
buildActionMask = 2147483647;
107109
files = (
110+
35A74D1DFFD61848769F68B9 /* DevLogCore.framework in Frameworks */,
108111
AC8A6800BA486E5B49DF24D3 /* DevLogPresentation.framework in Frameworks */,
109112
FD6C0E913FFA9988FFCF8419 /* MarkdownUI in Frameworks */,
110113
9D8ECA3815FA283133EBFE93 /* OrderedCollections in Frameworks */,
@@ -234,6 +237,7 @@
234237
B94A7F98803FFD2D526DC3F0 /* Products */ = {
235238
isa = PBXGroup;
236239
children = (
240+
6127A27F1781E689752EA11A /* DevLogCore.framework */,
237241
D26E37F394F95F6AA0B184A4 /* DevLogPresentation.framework */,
238242
CA0F9AEA78082777BD930922 /* DevLogUI.framework */,
239243
);

Application/DevLogUI/Project.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ let project = Project.devlogFramework(
77
versionXcconfigPath: "../Shared/Version.xcconfig",
88
packages: DevLogPackages.presentationPackages,
99
dependencies: [
10+
.project(target: "DevLogCore", path: "../DevLogCore"),
1011
.project(target: "DevLogPresentation", path: "../DevLogPresentation"),
1112
] + DevLogPackages.presentationPackageDependencies,
1213
hasTests: false

0 commit comments

Comments
 (0)