@@ -39,7 +39,7 @@ app → presentation → domain ← data
3939 - ` customview/ ` : Custom views
4040 - ` extension/ ` : Extension functions
4141 - ` model/ ` : Presentation models
42- - Uses Orbit MVI for state management
42+ - ** State Management ** : Gradually migrating away from Orbit MVI (legacy)
4343
4444- ** app** : Application module
4545 - ` di/ ` : Application-level Hilt modules
@@ -109,7 +109,7 @@ o_auth_web_client_id="..."
109109### Key Libraries
110110- ** DI** : Hilt 2.48 with KAPT
111111- ** Networking** : Retrofit 2.9.0, OkHttp logging interceptor
112- - ** State Management** : Orbit MVI 6.0.0
112+ - ** State Management** : Orbit MVI 6.0.0 (LEGACY - being phased out)
113113- ** Navigation** : Navigation Component 2.7.4 with SafeArgs
114114- ** Async** : Coroutines 1.7.3
115115- ** Database** : Room 2.5.2 with KSP for annotation processing
@@ -125,12 +125,19 @@ o_auth_web_client_id="..."
125125Note: Project uses both KAPT (for Hilt, Glide) and KSP (for Room) for annotation processing.
126126
127127### Architecture Patterns
128- - ** MVI** : Orbit for unidirectional data flow
128+
129+ - ** MVI** : Orbit for unidirectional data flow (LEGACY - being phased out)
129130- ** Repository Pattern** : Domain defines interfaces, data implements them
130131- ** Use Cases** : Single responsibility business logic
131132- ** Custom Result Type** : Network calls return ` Result<T> ` using custom ` ResultCallAdapter `
132133
133- ## State Management with Orbit MVI
134+ ## State Management with Orbit MVI (LEGACY)
135+
136+ ** ⚠️ DEPRECATION NOTICE** : Orbit MVI is being gradually phased out from this project. When working
137+ on new features or refactoring existing code, prefer alternative state management approaches instead
138+ of Orbit.
139+
140+ ### Legacy Orbit Pattern (Still in use, but avoid for new features)
134141
135142ViewModels extend ` BaseViewModel<STATE, SIDE_EFFECT> ` which implements:
136143- ` ContainerHost ` from Orbit
@@ -150,6 +157,12 @@ class SomeViewModel @Inject constructor(
150157}
151158```
152159
160+ ### Migration Strategy
161+
162+ - ** For new features** : Do NOT use Orbit MVI
163+ - ** For existing features** : Gradually remove Orbit when refactoring
164+ - ** When in doubt** : Ask the user for guidance on state management approach
165+
153166## Fragment Base Classes
154167
155168- ** NewBaseFragment** : Basic fragment with View Binding
@@ -297,3 +310,45 @@ The project follows a Git Flow-based branching strategy:
297310
298311### Current Branch
299312You are on: ` feature/NR-122 `
313+
314+ ## User Notifications
315+
316+ ** IMPORTANT** : Always send notifications to the user using ` terminal-notifier ` in the following
317+ scenarios:
318+
319+ ### 1. Task Completion
320+
321+ After completing ANY task, send a notification:
322+
323+ ``` bash
324+ terminal-notifier -title " Claude Code" -message " [Task description]" -sound default
325+ ```
326+
327+ Examples:
328+
329+ - File creation:
330+ ` terminal-notifier -title "Claude Code" -message "Created Color.kt and Type.kt files" -sound default `
331+ - Build completion:
332+ ` terminal-notifier -title "Claude Code" -message "Build completed successfully" -sound default `
333+ - Error fixes:
334+ ` terminal-notifier -title "Claude Code" -message "Fixed 5 type errors" -sound default `
335+
336+ ### 2. User Input Required
337+
338+ When asking the user a question (using AskUserQuestion tool or otherwise), send a notification
339+ BEFORE asking:
340+
341+ ``` bash
342+ terminal-notifier -title " Claude Code" -message " 질문이 있습니다" -sound default
343+ ```
344+
345+ This applies to:
346+
347+ - Clarification questions about implementation approaches
348+ - Choices between multiple options
349+ - Requests for additional information
350+ - ** Permission to modify files** : When asking which files can be modified or if a specific file can
351+ be edited
352+ - Any situation requiring user input to proceed
353+
354+ The notification helps the user know when their attention is needed.
0 commit comments