Skip to content

Commit 596029a

Browse files
authored
all: smoother claude assisting (fixes #13057) (#13054)
1 parent 24dc15f commit 596029a

2 files changed

Lines changed: 49 additions & 50 deletions

File tree

CLAUDE.md

Lines changed: 47 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
- **Primary Language**: Kotlin (with Java compatibility layer)
99
- **Min SDK**: 26 (Android 8.0)
1010
- **Target SDK**: 36 (Android 15)
11-
- **Current Version**: 0.46.0 (versionCode: 4600)
12-
- **Build System**: Gradle 9.3.1 with Android Gradle Plugin 9.0.0
11+
- **Current Version**: 0.53.38 (versionCode: 5338)
12+
- **Build System**: Gradle 9.4.1 with Android Gradle Plugin 9.1.1
1313
- **License**: AGPL v3
1414

1515
### Build Flavors
@@ -27,7 +27,8 @@ myplanet/
2727
├── .github/ # CI/CD workflows and Dependabot config
2828
│ └── workflows/
2929
│ ├── build.yml # Build workflow for all branches
30-
│ └── release.yml # Release and Play Store publishing
30+
│ ├── release.yml # Release and Play Store publishing
31+
│ └── test.yml # Unit test workflow
3132
├── app/ # Main application module
3233
│ ├── src/
3334
│ │ ├── main/
@@ -37,13 +38,13 @@ myplanet/
3738
│ │ │ │ ├── callback/ # Event listeners and interfaces
3839
│ │ │ │ ├── data/ # Data services and API
3940
│ │ │ │ ├── di/ # Dependency injection modules
40-
│ │ │ │ ├── model/ # Realm data models (40 Realm classes, 67 total)
41+
│ │ │ │ ├── model/ # Realm data models (83 files)
4142
│ │ │ │ ├── repository/ # Repository pattern implementations
4243
│ │ │ │ ├── services/ # Background services and workers
4344
│ │ │ │ ├── ui/ # UI components (28 packages)
4445
│ │ │ │ └── utils/ # Helper utilities
4546
│ │ │ ├── res/ # Android resources
46-
│ │ │ │ ├── layout/ # 169 layout files
47+
│ │ │ │ ├── layout/ # 171 layout files
4748
│ │ │ │ ├── values/ # Strings, colors, styles
4849
│ │ │ │ ├── values-{lang}/ # Translations (ar, es, fr, ne, so)
4950
│ │ │ │ └── drawable*/ # Images and icons
@@ -67,41 +68,41 @@ myplanet/
6768
| `base/` | Base classes for common functionality | 12 | BaseActivity, BaseRecyclerFragment, BasePermissionActivity, BaseContainerFragment, BaseDashboardFragment, BaseResourceFragment, BaseTeamFragment, BaseExamFragment, BaseMemberFragment, BaseDialogFragment, BaseVoicesFragment, BaseRecyclerParentFragment |
6869
| `callback/` | Event listeners and interfaces | 34 | OnLibraryItemSelectedListener, OnSyncListener, OnTeamUpdateListener, OnChatItemClickListener, OnNewsItemClickListener, and 29 more |
6970
| `data/` | Data access and API services | 8 | DatabaseService.kt, NetworkResult.kt, RealmMigrations.kt; sub-packages: `api/` (ApiInterface, ApiClient, ChatApiService, RetryInterceptor), `auth/` (AuthSessionUpdater) |
70-
| `di/` | Hilt dependency injection | 16 | 5 modules (NetworkModule, DatabaseModule, RepositoryModule, ServiceModule, SharedPreferencesModule) + 11 entry points |
71-
| `model/` | Realm database models and DTOs | 67 | 40 Realm models + 27 DTOs including ChatMessage, ChatRequest, ChatResponse, CourseProgressData, Download, ServerAddress, User |
72-
| `repository/` | Repository pattern implementations | 38 | 19 repositories with Interface + Impl pairs + RealmRepository base + SubmissionsRepositoryExporter |
71+
| `di/` | Hilt dependency injection | 11 | 6 modules (NetworkModule, DatabaseModule, RepositoryModule, ServiceModule, SharedPreferencesModule, DispatcherModule) + 4 entry points (CoreDependenciesEntryPoint, NetworkDependenciesEntryPoint, RepositoryDependenciesEntryPoint, ServiceDependenciesEntryPoint) + RealmDispatcher |
72+
| `model/` | Realm database models and DTOs | 83 | Realm models + DTOs including ChatMessage, ChatRequest, ChatResponse, CourseProgressData, Download, ServerAddress, User |
73+
| `repository/` | Repository pattern implementations | 46 | 23 repositories with Interface + Impl pairs + RealmRepository base + SubmissionsRepositoryExporter |
7374
| `services/` | Background services and workers | 37 | 20 root-level + `sync/` (11), `upload/` (4), `retry/` (2) |
74-
| `ui/` | User interface components | 147 | 28 feature packages with 16 ViewModels (courses, resources, teams, chat, etc.) |
75+
| `ui/` | User interface components | 156 | 28 feature packages with 16+ ViewModels (courses, resources, teams, chat, etc.) |
7576
| `utils/` | Helper functions | 39 | NetworkUtils, ImageUtils, DialogUtils, FileUploader, AuthUtils, SecurePrefs, ANRWatchdog, and 32 more |
7677

77-
### UI Sub-packages (28 feature packages, 147 files)
78+
### UI Sub-packages (28 feature packages, 156 files)
7879

7980
| Package | Files | Key Components |
8081
|---------|-------|----------------|
8182
| `ui/calendar/` | 1 | CalendarFragment |
8283
| `ui/chat/` | 6 | ChatDetailFragment, ChatHistoryFragment, ChatViewModel |
8384
| `ui/community/` | 6 | CommunityTabFragment, LeadersFragment |
8485
| `ui/components/` | 5 | CustomSpinner, MarkdownDialogFragment, FragmentNavigator |
85-
| `ui/courses/` | 12 | CourseDetailFragment, TakeCourseFragment, ProgressViewModel |
86+
| `ui/courses/` | 16 | CourseDetailFragment, TakeCourseFragment, ProgressViewModel |
8687
| `ui/dashboard/` | 11 | DashboardActivity, DashboardViewModel, BellDashboardViewModel |
8788
| `ui/dictionary/` | 1 | DictionaryActivity |
8889
| `ui/enterprises/` | 5 | EnterprisesViewModel, FinancesFragment, ReportsFragment |
8990
| `ui/events/` | 2 | EventsDetailFragment, EventsAdapter |
9091
| `ui/exam/` | 2 | ExamTakingFragment, UserInformationFragment |
9192
| `ui/feedback/` | 6 | FeedbackFragment, FeedbackDetailActivity, FeedbackListViewModel |
92-
| `ui/health/` | 5 | MyHealthFragment, AddExaminationActivity |
93+
| `ui/health/` | 6 | MyHealthFragment, AddExaminationActivity |
9394
| `ui/life/` | 2 | LifeFragment, LifeAdapter |
9495
| `ui/maps/` | 1 | OfflineMapsActivity |
9596
| `ui/notifications/` | 3 | NotificationsFragment, NotificationsViewModel |
9697
| `ui/onboarding/` | 2 | OnboardingActivity, OnboardingAdapter |
97-
| `ui/personals/` | 2 | PersonalsFragment, PersonalsAdapter |
98+
| `ui/personals/` | 3 | PersonalsFragment, PersonalsAdapter |
9899
| `ui/ratings/` | 2 | RatingsFragment, RatingsViewModel |
99100
| `ui/references/` | 2 | ReferencesFragment, ReferencesAdapter |
100-
| `ui/resources/` | 8 | ResourcesFragment, AddResourceFragment, CollectionsFragment |
101+
| `ui/resources/` | 9 | ResourcesFragment, AddResourceFragment, CollectionsFragment |
101102
| `ui/settings/` | 1 | SettingsActivity |
102-
| `ui/submissions/` | 8 | SubmissionsFragment, SubmissionViewModel |
103+
| `ui/submissions/` | 9 | SubmissionsFragment, SubmissionViewModel |
103104
| `ui/surveys/` | 4 | SurveyFragment, SendSurveyFragment |
104-
| `ui/sync/` | 7 | LoginActivity, SyncActivity, ProcessUserDataActivity |
105+
| `ui/sync/` | 8 | LoginActivity, SyncActivity, ProcessUserDataActivity |
105106
| `ui/teams/` | 22 | TeamFragment, TeamDetailFragment, TeamViewModel (largest UI package) |
106107
| `ui/user/` | 7 | UserProfileFragment, UserProfileViewModel, BecomeMemberActivity |
107108
| `ui/viewer/` | 8 | ImageViewer, VideoViewer, AudioPlayer, PDFReader, WebView, MarkdownViewer, TextFileViewer, CSVViewer |
@@ -111,7 +112,7 @@ myplanet/
111112

112113
1. **`MainApplication.kt`** (~448 lines)
113114
- Application initialization with Hilt DI
114-
- WorkManager scheduling (AutoSyncWorker, StayOnlineWorker, TaskNotificationWorker, NetworkMonitorWorker, RetryQueueWorker)
115+
- WorkManager scheduling (AutoSyncWorker, TaskNotificationWorker, NetworkMonitorWorker, RetryQueueWorker)
115116
- Server reachability checking with alternative URL mapping
116117
- Theme/locale management, ANR watchdog, uncaught exception handling
117118
- Location: `app/src/main/java/org/ole/planet/myplanet/MainApplication.kt`
@@ -145,23 +146,23 @@ myplanet/
145146

146147
| Category | Technology | Version | Purpose |
147148
|----------|-----------|---------|---------|
148-
| **Language** | Kotlin | 2.3.10 | Primary development language |
149-
| **Build System** | Gradle | 9.3.1 | Build automation |
150-
| **Build Plugin** | Android Gradle Plugin | 9.0.0 | Android build tooling |
151-
| **DI Framework** | Dagger Hilt | 2.59.1 | Dependency injection |
149+
| **Language** | Kotlin | 2.3.20 | Primary development language |
150+
| **Build System** | Gradle | 9.4.1 | Build automation |
151+
| **Build Plugin** | Android Gradle Plugin | 9.1.1 | Android build tooling |
152+
| **DI Framework** | Dagger Hilt | 2.59.2 | Dependency injection |
152153
| **Database** | Realm | 10.19.0 | Local object database |
153154
| **Networking** | Retrofit | 3.0.0 | REST API client |
154155
| **HTTP Client** | OkHttp | 5.3.2 | HTTP communication |
155156
| **JSON** | Gson | 2.13.2 | JSON serialization |
156157
| **Async** | Kotlin Coroutines | 1.10.2 | Asynchronous programming |
157-
| **Background Tasks** | AndroidX Work | 2.11.1 | Background job scheduling |
158+
| **Background Tasks** | AndroidX Work | 2.11.2 | Background job scheduling |
158159
| **UI Framework** | Material Design 3 | 1.13.0 | UI components |
159160
| **Image Loading** | Glide | 5.0.5 | Image loading and caching |
160-
| **Media Playback** | Media3 (ExoPlayer) | 1.9.2 | Audio/video playback |
161+
| **Media Playback** | Media3 (ExoPlayer) | 1.10.0 | Audio/video playback |
161162
| **Markdown** | Markwon | 4.6.2 | Markdown rendering |
162163
| **Maps** | OSMDroid | 6.1.20 | OpenStreetMap integration |
163-
| **Encryption** | Tink | 1.20.0 | Cryptographic operations |
164-
| **Serialization** | Kotlin Serialization | 1.10.0 | Kotlin-native serialization |
164+
| **Encryption** | Tink | 1.21.0 | Cryptographic operations |
165+
| **Serialization** | Kotlin Serialization | 1.11.0 | Kotlin-native serialization |
165166
| **CSV** | OpenCSV | 5.12.0 | CSV file parsing |
166167

167168
### Build Configuration
@@ -188,9 +189,9 @@ myplanet/
188189
### 1. Layered Architecture
189190

190191
```
191-
UI Layer (Activities/Fragments + 16 ViewModels)
192+
UI Layer (Activities/Fragments + 16+ ViewModels)
192193
193-
Repository Layer (19 domains, Interface + Impl pairs, Flow-based queries)
194+
Repository Layer (23 domains, Interface + Impl pairs, Flow-based queries)
194195
195196
Service Layer (ApiInterface, SyncManager, UploadCoordinator)
196197
@@ -218,8 +219,8 @@ class CourseRepositoryImpl @Inject constructor(
218219
}
219220
```
220221

221-
**All 19 Domain Repositories:**
222-
Activities, Chat, Configurations, Courses, Events, Feedback, Life, Notifications, Personals, Progress, Ratings, Resources, Submissions, Surveys, Tags, Teams, User, Voices
222+
**All 23 Domain Repositories:**
223+
Activities, Chat, Community, Configurations, Courses, Download, Events, Feedback, Health, Life, Notifications, Personals, Progress, Ratings, Resources, Retry, Submissions, Surveys, Tags, Teams, User, Voices
223224

224225
**Utility Classes:**
225226
- `RealmRepository` - Generic base repository
@@ -229,18 +230,19 @@ Activities, Chat, Configurations, Courses, Events, Feedback, Life, Notifications
229230

230231
### 4. Dependency Injection (Hilt)
231232

232-
**Module Structure:**
233+
**Module Structure (6 modules):**
233234
- `NetworkModule.kt` - Provides Retrofit, OkHttp
234235
- `DatabaseModule.kt` - Provides Realm instances
235236
- `RepositoryModule.kt` - Binds repository interfaces to implementations
236237
- `ServiceModule.kt` - Provides service dependencies
237238
- `SharedPreferencesModule.kt` - Provides SharedPreferences
239+
- `DispatcherModule.kt` - Provides coroutine dispatchers (see also `RealmDispatcher.kt`)
238240

239-
**Entry Points for Workers (11 entry point files):**
240-
- `NetworkDependenciesEntryPoint`, `NetworkDependenciesEntryPoint`, `NetworkDependenciesEntryPoint`
241-
- `ApplicationScopeEntryPoint`, `BroadcastServiceEntryPoint`, `DatabaseServiceEntryPoint`
242-
- `RepositoryEntryPoint`, `RetryQueueEntryPoint`, `ServiceEntryPoint`
243-
- `RepositoryDependenciesEntryPoint`, `CoreDependenciesEntryPoint`
241+
**Entry Points for Workers (4 entry point files):**
242+
- `CoreDependenciesEntryPoint`
243+
- `NetworkDependenciesEntryPoint`
244+
- `RepositoryDependenciesEntryPoint`
245+
- `ServiceDependenciesEntryPoint`
244246

245247
```kotlin
246248
@EntryPoint
@@ -281,7 +283,6 @@ interface NetworkDependenciesEntryPoint {
281283
- `TaskNotificationWorker` - Task deadline notifications
282284
- `DownloadWorker` - Background file downloads
283285
- `FreeSpaceWorker` - Disk space monitoring
284-
- `StayOnlineWorker` - Keeps connection alive
285286
- `RetryQueueWorker` - Retries failed operations (`services/retry/`)
286287

287288
**Services and Managers (20 root-level files):**
@@ -291,12 +292,13 @@ interface NetworkDependenciesEntryPoint {
291292
- `UploadCoordinator` - Upload orchestration (`services/upload/`)
292293
- `AudioRecorder` - Audio recording
293294
- `BroadcastService` - Service broadcasting
294-
- `ConfigurationManager` - Configuration management
295295
- `SharedPrefManager` - SharedPreferences management
296296
- `UserSessionManager` - User session handling
297297
- `ThemeManager` - App theming
298298
- `FileUploader` - File upload utilities
299299
- `DownloadService` - Background file download service (foreground service)
300+
- `ResourceDownloadCoordinator` - Orchestrates resource downloads
301+
- `SubmissionUploadExecutor` - Executes submission uploads
300302
- `VoicesLabelManager` - Voice/discussion forum label management
301303
- `ChallengePrompter` - Challenge prompt generation
302304
- `NotificationActionReceiver` - Broadcast receiver for notification actions
@@ -1104,15 +1106,15 @@ git rebase --continue
11041106

11051107
## Codebase Inventory Summary
11061108

1107-
### Source Files (394 total Kotlin files)
1109+
### Source Files (427 total Kotlin files in `app/src/main/java`)
11081110

11091111
| Component | Files | Purpose |
11101112
|-----------|-------|---------|
1111-
| `model/` | 67 | Realm database models (40) + DTOs (27) |
1112-
| `repository/` | 38 | Data access abstraction (19 domains + utilities) |
1113-
| `ui/` | 147 | User interface across 28 feature packages |
1113+
| `model/` | 83 | Realm database models + DTOs |
1114+
| `repository/` | 46 | Data access abstraction (23 domains + utilities) |
1115+
| `ui/` | 156 | User interface across 28 feature packages |
11141116
| `services/` | 37 | Background tasks & managers (20 root + 3 sub-packages) |
1115-
| `di/` | 16 | Dependency injection (5 modules + 11 entry points) |
1117+
| `di/` | 11 | Dependency injection (6 modules + 4 entry points + RealmDispatcher) |
11161118
| `base/` | 12 | Reusable base classes |
11171119
| `callback/` | 34 | Event listeners and interfaces |
11181120
| `data/` | 8 | Data services, API, auth |
@@ -1123,11 +1125,8 @@ git rebase --continue
11231125

11241126
| Category | Count |
11251127
|----------|-------|
1126-
| Layout files (main) | 169 |
1127-
| Layout files (all variants) | 181 |
1128-
| Drawable files | 129 |
1128+
| Layout files (main) | 171 |
11291129
| Translation languages | 5 (ar, es, fr, ne, so) |
1130-
| String resources | ~1,194 lines |
11311130
| Menu files | 2 |
11321131
| XML config files | 3 |
11331132

@@ -1141,6 +1140,6 @@ git rebase --continue
11411140

11421141
---
11431142

1144-
**Last Updated**: 2026-02-10
1145-
**Version**: 0.46.0
1143+
**Last Updated**: 2026-04-20
1144+
**Version**: 0.53.38
11461145
**Maintainer**: Open Learning Exchange

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ android {
1212
applicationId "org.ole.planet.myplanet"
1313
minSdk = 26
1414
targetSdk = 36
15-
versionCode = 5338
16-
versionName = "0.53.38"
15+
versionCode = 5339
16+
versionName = "0.53.39"
1717
ndkVersion = '26.3.11579264'
1818
vectorDrawables.useSupportLibrary = true
1919
}

0 commit comments

Comments
 (0)