Package-level declarations

Types

Link copied to clipboard
class DebugViewModel(meshLogRepository: MeshLogRepository, nodeRepository: NodeRepository, meshLogPrefs: MeshLogPrefs, alertManager: AlertManager, dispatchers: CoroutineDispatchers) : ViewModel
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Logcat priority levels the user can toggle. Fatal/assert lines carry an unknown code and are always shown.

Link copied to clipboard

Functions

Link copied to clipboard
actual fun captureAppLogcat(): String

Dumps this app's own logcat, filtered to our process id via --pid (API 24+, minSdk is 26). Without READ_LOGS the OS already limits us to our own entries, but --pid guarantees it even if that permission is ever granted (e.g. via adb on an emulator) so a shared bug report can't leak other apps' logs. Best-effort: a capture failure returns a marker rather than throwing. ProcessBuilder with a merged stderr avoids a pipe-buffer deadlock, and the bounded wait keeps a stuck capture from tying up the IO thread. ponytail: -t 5000 tail-caps the dump so the exported file stays sane.

expect fun captureAppLogcat(): String

The app's own logs: Android logcat (filtered to this process) on Android, an in-memory Kermit buffer on desktop. Empty on platforms with no log capture (currently iOS).

actual fun captureAppLogcat(): String

The app's own logs: Android logcat (filtered to this process) on Android, an in-memory Kermit buffer on desktop. Empty on platforms with no log capture (currently iOS).

Link copied to clipboard
fun DebugActiveFilters(filterTexts: List<String>, onFilterTextsChange: (List<String>) -> Unit, filterMode: FilterMode, onFilterModeChange: (FilterMode) -> Unit, modifier: Modifier = Modifier)
Link copied to clipboard
fun DebugCustomFilterInput(customFilterText: String, onCustomFilterTextChange: (String) -> Unit, filterTexts: List<String>, onFilterTextsChange: (List<String>) -> Unit, modifier: Modifier = Modifier)
Link copied to clipboard
fun DebugFilterBar(filterTexts: List<String>, onFilterTextsChange: (List<String>) -> Unit, customFilterText: String, onCustomFilterTextChange: (String) -> Unit, presetFilters: List<String>, logs: List<DebugViewModel.UiMeshLog>, modifier: Modifier = Modifier)
Link copied to clipboard
fun DebugMenuActions(deleteLogs: () -> Unit, modifier: Modifier = Modifier)
Link copied to clipboard
fun DebugPresetFilters(presetFilters: List<String>, filterTexts: List<String>, logs: List<DebugViewModel.UiMeshLog>, onFilterTextsChange: (List<String>) -> Unit, modifier: Modifier = Modifier)
Link copied to clipboard
fun DebugScreen(onNavigateUp: () -> Unit, viewModel: DebugViewModel)
Link copied to clipboard
fun DebugSearchBar(searchState: LogSearchManager.SearchState, onSearchTextChange: (String) -> Unit, onNextMatch: () -> Unit, onPreviousMatch: () -> Unit, onClearSearch: () -> Unit, modifier: Modifier = Modifier)
Link copied to clipboard
fun DebugSearchNavigation(searchState: LogSearchManager.SearchState, onNextMatch: () -> Unit, onPreviousMatch: () -> Unit, modifier: Modifier = Modifier)
Link copied to clipboard
fun DebugSearchState(modifier: Modifier = Modifier, searchState: LogSearchManager.SearchState, filterTexts: List<String>, presetFilters: List<String>, logs: List<DebugViewModel.UiMeshLog>, onSearchTextChange: (String) -> Unit, onNextMatch: () -> Unit, onPreviousMatch: () -> Unit, onClearSearch: () -> Unit, onFilterTextsChange: (List<String>) -> Unit, filterMode: FilterMode, onFilterModeChange: (FilterMode) -> Unit, onExportLogs: () -> Unit? = null)
Link copied to clipboard
fun DebugSearchStateWithViewModel(viewModel: DebugViewModel, modifier: Modifier = Modifier, searchState: LogSearchManager.SearchState, filterTexts: List<String>, presetFilters: List<String>, logs: List<DebugViewModel.UiMeshLog>, filterMode: FilterMode, onFilterModeChange: (FilterMode) -> Unit, onExportLogs: () -> Unit? = null)
Link copied to clipboard
fun filterLogcat(raw: String, levels: Set<LogLevel>, query: String): List<String>

Filters raw logcat text by selected levels and a case-insensitive query substring.

Link copied to clipboard
fun LogcatContent(modifier: Modifier = Modifier)

Simple in-app viewer for the app's own logcat: search box, level chips, refresh, and export to a file.

Link copied to clipboard

The priority code of a -v time logcat line (the letter before /), or null for continuation lines.

Link copied to clipboard
actual fun rememberLogExporter(contentProvider: suspend () -> String): (fileName: String) -> Unit

Remembers a launcher that writes contentProvider's text to a user-chosen file.

expect fun rememberLogExporter(contentProvider: suspend () -> String): (fileName: String) -> Unit

Remembers a launcher that writes contentProvider's text to a user-chosen file.

actual fun rememberLogExporter(contentProvider: suspend () -> String): (fileName: String) -> Unit

Remembers a launcher that writes contentProvider's text to a user-chosen file.