# stephendev0/stikdebug-legacy architecture

> Architecture diagram of the GitHub repository stephendev0/stikdebug-legacy, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/stephendev0/stikdebug-legacy
- Repository: https://github.com/stephendev0/stikdebug-legacy

## Overview

1. **What this repo is**
   - StikDebug is an iOS-first, on-device utility app built in Swift/SwiftUI.
   - Its core purpose is to connect to the current device, inspect it, and perform debug-oriented actions such as JIT enabling, process inspection, app launching, console logging, and location simulation.
   - The architecture is centered around local device control rather than any backend service.

2. **Top-level app composition**
   - The app entry point is `StikDebugApp.swift`, with `AppBootstrapper.swift` and `AppFeature.swift` acting as the startup/coordinator layer.
   - The main user experience is tab-based (`MainTabView.swift`) and is split into feature screens such as Home, Installed Apps, Console Logs, Tools, Settings, Profile, and Process Inspector.
   - This suggests a feature-oriented UI with shared app state/services feeding multiple tabs.

3. **Device connectivity is the core subsystem**
   - The most important boundary in the repo is between the Swift app and the device-level native bridge.
   - `StikDebug/idevice` contains a bundled C library interface (`libidevice_ffi.a`, `idevice.h`, `module.modulemap`) used to talk to Apple device services.
   - Higher-level Swift wrappers (`IdeviceFFIBridge.swift`, `DeviceConnectionContext.swift`, `DeviceInfoManager.swift`, `JITEnableContext.swift`) abstract the raw FFI into app-safe workflows.

4. **Pairing, tunneling, and DDI mounting**
   - The app relies on a pairing file (`PairingFileStore.swift`) to authenticate against the device.
   - `TunnelManager.swift` and the README’s loopback VPN requirement indicate the app depends on a local tunnel/VPN path to reach device services on iOS 17.4+.
   - `DeveloperDiskImageService.swift` and `mountDDI.swift` handle Developer Disk Image-related setup, which is typically required for deeper device interaction and JIT-related capabilities.
   - `MountingProgress.swift` and related contexts imply this setup is asynchronous and surfaced to the UI as progress state.

5. **JIT enablement workflow**
   - The flagship action is enabling JIT for sideloaded apps.
   - The flow is: select a paired device, establish the tunnel/connection, mount required disk image/services if needed, then enable JIT for a chosen installed app.
   - `InstalledAppsViewModel.swift`, `InstalledAppListItem.swift`, and `InstalledAppRows.swift` drive the app-selection UI, while `JITEnableContext.swift` likely coordinates the activation sequence.

6. **Installed apps and app metadata**
   - The Installed Apps feature is its own subsystem, not just a UI list.
   - `AppIconRepository.swift` and `AppStoreIconFetcher.swift` indicate the app enriches local installed-app records with icons/metadata.
   - The app can launch installed apps and appears to track app expiry/profile-related state, which matches the README’s “App Expiry” feature.

7. **Console, logs, and process inspection**
   - `ConsoleLogsView.swift`, `SystemLogStream.swift`, and `LogManager.swift` provide live log streaming from both apps and the system.
   - `ProcessInspectorView.swift` suggests the app can enumerate running processes, inspect them, and potentially terminate them.
   - These are device-sourced streams/actions, so the data flow is from the device bridge into log/process views rather than from local persistence.

8. **Script management and JavaScript support**
   - `JSSupport` is a separate subsystem for managing and running JS-based automation.
   - `ScriptStore.swift`, `ScriptListView.swift`, `ScriptEditorView.swift`, and `RunJSView.swift` provide script lifecycle management and execution UI.
   - `AutoScriptAssignments.swift` suggests scripts can be bound to specific apps or conditions, which is useful for JIT automation flows.
   - The bundled scripts in `Scripts/` (`Geode.js`, `UTM-Dolphin.js`, `maciOS.js`, `universal.js`) show that the system ships with predefined automation recipes.

9. **Device utility services**
   - Several services support the app’s “keep the device usable while debugging” behavior:
     - `BackgroundAudioManager.swift`
     - `BackgroundLocationManager.swift`
     - `DebugKeepAliveLease.swift`
     - `AccessibilityAnnouncer.swift`, `Haptics.swift`, and `AlertPresenter.swift` for user feedback
   - `MapSelectionView.swift` and the README’s “Location Simulator” feature indicate a location spoofing/simulation flow backed by those services.

10. **Shared support layer**
   - The `Support/` folder contains cross-cutting helpers and app infrastructure: file lookup, document picker copying workaround, notification names, user defaults keys, localization, and codable app storage helpers.
   - `ScriptStore`, `PairingFileStore`, and related types likely provide the local persistence boundary for pairing files, scripts, and configuration state.
   - This layer keeps storage/UI/device-bridge concerns separated from the feature screens.

11. **Feature and view organization**
   - The `Features/` and `Views/` folders show a modular split between domain logic and screens.
   - `HomeView`, `InstalledAppsListView`, `ToolsView`, `SettingsView`, `ProfileView`, and `MapSelectionView` are the primary user-facing surfaces.
   - `HomeExternalAction.swift` suggests the home screen can react to external triggers or system events.

12. **Platform and build boundaries**
   - This is an Xcode-based iOS app (`StikDebug.xcodeproj`) with SwiftPM integration and explicit entitlements (`StikDebug.entitlements`).
   - The project includes tests (`StikDebugTests`, `StikDebugUITests`) and a `DebugWidgetExtension` scheme, implying some auxiliary target support.
   - Assets, localization, and Info.plist are standard app packaging pieces, but the key architectural constraint is device-level capability access through signing/entitlements.

13. **Automation and release infrastructure**
   - GitHub Actions workflows (`build_ipa.yml`, `updatesource.yml`) indicate the repo has CI for building distributable IPAs and syncing/updating source-related outputs.
   - The README’s distribution paths (AltSource/direct IPA) reinforce that this project is meant to be built and shipped as an installable iOS app, not deployed as a server.

14. **Overall architecture in one sentence**
   - StikDebug is a feature-based SwiftUI iOS app whose UI tabs drive a device-control backend built on an `idevice` FFI bridge, with supporting services for pairing, tunneling, DDI mounting, JIT activation, logging, script automation, and device utility features.

Main entry points: [`StikDebug/Views/MainTabView.swift`](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/MainTabView.swift) (Main tabs), [`StikDebug/Device/DeviceConnectionContext.swift`](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/DeviceConnectionContext.swift) (Device context), [`StikDebug/Device/JITEnableContext.swift`](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/JITEnableContext.swift) (JIT flow), [`StikDebug/JSSupport/JSDebugSupport.swift`](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/JSSupport/JSDebugSupport.swift) (JS support)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App Shell"]
  node_stikdebug_app(("App entry<br/>SwiftUI App<br/>[StikDebugApp.swift]"))
  node_app_bootstrapper["Bootstrapper<br/>startup coordinator"]
  node_app_feature["App feature<br/>app state<br/>[AppFeature.swift]"]
end

subgraph group_device["Device Control"]
  node_device_bridge["FFI bridge<br/>C bridge"]
  node_device_context["Device context<br/>device session"]
  node_device_info["Device info<br/>device metadata"]
  node_jit_context["JIT flow<br/>activation workflow"]
  node_mount_progress(("Mount progress<br/>progress state"))
  node_log_stream["Log stream<br/>device stream"]
  node_mount_ddi["Mount DDI<br/>device setup<br/>[mountDDI.swift]"]
end

subgraph group_features["Features"]
  node_apps_vm["Apps VM<br/>feature model"]
  node_app_icon_repo["Icon repo<br/>metadata cache"]
end

subgraph group_scripts["JSSupport"]
  node_js_support["JS support<br/>automation runtime"]
end

subgraph group_services["Services"]
  node_tunnel_manager["Tunnel<br/>network path"]
  node_ddi_service["DDI service"]
  node_app_store_fetcher["Store fetcher<br/>metadata fetcher"]
  node_bg_audio["Background audio<br/>keepalive service"]
  node_bg_location["Background location<br/>location service"]
  node_keepalive["Keep alive<br/>lease"]
end

subgraph group_support["Support"]
  node_pairing_store[("Pairing store<br/>credential store")]
  node_script_store[("Script store<br/>script persistence<br/>[ScriptStore.swift]")]
  node_auto_scripts["Auto scripts<br/>assignment rules"]
  node_system_log_manager["Log manager<br/>log coordination<br/>[LogManager.swift]"]
  node_alert_presenter["Alerts<br/>ui feedback"]
end

subgraph group_views["Views"]
  node_main_tab_view["Main tabs<br/>tab shell<br/>[MainTabView.swift]"]
  node_home_view["Home<br/>dashboard view<br/>[HomeView.swift]"]
  node_installed_apps_view["Installed apps<br/>apps list view"]
  node_tools_view["Tools<br/>utility view<br/>[ToolsView.swift]"]
  node_settings_view["Settings<br/>preferences view<br/>[SettingsView.swift]"]
  node_profile_view["Profile<br/>[ProfileView.swift]"]
  node_console_logs_view["Console logs<br/>log view"]
  node_process_inspector_view["Processes<br/>inspector view"]
  node_map_selection_view["Location<br/>map picker"]
end

node_stikdebug_app -->|"boots"| node_app_bootstrapper
node_app_bootstrapper -->|"configures"| node_app_feature
node_app_feature -->|"drives"| node_main_tab_view
node_main_tab_view -->|"shows"| node_home_view
node_main_tab_view -->|"shows"| node_installed_apps_view
node_main_tab_view -->|"shows"| node_tools_view
node_main_tab_view -->|"shows"| node_settings_view
node_main_tab_view -->|"shows"| node_profile_view
node_main_tab_view -->|"shows"| node_console_logs_view
node_main_tab_view -->|"shows"| node_process_inspector_view
node_main_tab_view -->|"shows"| node_map_selection_view
node_device_context -->|"uses"| node_device_bridge
node_device_context -->|"loads"| node_pairing_store
node_device_context -->|"connects"| node_tunnel_manager
node_device_context -->|"requests"| node_ddi_service
node_ddi_service -->|"mounts"| node_mount_ddi
node_mount_ddi -->|"reports"| node_mount_progress
node_jit_context -->|"depends on"| node_device_context
node_jit_context -->|"prepares"| node_mount_ddi
node_jit_context -->|"targets"| node_apps_vm
node_apps_vm -->|"enriches"| node_app_icon_repo
node_app_icon_repo -->|"fetches"| node_app_store_fetcher
node_console_logs_view -->|"subscribes"| node_log_stream
node_log_stream -->|"coordinates"| node_system_log_manager
node_process_inspector_view -->|"inspects"| node_device_bridge
node_map_selection_view -->|"drives"| node_bg_location
node_home_view -->|"uses"| node_keepalive
node_tools_view -->|"uses"| node_bg_audio
node_tools_view -->|"uses"| node_bg_location
node_js_support -->|"loads"| node_script_store
node_js_support -->|"applies"| node_auto_scripts
node_js_support -->|"executes on"| node_device_context
node_settings_view -->|"manages"| node_pairing_store
node_alert_presenter -.->|"notifies"| node_home_view

click node_stikdebug_app "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/App/StikDebugApp.swift"
click node_app_bootstrapper "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/App/AppBootstrapper.swift"
click node_app_feature "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/App/AppFeature.swift"
click node_main_tab_view "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/MainTabView.swift"
click node_home_view "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/HomeView.swift"
click node_installed_apps_view "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/InstalledAppsListView.swift"
click node_tools_view "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/ToolsView.swift"
click node_settings_view "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/SettingsView.swift"
click node_profile_view "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/ProfileView.swift"
click node_console_logs_view "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/ConsoleLogsView.swift"
click node_process_inspector_view "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/ProcessInspectorView.swift"
click node_map_selection_view "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/MapSelectionView.swift"
click node_device_bridge "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/IdeviceFFIBridge.swift"
click node_device_context "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/DeviceConnectionContext.swift"
click node_device_info "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/DeviceInfoManager.swift"
click node_jit_context "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/JITEnableContext.swift"
click node_mount_progress "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/MountingProgress.swift"
click node_log_stream "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/SystemLogStream.swift"
click node_mount_ddi "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/mountDDI.swift"
click node_pairing_store "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Support/PairingFileStore.swift"
click node_tunnel_manager "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/TunnelManager.swift"
click node_ddi_service "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/DeveloperDiskImageService.swift"
click node_apps_vm "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Features/InstalledApps/InstalledAppsViewModel.swift"
click node_app_icon_repo "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Features/InstalledApps/AppIconRepository.swift"
click node_app_store_fetcher "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/AppStoreIconFetcher.swift"
click node_js_support "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/JSSupport/JSDebugSupport.swift"
click node_script_store "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Support/ScriptStore.swift"
click node_auto_scripts "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Support/AutoScriptAssignments.swift"
click node_system_log_manager "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Core/LogManager.swift"
click node_bg_audio "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/BackgroundAudioManager.swift"
click node_bg_location "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/BackgroundLocationManager.swift"
click node_keepalive "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/DebugKeepAliveLease.swift"
click node_alert_presenter "https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Support/AlertPresenter.swift"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_stikdebug_app,node_app_bootstrapper,node_app_feature,node_main_tab_view,node_home_view,node_installed_apps_view,node_tools_view,node_settings_view,node_profile_view,node_console_logs_view,node_process_inspector_view,node_map_selection_view toneBlue
class node_device_bridge,node_device_context,node_device_info,node_jit_context,node_mount_progress,node_log_stream,node_mount_ddi toneAmber
class node_apps_vm,node_app_icon_repo toneMint
class node_js_support toneRose
class node_tunnel_manager,node_ddi_service,node_app_store_fetcher,node_bg_audio,node_bg_location,node_keepalive toneIndigo
class node_pairing_store,node_script_store,node_auto_scripts,node_system_log_manager,node_alert_presenter toneTeal
```

## Components

### App Shell

App entry, bootstrap, and primary navigation.

- [App entry](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/App/StikDebugApp.swift): SwiftUI App · Application entry point and root lifecycle. · `StikDebug/App/StikDebugApp.swift`
- [Bootstrapper](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/App/AppBootstrapper.swift): startup coordinator · Initial app setup and dependency wiring. · `StikDebug/App/AppBootstrapper.swift`
- [App feature](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/App/AppFeature.swift): app state · Top-level feature/state composition for the app. · `StikDebug/App/AppFeature.swift`

### Device Control

FFI bridge and device workflows for pairing, tunneling, mounting, and JIT.

- [FFI bridge](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/IdeviceFFIBridge.swift): C bridge · Swift wrapper over bundled idevice FFI. · `StikDebug/Device/IdeviceFFIBridge.swift`
- [Device context](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/DeviceConnectionContext.swift): device session · High-level device connection/session state. · `StikDebug/Device/DeviceConnectionContext.swift`
- [Device info](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/DeviceInfoManager.swift): device metadata · Device discovery and metadata management. · `StikDebug/Device/DeviceInfoManager.swift`
- [JIT flow](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/JITEnableContext.swift): activation workflow · Coordinates JIT enablement for selected apps. · `StikDebug/Device/JITEnableContext.swift`
- [Mount progress](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/MountingProgress.swift): progress state · Asynchronous state for DDI mounting and setup. · `StikDebug/Device/MountingProgress.swift`
- [Log stream](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/SystemLogStream.swift): device stream · Streaming source for system and app console logs. · `StikDebug/Device/SystemLogStream.swift`
- [Mount DDI](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Device/mountDDI.swift): device setup · Developer Disk Image mounting entry point. · `StikDebug/Device/mountDDI.swift`

### Features

Feature-specific state and list/detail logic.

- [Apps VM](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Features/InstalledApps/InstalledAppsViewModel.swift): feature model · View model for installed apps, metadata, and selection. · `StikDebug/Features/InstalledApps/InstalledAppsViewModel.swift`
- [Icon repo](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Features/InstalledApps/AppIconRepository.swift): metadata cache · Resolves and caches app icons for installed apps. · `StikDebug/Features/InstalledApps/AppIconRepository.swift`

### JSSupport

Script management and JavaScript execution.

- [JS support](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/JSSupport/JSDebugSupport.swift): automation runtime · Script execution and automation support layer. · `StikDebug/JSSupport/JSDebugSupport.swift`

### Services

Device utility services and background helpers.

- [Tunnel](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/TunnelManager.swift): network path · Manages the local tunnel/VPN path to device services. · `StikDebug/Services/TunnelManager.swift`
- [DDI service](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/DeveloperDiskImageService.swift): service · Coordinates developer disk image availability and mounting support. · `StikDebug/Services/DeveloperDiskImageService.swift`
- [Store fetcher](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/AppStoreIconFetcher.swift): metadata fetcher · Fetches app-store-style icon or metadata enrichment. · `StikDebug/Services/AppStoreIconFetcher.swift`
- [Background audio](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/BackgroundAudioManager.swift): keepalive service · Keeps device/audio behavior usable during debugging. · `StikDebug/Services/BackgroundAudioManager.swift`
- [Background location](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/BackgroundLocationManager.swift): location service · Supports location simulation and background location behavior. · `StikDebug/Services/BackgroundLocationManager.swift`
- [Keep alive](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Services/DebugKeepAliveLease.swift): lease · Debug-session keep-alive lease and coordination. · `StikDebug/Services/DebugKeepAliveLease.swift`

### Support

Shared storage, UI helpers, and app-wide utilities.

- [Pairing store](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Support/PairingFileStore.swift): credential store · Local storage for pairing artifacts and trust data. · `StikDebug/Support/PairingFileStore.swift`
- [Script store](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Support/ScriptStore.swift): script persistence · Stores scripts and related script metadata locally. · `StikDebug/Support/ScriptStore.swift`
- [Auto scripts](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Support/AutoScriptAssignments.swift): assignment rules · Binds scripts to apps or conditions. · `StikDebug/Support/AutoScriptAssignments.swift`
- [Log manager](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Core/LogManager.swift): log coordination · Central coordinator for log lifecycle and presentation. · `StikDebug/Core/LogManager.swift`
- [Alerts](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Support/AlertPresenter.swift): ui feedback · Shared alert presentation helper. · `StikDebug/Support/AlertPresenter.swift`

### Views

Primary user-facing screens.

- [Main tabs](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/MainTabView.swift): tab shell · Primary navigation container for the app screens. · `StikDebug/Views/MainTabView.swift`
- [Home](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/HomeView.swift): dashboard view · Landing screen for device status and entry actions. · `StikDebug/Views/HomeView.swift`
- [Installed apps](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/InstalledAppsListView.swift): apps list view · Browser for installed apps and JIT-related actions. · `StikDebug/Views/InstalledAppsListView.swift`
- [Tools](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/ToolsView.swift): utility view · Entry screen for device tools and maintenance actions. · `StikDebug/Views/ToolsView.swift`
- [Settings](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/SettingsView.swift): preferences view · App and connection settings surface. · `StikDebug/Views/SettingsView.swift`
- [Profile](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/ProfileView.swift): profile view · User/profile or device identity-related screen. · `StikDebug/Views/ProfileView.swift`
- [Console logs](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/ConsoleLogsView.swift): log view · Live device and app log inspection UI. · `StikDebug/Views/ConsoleLogsView.swift`
- [Processes](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/ProcessInspectorView.swift): inspector view · Running process inspection and control UI. · `StikDebug/Views/ProcessInspectorView.swift`
- [Location](https://github.com/stephendev0/stikdebug-legacy/blob/main/StikDebug/Views/MapSelectionView.swift): map picker · Location simulation and selection UI. · `StikDebug/Views/MapSelectionView.swift`

## Connections

- App entry → Bootstrapper: boots · App startup is delegated to the bootstrapper.
- Bootstrapper → App feature: configures · Bootstrapper wires top-level app state and dependencies.
- App feature → Main tabs: drives · App feature feeds the tab shell and navigation state.
- Main tabs → Home: shows · Primary navigation includes the home screen.
- Main tabs → Installed apps: shows · Primary navigation includes installed apps.
- Main tabs → Tools: shows · Primary navigation includes tools.
- Main tabs → Settings: shows · Primary navigation includes settings.
- Main tabs → Profile: shows · Primary navigation includes profile.
- Main tabs → Console logs: shows · Primary navigation includes logs.
- Main tabs → Processes: shows · Primary navigation includes process inspection.
- Main tabs → Location: shows · Primary navigation exposes location simulation.
- Device context → FFI bridge: uses · Session-level device access is mediated by the bridge.
- Device context → Pairing store: loads · Connection setup depends on stored pairing data.
- Device context → Tunnel: connects · Device services are reached through the local tunnel path.
- Device context → DDI service: requests · Device setup can require developer disk image support.
- DDI service → Mount DDI: mounts · Service delegates the actual DDI mount workflow.
- Mount DDI → Mount progress: reports · Mounting is surfaced through progress state.
- JIT flow → Device context: depends on · JIT enablement runs on an active device session.
- JIT flow → Mount DDI: prepares · JIT workflow may require DDI mounting first.
- JIT flow → Apps VM: targets · JIT activation is initiated from the installed apps feature.
- Apps VM → Icon repo: enriches · Installed apps are decorated with icons and metadata.
- Icon repo → Store fetcher: fetches · Icon repository can pull remote/store-style metadata.
- Console logs → Log stream: subscribes · Console UI consumes the live device log stream.
- Log stream → Log manager: coordinates · Log lifecycle is coordinated centrally.
- Processes → FFI bridge: inspects · Process inspection is backed by the device bridge.
- Location → Background location: drives · Location UI controls the background location service.
- Home → Keep alive: uses · Home/actions surface keep-alive state for debug sessions.
- Tools → Background audio: uses · Tools expose background audio support.
- Tools → Background location: uses · Tools expose location simulation support.
- JS support → Script store: loads · Script runtime reads stored scripts and metadata.
- JS support → Auto scripts: applies · Runtime can apply app/condition-based script assignments.
- JS support → Device context: executes on · Automation runs against the connected device session.
- Settings → Pairing store: manages · Settings surface pairing and local configuration state.
- Alerts → Home: notifies · Shared alerts can surface on the home experience.
