The legacy build (API 21) uses Compose BOM 2025.01.00 where
rememberOverscrollEffect() is internal and overscrollEffect
parameter doesn't exist on verticalScroll/LazyColumn.
- Add Spotless plugin 8.1.0 with ktlint 1.7.1 and Google Java Format
- Configure ktlint rules, disable filename/max-line-length/property-naming
- Remove old ktlint plugin
Use libsu's Shell API instead of Runtime.exec("su -c ...") for root
detection. The previous approach assumed su is in PATH, which works
for Magisk but not for KernelSU where su has a different path.
- Rename error strings to use error_ prefix consistently
- Rename success strings to use success_ prefix
- Rename failure strings to use failed_ prefix
- Reorganize strings by feature groups with section comments
- Remove unused shortcuts.xml and manifest references
- Update all Kotlin code references
- Rename ComposeActivity to MainActivity
- Rename EditProfileComposeActivity to EditProfileActivity
- Rename NewProfileComposeActivity to NewProfileActivity
- Rename GroupsComposeActivity to GroupsActivity
- Move data models to compose/model package
- Update all references in AndroidManifest.xml and source files
Keep only Compose UI, removing old View-based Activities, Fragments,
and layouts. QRScanActivity and PerAppProxyActivity are retained as
they are still used by Compose UI.
- Add performSearch() method to Connection with support for plain text
and typed search (network:, inbound:, outbound:, rule:, package:, etc.)
- Add search state management in ConnectionsViewModel
- Move filter/sort/search controls to header in ComposeActivity
- Add collapsible search bar with AnimatedVisibility
Implement connections panel accessible from status bar showing active
and closed connections with filtering/sorting options, traffic stats,
and the ability to close individual or all connections.