# SimpleX Chat Android & Desktop -- Impact Graph > Source file to product concept mapping. Use this to identify which product documents must be updated when a source file changes. > > Covers Kotlin Multiplatform (Compose) sources: commonMain, androidMain, desktopMain, and the Android and Desktop app modules. Also covers the shared Haskell core. --- ## Product Concept Legend | ID | Concept | |----|---------| | PC1 | Chat List | | PC2 | Direct Chat | | PC3 | Group Chat | | PC4 | Message Composition | | PC5 | Message Reactions | | PC6 | Message Editing | | PC7 | Message Deletion | | PC8 | Timed Messages | | PC9 | Voice Messages | | PC10 | File Transfer | | PC11 | Link Previews | | PC12 | Contact Connection | | PC13 | Contact Verification | | PC14 | Group Management | | PC15 | Group Links | | PC16 | Member Roles | | PC17 | Audio/Video Calls | | PC18 | Notifications | | PC19 | User Profiles | | PC20 | Incognito Mode | | PC21 | Hidden Profiles | | PC22 | Local Authentication | | PC23 | Database Encryption | | PC24 | Theme System | | PC25 | Network Configuration | | PC26 | Device Migration | | PC27 | Remote Desktop | | PC28 | Chat Tags | | PC29 | User Address | | PC30 | Member Support Chat | --- ## 1. Common Sources (commonMain) Path prefix: `common/src/commonMain/kotlin/chat/simplex/common/` ### 1.1 Core Model & Platform | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `App.kt` | PC1 through PC30 | High | Root composable — navigation scaffold for all features | | `AppLock.kt` | PC22 | Medium | App lock state and authorization lifecycle | | `model/ChatModel.kt` | PC1 through PC30 | High | Central state object — every feature reads or writes here | | `model/SimpleXAPI.kt` | PC1 through PC30 | High | FFI bridge to Haskell core — all commands and responses | | `model/CryptoFile.kt` | PC10, PC23 | Medium | Encrypted file read/write helpers | | `platform/Core.kt` | PC1 through PC30 | High | Native FFI declarations (`chatMigrateInit`, `chatSendCmd`, etc.) — all API traffic | | `platform/AppCommon.kt` | PC1 through PC30 | Medium | Shared app initialization logic | | `platform/Files.kt` | PC10, PC23, PC26 | Medium | File path resolution, temp dirs, encryption utilities | | `platform/NtfManager.kt` | PC18 | High | Notification manager expect declarations | | `platform/Notifications.kt` | PC18 | Medium | Notification channel and permission abstractions | | `platform/SimplexService.kt` | PC18 | Medium | Background service expect declarations | | `platform/RecAndPlay.kt` | PC9 | Medium | Audio recording and playback abstractions | | `platform/VideoPlayer.kt` | PC10, PC17 | Low | Video playback abstractions | | `platform/Cryptor.kt` | PC23 | Medium | Keystore encryption expect declarations | | `platform/Share.kt` | PC10, PC12 | Low | Share sheet abstractions | | `platform/Images.kt` | PC10, PC19 | Low | Image processing utilities | | `platform/Platform.kt` | PC1 through PC30 | Low | Platform detection and capability flags | | `platform/PlatformTextField.kt` | PC4 | Low | Native text input expect declarations | | `platform/Back.kt` | PC1 | Low | Back navigation handling | | `platform/UI.kt` | PC24 | Low | UI density and locale helpers | | `platform/ScrollableColumn.kt` | PC1 | Low | Scrollable list abstractions | | `platform/Log.kt` | — | Low | Logging utility — no direct product impact | | `platform/Modifier.kt` | PC24 | Low | Compose modifier extensions | | `platform/Resources.kt` | PC24 | Low | Resource loading helpers | ### 1.2 Theme | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `ui/theme/ThemeManager.kt` | PC24 | Medium | Theme resolution engine — all color and wallpaper logic | | `ui/theme/Theme.kt` | PC24 | Medium | Theme composables and `SimpleXTheme` | | `ui/theme/Color.kt` | PC24 | Low | Color palette definitions | | `ui/theme/Shape.kt` | PC24 | Low | Shape token definitions | | `ui/theme/Type.kt` | PC24 | Low | Typography definitions | ### 1.3 Views — Chat List | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/chatlist/ChatListView.kt` | PC1, PC28 | High | Main screen — chat list rendering and search | | `views/chatlist/ChatListNavLinkView.kt` | PC1, PC2, PC3 | Medium | Navigation from chat list item to chat | | `views/chatlist/ChatPreviewView.kt` | PC1, PC2, PC3, PC11 | Medium | Chat row preview rendering | | `views/chatlist/TagListView.kt` | PC28 | Medium | Chat tag filter UI | | `views/chatlist/UserPicker.kt` | PC19, PC21 | Medium | Multi-profile switcher overlay | | `views/chatlist/ShareListView.kt` | PC10 | Low | Share target list | | `views/chatlist/ShareListNavLinkView.kt` | PC10 | Low | Share target navigation | | `views/chatlist/ChatHelpView.kt` | PC1 | Low | Empty-state help content | | `views/chatlist/ContactRequestView.kt` | PC12 | Medium | Incoming contact request row | | `views/chatlist/ContactConnectionView.kt` | PC12 | Low | Pending connection row | | `views/chatlist/ServersSummaryView.kt` | PC25 | Low | Server status summary | ### 1.4 Views — Chat & Messaging | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/chat/ChatView.kt` | PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC11 | High | Core conversation UI — most messaging features | | `views/chat/ComposeView.kt` | PC4, PC6, PC9, PC10, PC11 | High | Message composition — send path for all messages | | `views/chat/SendMsgView.kt` | PC4, PC9 | Medium | Send button and voice record toggle | | `views/chat/ComposeVoiceView.kt` | PC9 | Medium | Voice message recording UI | | `views/chat/ComposeFileView.kt` | PC10 | Low | File attachment preview in compose area | | `views/chat/ComposeImageView.kt` | PC10 | Low | Image attachment preview in compose area | | `views/chat/ContextItemView.kt` | PC6 | Low | Reply/edit quote preview | | `views/chat/SelectableChatItemToolbars.kt` | PC7, PC10 | Medium | Multi-select toolbar (delete, forward) | | `views/chat/ChatInfoView.kt` | PC2, PC13, PC20 | Medium | Contact details and verification | | `views/chat/ContactPreferences.kt` | PC2, PC8 | Medium | Per-contact feature preferences | | `views/chat/ChatItemInfoView.kt` | PC2, PC3 | Low | Message delivery detail | | `views/chat/ChatItemsLoader.kt` | PC2, PC3 | Medium | Pagination and message loading logic | | `views/chat/ChatItemsMerger.kt` | PC2, PC3 | Medium | Merges incremental message updates | | `views/chat/VerifyCodeView.kt` | PC13 | Medium | Contact security code verification | | `views/chat/ScanCodeView.kt` | PC13 | Low | QR code scanning for verification | | `views/chat/CommandsMenuView.kt` | PC4 | Low | Slash-command menu | | `views/chat/ComposeContextProfilePickerView.kt` | PC20 | Low | Incognito profile picker in compose | | `views/chat/ComposeContextPendingMemberActionsView.kt` | PC14, PC30 | Low | Pending member action buttons in compose | | `views/chat/ComposeContextGroupDirectInvitationActionsView.kt` | PC14 | Low | Direct invitation action buttons in compose | | `views/chat/ComposeContextContactRequestActionsView.kt` | PC12 | Low | Contact request action buttons in compose | ### 1.5 Views — Chat Items | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/chat/item/ChatItemView.kt` | PC2, PC3, PC5, PC6, PC7, PC8 | High | Root chat item renderer with context menus | | `views/chat/item/TextItemView.kt` | PC2, PC3, PC4 | Medium | Text message bubble rendering | | `views/chat/item/FramedItemView.kt` | PC4, PC6, PC10, PC11 | Medium | Framed (quoted/forwarded) message container | | `views/chat/item/CIImageView.kt` | PC10 | Medium | Image message rendering | | `views/chat/item/CIVideoView.kt` | PC10 | Medium | Video message rendering | | `views/chat/item/CIFileView.kt` | PC10 | Medium | File message rendering | | `views/chat/item/CIVoiceView.kt` | PC9 | Medium | Voice message rendering and playback | | `views/chat/item/EmojiItemView.kt` | PC5 | Low | Emoji reaction display | | `views/chat/item/CIMetaView.kt` | PC2, PC3, PC8 | Low | Timestamp, delivery status, timed message indicator | | `views/chat/item/CICallItemView.kt` | PC17 | Low | Call event item rendering | | `views/chat/item/CIEventView.kt` | PC3, PC14, PC16 | Low | Group event item rendering | | `views/chat/item/CIGroupInvitationView.kt` | PC3, PC14 | Low | Group invitation item rendering | | `views/chat/item/CIMemberCreatedContactView.kt` | PC3, PC12 | Low | Member-created contact event | | `views/chat/item/CIChatFeatureView.kt` | PC8 | Low | Feature change event rendering | | `views/chat/item/CIFeaturePreferenceView.kt` | PC8 | Low | Feature preference change rendering | | `views/chat/item/CIRcvDecryptionError.kt` | PC2, PC3 | Low | Decryption error display | | `views/chat/item/DeletedItemView.kt` | PC7 | Low | Deleted message placeholder | | `views/chat/item/MarkedDeletedItemView.kt` | PC7 | Low | Moderated/marked-deleted placeholder | | `views/chat/item/ImageFullScreenView.kt` | PC10 | Low | Full-screen image viewer | | `views/chat/item/CIBrokenComposableView.kt` | — | Low | Fallback for render failures | | `views/chat/item/CIInvalidJSONView.kt` | — | Low | Fallback for malformed items | | `views/chat/item/IntegrityErrorItemView.kt` | PC2, PC3 | Low | Message integrity error display | ### 1.6 Views — Groups | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/chat/group/GroupChatInfoView.kt` | PC3, PC14, PC15, PC16, PC30 | High | Group management hub | | `views/chat/group/AddGroupMembersView.kt` | PC14, PC16 | Medium | Member invitation flow | | `views/chat/group/GroupMemberInfoView.kt` | PC3, PC14, PC16, PC30 | Medium | Member details and role management | | `views/chat/group/GroupProfileView.kt` | PC3, PC14 | Medium | Group profile editing | | `views/chat/group/GroupLinkView.kt` | PC15 | Low | Group link creation and sharing | | `views/chat/group/GroupPreferences.kt` | PC3, PC8, PC14 | Medium | Group feature toggles | | `views/chat/group/GroupMentions.kt` | PC3, PC4 | Medium | @mention resolution and display | | `views/chat/group/GroupMembersToolbar.kt` | PC3, PC14 | Low | Member list toolbar | | `views/chat/group/GroupReportsView.kt` | PC3, PC14 | Low | Group content reports | | `views/chat/group/MemberAdmission.kt` | PC14, PC16 | Medium | Member admission settings | | `views/chat/group/MemberSupportView.kt` | PC30 | Medium | Member support chat toggle | | `views/chat/group/MemberSupportChatView.kt` | PC30 | Medium | Member support chat conversation | | `views/chat/group/WelcomeMessageView.kt` | PC3, PC14 | Low | Group welcome message editor | ### 1.7 Views — Calls | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/call/CallView.kt` | PC17 | High | Call UI and WebRTC composable | | `views/call/CallManager.kt` | PC17 | High | Call lifecycle management | | `views/call/WebRTC.kt` | PC17 | High | WebRTC types and signaling | | `views/call/IncomingCallAlertView.kt` | PC17, PC18 | Medium | Incoming call overlay | ### 1.8 Views — New Chat & Contacts | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/newchat/NewChatView.kt` | PC12, PC29 | High | New connection creation — onramp for all contacts | | `views/newchat/NewChatSheet.kt` | PC12 | Medium | Bottom sheet with connection options | | `views/newchat/ConnectPlan.kt` | PC12, PC15 | Medium | Link parsing and connection plan resolution | | `views/newchat/AddGroupView.kt` | PC3, PC14 | Medium | New group creation flow | | `views/newchat/ContactConnectionInfoView.kt` | PC12 | Low | Pending connection details | | `views/newchat/AddContactLearnMore.kt` | PC12 | Low | Educational content | | `views/newchat/QRCode.kt` | PC12 | Low | QR code display | | `views/newchat/QRCodeScanner.kt` | PC12 | Low | QR code camera scanner | | `views/contacts/ContactListNavView.kt` | PC1, PC12 | Medium | Contact list navigation | | `views/contacts/ContactPreviewView.kt` | PC12 | Low | Contact row preview | ### 1.9 Views — User Settings | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/usersettings/SettingsView.kt` | PC18, PC22, PC23, PC24, PC25, PC29 | Medium | Settings navigation hub | | `views/usersettings/Appearance.kt` | PC24 | Low | Theme and appearance customization | | `views/usersettings/PrivacySettings.kt` | PC20, PC22 | Medium | Privacy and lock settings | | `views/usersettings/UserProfileView.kt` | PC19 | Medium | Profile display name and image editing | | `views/usersettings/UserProfilesView.kt` | PC19, PC21 | Medium | Multi-profile management | | `views/usersettings/HiddenProfileView.kt` | PC21 | Medium | Hidden profile access | | `views/usersettings/IncognitoView.kt` | PC20 | Low | Incognito mode explanation | | `views/usersettings/UserAddressView.kt` | PC29 | Medium | User SimpleX address management | | `views/usersettings/UserAddressLearnMore.kt` | PC29 | Low | Address educational content | | `views/usersettings/NotificationsSettingsView.kt` | PC18 | Medium | Notification mode configuration | | `views/usersettings/CallSettings.kt` | PC17 | Low | Call-related settings | | `views/usersettings/Preferences.kt` | PC2, PC3, PC8 | Medium | Chat feature preferences UI | | `views/usersettings/SetDeliveryReceiptsView.kt` | PC2 | Low | Delivery receipts toggle | | `views/usersettings/RTCServers.kt` | PC17, PC25 | Medium | WebRTC ICE server configuration | | `views/usersettings/DeveloperView.kt` | — | Low | Developer/debug settings | | `views/usersettings/HelpView.kt` | — | Low | Help and support links | | `views/usersettings/MarkdownHelpView.kt` | PC4 | Low | Markdown formatting guide | | `views/usersettings/VersionInfoView.kt` | — | Low | Version display | | `views/usersettings/networkAndServers/NetworkAndServers.kt` | PC25 | High | Server and network configuration hub | | `views/usersettings/networkAndServers/AdvancedNetworkSettings.kt` | PC25 | Medium | SOCKS proxy, timeouts, etc. | | `views/usersettings/networkAndServers/OperatorView.kt` | PC25 | Medium | Server operator management | | `views/usersettings/networkAndServers/ProtocolServersView.kt` | PC25 | Medium | SMP/XFTP server list | | `views/usersettings/networkAndServers/ProtocolServerView.kt` | PC25 | Low | Individual server editing | | `views/usersettings/networkAndServers/NewServerView.kt` | PC25 | Low | Add new server | | `views/usersettings/networkAndServers/ScanProtocolServer.kt` | PC25 | Low | QR scan for server address | ### 1.10 Views — Database & Migration | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/database/DatabaseView.kt` | PC23, PC26 | High | Database management — export, import, passphrase | | `views/database/DatabaseEncryptionView.kt` | PC23 | High | Database encryption passphrase change | | `views/database/DatabaseErrorView.kt` | PC23 | Medium | Database open error recovery | | `views/migration/MigrateFromDevice.kt` | PC26 | High | Outbound device migration | | `views/migration/MigrateToDevice.kt` | PC26 | High | Inbound device migration | ### 1.11 Views — Local Auth & Onboarding | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/localauth/LocalAuthView.kt` | PC22 | Medium | App lock authentication flow | | `views/localauth/SetAppPasscodeView.kt` | PC22 | Medium | Passcode creation and change | | `views/localauth/PasscodeView.kt` | PC22 | Medium | Passcode entry UI | | `views/localauth/PasswordEntry.kt` | PC22 | Low | Password input field | | `views/onboarding/OnboardingView.kt` | PC1 | Medium | Onboarding flow navigation | | `views/onboarding/SimpleXInfo.kt` | PC1 | Low | Welcome screen | | `views/onboarding/SetNotificationsMode.kt` | PC18 | Medium | Notification permission and mode setup | | `views/onboarding/SetupDatabasePassphrase.kt` | PC23 | Medium | Initial database passphrase setup | | `views/onboarding/ChooseServerOperators.kt` | PC25 | Medium | Initial server operator selection | | `views/onboarding/WhatsNewView.kt` | — | Low | Release notes display | | `views/onboarding/HowItWorks.kt` | — | Low | Educational content | | `views/onboarding/LinkAMobileView.kt` | PC27 | Low | Mobile linking onboarding | ### 1.12 Views — Remote Desktop | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/remote/ConnectDesktopView.kt` | PC27 | Medium | Connect-to-desktop flow (from mobile) | | `views/remote/ConnectMobileView.kt` | PC27 | Medium | Connect-to-mobile flow (from desktop) | ### 1.13 Views — Helpers | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/helpers/AlertManager.kt` | PC1 through PC30 | Medium | Modal alert system used across all features | | `views/helpers/ModalView.kt` | PC1 through PC30 | Medium | Modal navigation stack | | `views/helpers/Utils.kt` | PC1 through PC30 | Low | Shared formatting, clipboard, and utility functions | | `views/helpers/DatabaseUtils.kt` | PC23 | Medium | Keystore passphrase and database helpers | | `views/helpers/LinkPreviews.kt` | PC11 | Medium | Link preview fetching and rendering | | `views/helpers/LocalAuthentication.kt` | PC22 | Medium | Biometric/passcode authentication expect | | `views/helpers/ChatWallpaper.kt` | PC24 | Low | Chat wallpaper rendering | | `views/helpers/ChatInfoImage.kt` | PC19 | Low | Profile image composable | | `views/helpers/ThemeModeEditor.kt` | PC24 | Low | Theme mode toggle | | `views/helpers/ChooseAttachmentView.kt` | PC10 | Low | Attachment picker | | `views/helpers/GetImageView.kt` | PC10, PC19 | Low | Image capture and crop | | `views/helpers/TextEditor.kt` | PC4 | Low | Rich text editor helpers | | `views/helpers/SearchTextField.kt` | PC1 | Low | Search bar composable | | `views/helpers/CustomTimePicker.kt` | PC8 | Low | Time picker for timed messages | | `views/helpers/DragAndDrop.kt` | PC10 | Low | Drag-and-drop file handling | | `views/helpers/ProcessedErrors.kt` | — | Low | Error aggregation | | `views/helpers/AnimationUtils.kt` | PC24 | Low | Animation helpers | | `views/helpers/DefaultDialog.kt` | — | Low | Dialog composable primitives | | `views/helpers/DefaultDropdownMenu.kt` | — | Low | Dropdown menu composable | | `views/helpers/Section.kt` | — | Low | Settings section composable | | `views/helpers/SimpleButton.kt` | — | Low | Button composable | | `views/helpers/DefaultTopAppBar.kt` | — | Low | App bar composable | | `views/helpers/DefaultBasicTextField.kt` | PC4 | Low | Text field composable | | `views/helpers/AppBarTitle.kt` | — | Low | App bar title composable | | `views/helpers/BlurModifier.kt` | PC22 | Low | Blur modifier for app lock | | `views/helpers/CollapsingAppBar.kt` | — | Low | Collapsing toolbar composable | | `views/helpers/CustomIcons.kt` | — | Low | Custom icon definitions | | `views/helpers/DataClasses.kt` | — | Low | Shared data class utilities | | `views/helpers/DefaultProgressBar.kt` | — | Low | Progress bar composable | | `views/helpers/DefaultSwitch.kt` | — | Low | Switch composable | | `views/helpers/Enums.kt` | — | Low | Enum utility extensions | | `views/helpers/ExposedDropDownSettingRow.kt` | — | Low | Dropdown setting row composable | | `views/helpers/GestureDetector.kt` | — | Low | Touch gesture utilities | | `views/helpers/Modifiers.kt` | — | Low | Compose modifier extensions | | `views/helpers/SubscriptionStatusIcon.kt` | PC25 | Low | Server connection status icon | ### 1.14 Views — Other | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `views/TerminalView.kt` | — | Low | Developer chat console | | `views/SplashView.kt` | — | Low | Splash screen | | `views/WelcomeView.kt` | PC1 | Low | Empty-state welcome | | `views/Preview.kt` | — | Low | Compose preview utilities | --- ## 2. Android Sources ### 2.1 Android App Module Path prefix: `android/src/main/java/chat/simplex/app/` | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `SimplexApp.kt` | PC1 through PC30 | High | Application class — initializes core, preferences, and notification channels | | `MainActivity.kt` | PC1 through PC30 | High | Single-activity host — intent handling, lifecycle, deep links | | `SimplexService.kt` | PC18 | High | Foreground service — keeps message receiver alive | | `CallService.kt` | PC17 | Medium | Foreground service for active calls | | `MessagesFetcherWorker.kt` | PC18 | Medium | WorkManager periodic message fetch | | `model/NtfManager.android.kt` | PC18 | High | Android notification channels, display, and actions | | `views/call/CallActivity.kt` | PC17 | Medium | Dedicated activity for full-screen call UI | | `views/helpers/Util.kt` | — | Low | Android-specific utility extensions | ### 2.2 Android Platform Implementations (androidMain) Path prefix: `common/src/androidMain/kotlin/chat/simplex/common/` | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `platform/AppCommon.android.kt` | PC1 through PC30 | Medium | Android app initialization actual declarations | | `platform/SimplexService.android.kt` | PC18 | Medium | Android foreground service actual implementation | | `platform/Files.android.kt` | PC10, PC23, PC26 | Medium | Android file paths and content-URI resolution | | `platform/Cryptor.android.kt` | PC23 | Medium | Android Keystore encryption actual implementation | | `platform/RecAndPlay.android.kt` | PC9 | Medium | Android MediaRecorder/MediaPlayer actual implementation | | `platform/VideoPlayer.android.kt` | PC10 | Low | Android ExoPlayer actual implementation | | `platform/Notifications.android.kt` | PC18 | Medium | Android notification channel creation | | `platform/Images.android.kt` | PC10, PC19 | Low | Android bitmap processing | | `platform/PlatformTextField.android.kt` | PC4 | Low | Android native text field actual implementation | | `platform/Share.android.kt` | PC10 | Low | Android share intent actual implementation | | `platform/Back.android.kt` | PC1 | Low | Android back press handler | | `platform/UI.android.kt` | PC24 | Low | Android density and locale | | `platform/ScrollableColumn.android.kt` | PC1 | Low | Android lazy list actual implementation | | `platform/Log.android.kt` | — | Low | Android Log wrapper | | `platform/Modifier.android.kt` | — | Low | Android modifier extensions | | `platform/Resources.android.kt` | — | Low | Android resource loading | | `helpers/NetworkObserver.kt` | PC25 | Medium | Android ConnectivityManager observer | | `helpers/Permissions.kt` | PC9, PC10, PC17, PC18 | Medium | Android runtime permission requests | | `helpers/SoundPlayer.kt` | PC17, PC18 | Low | Android sound playback for calls and notifications | | `helpers/Extensions.kt` | — | Low | Kotlin extension utilities | | `helpers/Locale.kt` | — | Low | Locale helpers | | `views/call/CallView.android.kt` | PC17 | Medium | Android WebView-based WebRTC call | | `views/call/CallAudioDeviceManager.kt` | PC17 | Medium | Android audio routing (speaker, earpiece, bluetooth) | | `views/chat/ComposeView.android.kt` | PC4, PC10 | Low | Android compose view extensions | | `views/chat/SendMsgView.android.kt` | PC4 | Low | Android send button extensions | | `views/chat/item/ChatItemView.android.kt` | PC2, PC3 | Low | Android chat item extensions | | `views/chat/item/CIImageView.android.kt` | PC10 | Low | Android image rendering extensions | | `views/chat/item/CIVideoView.android.kt` | PC10 | Low | Android video rendering extensions | | `views/chat/item/CIFileView.android.kt` | PC10 | Low | Android file view extensions | | `views/chat/item/EmojiItemView.android.kt` | PC5 | Low | Android emoji rendering extensions | | `views/chat/item/ImageFullScreenView.android.kt` | PC10 | Low | Android full-screen image viewer | | `views/chatlist/ChatListView.android.kt` | PC1 | Low | Android chat list extensions | | `views/chatlist/ChatListNavLinkView.android.kt` | PC1 | Low | Android chat list navigation extensions | | `views/chatlist/TagListView.android.kt` | PC28 | Low | Android tag list extensions | | `views/chatlist/UserPicker.android.kt` | PC19 | Low | Android profile picker extensions | | `views/database/DatabaseView.android.kt` | PC23, PC26 | Low | Android database view extensions | | `views/database/DatabaseEncryptionView.android.kt` | PC23 | Low | Android encryption view extensions | | `views/helpers/LocalAuthentication.android.kt` | PC22 | Medium | Android BiometricPrompt actual implementation | | `views/helpers/ChooseAttachmentView.android.kt` | PC10 | Low | Android file/camera chooser | | `views/helpers/GetImageView.android.kt` | PC10, PC19 | Low | Android image capture | | `views/helpers/CustomTimePicker.android.kt` | PC8 | Low | Android time picker | | `views/helpers/Utils.android.kt` | — | Low | Android utility extensions | | `views/helpers/DefaultDialog.android.kt` | — | Low | Android dialog extensions | | `views/helpers/WorkaroundFocusSearchLayout.kt` | — | Low | Android focus workaround | | `views/newchat/QRCode.android.kt` | PC12 | Low | Android QR code rendering | | `views/newchat/QRCodeScanner.android.kt` | PC12 | Low | Android camera QR scanner | | `views/onboarding/SimpleXInfo.android.kt` | PC1 | Low | Android onboarding extensions | | `views/onboarding/SetNotificationsMode.android.kt` | PC18 | Low | Android notification mode extensions | | `views/usersettings/Appearance.android.kt` | PC24 | Low | Android appearance extensions | | `views/usersettings/PrivacySettings.android.kt` | PC20, PC22 | Low | Android privacy settings extensions | | `views/usersettings/SettingsView.android.kt` | — | Low | Android settings extensions | | `views/usersettings/networkAndServers/OperatorView.android.kt` | PC25 | Low | Android operator view extensions | | `views/usersettings/networkAndServers/ScanProtocolServer.android.kt` | PC25 | Low | Android server QR scan | | `ui/theme/Theme.android.kt` | PC24 | Low | Android dynamic color / system theme | | `ui/theme/Type.android.kt` | PC24 | Low | Android typography | --- ## 3. Desktop Sources ### 3.1 Desktop App Module Path prefix: `desktop/src/jvmMain/kotlin/chat/simplex/desktop/` | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `Main.kt` | PC1 through PC30 | High | JVM entry point — Haskell init, migrations, app launch | ### 3.2 Desktop Platform Implementations (desktopMain) Path prefix: `common/src/desktopMain/kotlin/chat/simplex/common/` | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `DesktopApp.kt` | PC1, PC2, PC3 | High | Desktop Compose window — window lifecycle, crash recovery | | `StoreWindowState.kt` | — | Low | Window position/size persistence | | `model/NtfManager.desktop.kt` | PC18 | Medium | Desktop system tray notification display | | `platform/AppCommon.desktop.kt` | PC1 through PC30 | Medium | Desktop app initialization actual declarations | | `platform/SimplexService.desktop.kt` | PC18 | Low | Desktop background receiver (no foreground service) | | `platform/Files.desktop.kt` | PC10, PC23, PC26 | Medium | Desktop file path resolution | | `platform/Cryptor.desktop.kt` | PC23 | Medium | Desktop keystore encryption actual implementation | | `platform/RecAndPlay.desktop.kt` | PC9 | Medium | Desktop audio recording/playback actual implementation | | `platform/VideoPlayer.desktop.kt` | PC10 | Low | Desktop VLC-based video player | | `platform/Videos.desktop.kt` | PC10 | Low | Desktop video utilities | | `platform/Notifications.desktop.kt` | PC18 | Low | Desktop notification setup | | `platform/Images.desktop.kt` | PC10 | Low | Desktop image processing | | `platform/PlatformTextField.desktop.kt` | PC4 | Low | Desktop text field actual implementation | | `platform/Share.desktop.kt` | PC10 | Low | Desktop clipboard/share | | `platform/Back.desktop.kt` | PC1 | Low | Desktop back navigation | | `platform/UI.desktop.kt` | PC24 | Low | Desktop density and locale | | `platform/ScrollableColumn.desktop.kt` | PC1 | Low | Desktop lazy list | | `platform/Platform.desktop.kt` | — | Low | Platform detection | | `platform/Log.desktop.kt` | — | Low | Desktop log output | | `platform/Modifier.desktop.kt` | — | Low | Desktop modifier extensions | | `platform/Resources.desktop.kt` | — | Low | Desktop resource loading | | `views/call/CallView.desktop.kt` | PC17 | Medium | Desktop WebView-based WebRTC call | | `views/chat/ComposeView.desktop.kt` | PC4, PC10 | Low | Desktop compose view (drag-and-drop, paste) | | `views/chat/SendMsgView.desktop.kt` | PC4 | Low | Desktop send shortcut (Enter key handling) | | `views/chat/item/ChatItemView.desktop.kt` | PC2, PC3 | Low | Desktop chat item extensions | | `views/chat/item/CIImageView.desktop.kt` | PC10 | Low | Desktop image rendering | | `views/chat/item/CIVideoView.desktop.kt` | PC10 | Low | Desktop video rendering | | `views/chat/item/CIFileView.desktop.kt` | PC10 | Low | Desktop file open/save | | `views/chat/item/EmojiItemView.desktop.kt` | PC5 | Low | Desktop emoji rendering | | `views/chat/item/ImageFullScreenView.desktop.kt` | PC10 | Low | Desktop full-screen image | | `views/chatlist/ChatListView.desktop.kt` | PC1 | Low | Desktop chat list extensions | | `views/chatlist/ChatListNavLinkView.desktop.kt` | PC1 | Low | Desktop chat list navigation | | `views/chatlist/TagListView.desktop.kt` | PC28 | Low | Desktop tag list extensions | | `views/chatlist/UserPicker.desktop.kt` | PC19 | Low | Desktop profile picker | | `views/database/DatabaseView.desktop.kt` | PC23, PC26 | Low | Desktop database view extensions | | `views/database/DatabaseEncryptionView.desktop.kt` | PC23 | Low | Desktop encryption view extensions | | `views/helpers/AppUpdater.kt` | — | Low | Desktop auto-update checker and installer | | `views/helpers/OkHttpProgressListener.kt` | — | Low | Download progress tracking for updates | | `views/helpers/LocalAuthentication.desktop.kt` | PC22 | Low | Desktop passcode-only auth (no biometrics) | | `views/helpers/ChooseAttachmentView.desktop.kt` | PC10 | Low | Desktop file chooser dialog | | `views/helpers/GetImageView.desktop.kt` | PC10, PC19 | Low | Desktop image file picker | | `views/helpers/CustomTimePicker.desktop.kt` | PC8 | Low | Desktop time picker | | `views/helpers/Utils.desktop.kt` | — | Low | Desktop utility extensions | | `views/helpers/DefaultDialog.desktop.kt` | — | Low | Desktop dialog extensions | | `views/newchat/QRCode.desktop.kt` | PC12 | Low | Desktop QR code rendering | | `views/newchat/QRCodeScanner.desktop.kt` | PC12 | Low | Desktop QR code scanner (screen/clipboard) | | `views/onboarding/SimpleXInfo.desktop.kt` | PC1 | Low | Desktop onboarding extensions | | `views/onboarding/SetNotificationsMode.desktop.kt` | PC18 | Low | Desktop notification mode extensions | | `views/usersettings/Appearance.desktop.kt` | PC24 | Low | Desktop appearance extensions | | `views/usersettings/PrivacySettings.desktop.kt` | PC20, PC22 | Low | Desktop privacy settings extensions | | `views/usersettings/SettingsView.desktop.kt` | — | Low | Desktop settings extensions | | `views/usersettings/networkAndServers/OperatorView.desktop.kt` | PC25 | Low | Desktop operator view extensions | | `views/usersettings/networkAndServers/ScanProtocolServer.desktop.kt` | PC25 | Low | Desktop server address scan | | `ui/theme/Theme.desktop.kt` | PC24 | Low | Desktop system theme detection | | `ui/theme/Type.desktop.kt` | PC24 | Low | Desktop typography | | `other/videoplayer/SkiaBitmapVideoSurface.kt` | PC10 | Low | Desktop Skia video surface for VLC | --- ## 4. Haskell Core Impact The Haskell core is compiled as a shared native library (`libsimplex.so` / `libsimplex.dylib`) and linked via JNI through `Core.kt`. Changes here affect both Android and Desktop identically. | Source File | Product Concepts Affected | Risk Level | Notes | |-------------|--------------------------|------------|-------| | `src/Simplex/Chat.hs` | PC1 through PC30 | High | Main chat module — top-level orchestration | | `src/Simplex/Chat/Controller.hs` | PC1 through PC30 | High | Command processor — all API commands dispatched here | | `src/Simplex/Chat/Types.hs` | PC1 through PC30 | High | Core data types shared across all features | | `src/Simplex/Chat/Core.hs` | PC1 through PC30 | High | Chat engine lifecycle (start, stop, subscribe) | | `src/Simplex/Chat/Library/Commands.hs` | PC1 through PC30 | High | API command handler implementations | | `src/Simplex/Chat/Library/Internal.hs` | PC1 through PC30 | High | Internal helpers for command processing | | `src/Simplex/Chat/Library/Subscriber.hs` | PC1 through PC30 | High | Event subscriber — incoming message routing | | `src/Simplex/Chat/Protocol.hs` | PC2, PC3, PC4, PC5, PC6, PC7 | High | Chat-level message protocol (x-events) | | `src/Simplex/Chat/Messages.hs` | PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9 | High | Message types and content | | `src/Simplex/Chat/Messages/CIContent.hs` | PC4, PC5, PC6, PC7, PC8, PC9, PC11 | Medium | Chat item content variants | | `src/Simplex/Chat/Messages/CIContent/Events.hs` | PC3, PC14, PC16 | Medium | Group event content types | | `src/Simplex/Chat/Messages/Batch.hs` | PC2, PC3, PC4 | Medium | Message batching for efficient delivery | | `src/Simplex/Chat/Call.hs` | PC17 | Medium | Call signaling types | | `src/Simplex/Chat/Files.hs` | PC10 | Medium | File transfer orchestration | | `src/Simplex/Chat/Delivery.hs` | PC2, PC3 | Medium | Message delivery engine | | `src/Simplex/Chat/Markdown.hs` | PC4 | Low | Markdown parsing for message formatting | | `src/Simplex/Chat/Store.hs` | PC1 through PC30 | High | Database store interface | | `src/Simplex/Chat/Store/Shared.hs` | PC1 through PC30 | Medium | Shared store utilities | | `src/Simplex/Chat/Store/Messages.hs` | PC4, PC5, PC6, PC7, PC8 | High | Message persistence | | `src/Simplex/Chat/Store/Groups.hs` | PC3, PC14, PC15, PC16, PC30 | High | Group persistence | | `src/Simplex/Chat/Store/Direct.hs` | PC2, PC12, PC13 | High | Contact persistence | | `src/Simplex/Chat/Store/Files.hs` | PC10 | Medium | File transfer persistence | | `src/Simplex/Chat/Store/Profiles.hs` | PC19, PC21 | Medium | User profile persistence | | `src/Simplex/Chat/Store/Connections.hs` | PC2, PC12 | High | Connection persistence and entity resolution | | `src/Simplex/Chat/Store/ContactRequest.hs` | PC12 | Medium | Contact request persistence | | `src/Simplex/Chat/Store/NoteFolders.hs` | PC1 | Low | Note folder (self-chat) persistence | | `src/Simplex/Chat/Store/Delivery.hs` | PC2, PC3 | Medium | Delivery task persistence | | `src/Simplex/Chat/Store/AppSettings.hs` | PC25 | Low | App settings persistence | | `src/Simplex/Chat/Store/Remote.hs` | PC27 | Low | Remote desktop session persistence | | `src/Simplex/Chat/Archive.hs` | PC26 | Medium | Database export/import for migration | | `src/Simplex/Chat/Options.hs` | PC23, PC25 | Low | Startup options (DB path, key, etc.) | | `src/Simplex/Chat/Remote.hs` | PC27 | Medium | Remote desktop protocol handler | | `src/Simplex/Chat/Remote/Types.hs` | PC27 | Low | Remote desktop data types | | `src/Simplex/Chat/Remote/Protocol.hs` | PC27 | Medium | Remote desktop wire protocol | | `src/Simplex/Chat/Remote/Transport.hs` | PC27 | Low | Remote desktop transport layer | | `src/Simplex/Chat/Remote/RevHTTP.hs` | PC27 | Low | Reverse HTTP for remote desktop | | `src/Simplex/Chat/Remote/AppVersion.hs` | PC27 | Low | Remote version negotiation | | `src/Simplex/Chat/ProfileGenerator.hs` | PC20 | Low | Random profile generation for incognito | | `src/Simplex/Chat/Types/UITheme.hs` | PC24 | Low | Theme data types for UI customization | | `src/Simplex/Chat/Types/Preferences.hs` | PC2, PC3, PC8 | Medium | Chat feature preferences (timed messages, etc.) | | `src/Simplex/Chat/Types/Shared.hs` | PC3, PC16 | Medium | Shared types including GroupMemberRole | | `src/Simplex/Chat/Types/MemberRelations.hs` | PC3, PC16, PC30 | Medium | Member relationship state machine | | `src/Simplex/Chat/Operators.hs` | PC25 | Medium | Server operator management | | `src/Simplex/Chat/Operators/Presets.hs` | PC25 | Low | Preset server operators | | `src/Simplex/Chat/Operators/Conditions.hs` | PC25 | Low | Operator usage conditions | | `src/Simplex/Chat/AppSettings.hs` | PC25 | Low | App settings sync types | | `src/Simplex/Chat/Mobile.hs` | PC1 through PC30 | High | C FFI exports — JNI bridge target | | `src/Simplex/Chat/Mobile/File.hs` | PC10 | Medium | Mobile file read/write FFI | | `src/Simplex/Chat/Mobile/Shared.hs` | PC1 through PC30 | Medium | Shared FFI helpers | | `src/Simplex/Chat/Mobile/WebRTC.hs` | PC17 | Low | WebRTC FFI helpers | | `src/Simplex/Chat/View.hs` | PC1 through PC30 | Low | Terminal view rendering (not used by mobile/desktop UI) | | `src/Simplex/Chat/Stats.hs` | PC25 | Low | Server statistics tracking | | `src/Simplex/Chat/Util.hs` | — | Low | General Haskell utilities | | `src/Simplex/Chat/Styled.hs` | — | Low | Terminal styled text (not used by mobile/desktop UI) | | `src/Simplex/Chat/Help.hs` | — | Low | Terminal help text | | `src/Simplex/Chat/Bot.hs` | — | Low | Chat bot framework | | `src/Simplex/Chat/Bot/KnownContacts.hs` | — | Low | Bot known contacts |