3.4 KiB
3.4 KiB
Android Agent UI Redesign
Date: 2026-07-04 Scope: NexusGuard Android Agent main activity UI
Summary
Complete redesign of the Android agent main activity UI with a dark theme, green accent color scheme, copy-tap support, and new port forwarding display.
Files Changed
| File | Change |
|---|---|
app/src/main/res/values/strings.xml |
Added 13 new string resources for UI labels |
app/src/main/res/values/colors.xml |
Added 8 new color definitions (dark/green theme) |
app/src/main/res/values/themes.xml |
Applied custom Material3 theme attributes |
app/src/main/res/layout/activity_main.xml |
Complete layout redesign |
app/src/main/java/com/datadunia/nexusguard/MainActivity.kt |
Updated Kotlin bindings and logic |
Design Changes
Theme
- Dark background (
#0D1117) with green accent (#00C853) - Material3
DayNight.NoActionBarparent theme with custom color overrides - Card borders use
#21262Dstroke color
Header
- App name "NexusGuard" displayed in green accent color
- MaterialSwitch for VPN toggle with ON/OFF labels
- Status text below switch (colored by state)
Status Device Agent Card
- Renamed from "Informasi Tunnel" to "Status Device Agent"
- Six data rows: IP Address, Admin Web, Device ID, Handshake Terakhir, Allowed IPs, Transport
- All value TextViews are selectable (
textIsSelectable="true") and copy-tappable - Device ID displays full text without truncation (no
ellipsizeorsingleLine) - Admin Web shows fixed domain
https://api-nexus.datadunia.com
Port Forwarding Card (New)
- Displays active port forwards from
PortForwarder.getActiveForwards() - Shows protocol badge (TCP/UDP) and port mapping info
- Empty state message when no forwards are active
Log Card
- Height reduced from 300dp to 250dp
- Monospace font at 10sp
- Log level filtering: WARN+ in release, all levels in debug
Behavior Changes
Copy-Tap
All value TextViews in the status card respond to tap with clipboard copy and "Disalin" Toast feedback.
Log Level Filtering
LogBuffer.initLevel(BuildConfig.DEBUG) called in onCreate() — release builds only store WARN+ entries (50 max), debug builds store all.
Port Forward Updates
updatePortForwardCard() called after every updateCardFields() in all tunnel states (CONNECTING, CONNECTED, FAILED).
Layout IDs
| ID | Type | Purpose |
|---|---|---|
switchVpn |
MaterialSwitch | VPN toggle |
tvStatus |
TextView | Connection status text |
cardInfo |
MaterialCardView | Status Device Agent card |
tvIpAddress |
TextView | Internal IP value |
tvAdminWeb |
TextView | Admin web domain (was tvServerEndpoint) |
tvDeviceId |
TextView | Device ID value |
tvHandshake |
TextView | Last handshake time |
tvAllowedIps |
TextView | Allowed IPs value |
tvTransport |
TextView | Transport protocol |
cardPorts |
MaterialCardView | Port Forwarding card |
portForwardContainer |
LinearLayout | Dynamic port forward items |
cardLog |
MaterialCardView | Log card |
tvLogScrollView |
ScrollView | Log scroll container |
tvLog |
TextView | Log text |
btnImportConfig |
MaterialButton | Import config button |
btnToggleLog |
MaterialButton | Log toggle button |
btnSettings |
ImageButton | Settings icon |
Breaking Changes
tvServerEndpointrenamed totvAdminWeb— any code referencing the old ID must be updated- New string resources added — translations needed for non-Indonesian locales