On phones, the Connections list and Connection Details share a single
ModalBottomSheet. System back was consumed by the sheet's default dismiss
handler, closing the sheet and returning to Dashboard. The in-app back
button just cleared selectedConnectionId, returning to the list.
Add a BackHandler that runs only while a connection is selected, matching
the in-app back button behavior. Swipe-to-dismiss remains unchanged.
Move allLogs/bufferedLogs mutations in appendLogs, clearLogs,
and setDefaultLogLevel into viewModelScope.launch(Dispatchers.Main)
to avoid concurrent iteration from the search debounce flow.
Add a toggle in the service settings screen that calls
VpnService.Builder.allowBypass() when enabled, with a description
linking to Android documentation. Always show the Service item
in the settings list (remove battery-optimization-gated visibility).
- Use proper ClassLoader in ParceledListSlice.createFromParcel instead of null
- Add early root permission check in RootClient.bindService
- Migrate RootService.bind to bindOrTask for proper error propagation
The legacy build (API 21) uses Compose BOM 2025.01.00 where
rememberOverscrollEffect() is internal and overscrollEffect
parameter doesn't exist on verticalScroll/LazyColumn.