chore: update all submodule refs + CI/CD workflows + AGENTS.md
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# 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.NoActionBar` parent theme with custom color overrides
|
||||
- Card borders use `#21262D` stroke 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 `ellipsize` or `singleLine`)
|
||||
- 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
|
||||
|
||||
- `tvServerEndpoint` renamed to `tvAdminWeb` — any code referencing the old ID must be updated
|
||||
- New string resources added — translations needed for non-Indonesian locales
|
||||
Reference in New Issue
Block a user