You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+5-3Lines changed: 5 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,13 +43,14 @@ Treat this repository as an Xcode workspace-based modular iOS app. There is no r
43
43
### Current layer map
44
44
45
45
-`Application/DevLogCore`: shared app primitives such as DI, logging, query/value types, display options, and widget snapshot value types. Core is shared, but shared access alone is not enough reason to move domain entities into Core.
46
-
-`Application/DevLogDomain`: entities, repository protocols, use case protocols, and use case implementations. Domain may depend on Core. Domain must not depend on Data, Infra, Persistence, Presentation, App, Widget extension UI, Firebase SDKs, or storage implementations.
46
+
-`Application/DevLogDomain`: entities, repository protocols, use case protocols, and use case implementations. Domain may depend on Core. Domain must not depend on Data, Infra, Persistence, Presentation, UI, App, Widget extension UI, Firebase SDKs, or storage implementations.
47
47
-`Application/DevLogData`: repository implementations, DTOs, mappers, data-layer protocols for external services/stores, and widget sync coordination. Data may depend on Domain and Core. Data should not gain direct Firebase, GoogleSignIn, WidgetKit, or concrete storage implementation details unless the user explicitly approves the boundary change.
48
48
-`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.
49
49
-`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.
50
-
-`Application/DevLogPresentation`: SwiftUI views, view models, coordinators, UI state structures, and presentation-only helpers. Presentation may depend on Domain and Core. It must not depend on Data, Infra, Persistence, or App.
50
+
-`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
52
-`Application/DevLogApp`: composition root, app lifecycle, app delegate, app-level routing, and assembler wiring. App may import concrete layers to assemble the dependency graph.
52
-
-`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, or App without explicit user approval.
53
+
-`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.
53
54
-`Widget/DevLogWidgetExtension`: WidgetKit UI, widget providers, entries, timelines, and extension resources. It should consume WidgetCore outputs rather than app/domain services directly.
54
55
-`Firebase/functions`: TypeScript Cloud Functions. Deploy updated functions one by one separately.
55
56
@@ -68,6 +69,7 @@ Ask the user before editing when any of these are true:
68
69
- A type could plausibly live in both Core and Domain.
69
70
- A shared type is being moved only because multiple modules need access to it.
70
71
- 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.
71
73
- A build fix would be achieved by loosening an architecture boundary.
72
74
- Firebase, GoogleSignIn, AuthenticationServices, UserNotifications, LinkPresentation, Network, WidgetKit, or storage implementation details would move to another layer.
73
75
- A repository protocol, service protocol, assembler, or DI ownership boundary would change.
0 commit comments