New Features
- Home screen widget — One-tap VPN toggle widget with color-coded connection status (green/orange/red) and real-time state updates
- Live traffic speed — Upload/download speed indicators displayed on the status bar when connected
- QR code from gallery — Scan QR codes from screenshots or saved images via a gallery button on the scanner screen
- First launch welcome dialog — Shows app info, GitHub link, and donation address on first open
- About dialog — Accessible from the Settings screen (help icon in top bar)
- Profile reconnect — Switch between profiles without manually disconnecting first
Bug Fixes
- HTTP proxy reliability — Fixed SOCKS5 upstream using 0.0.0.0 instead of 127.0.0.1 in append mode, which caused unreliable connections
- HTTP proxy restart after reconnect — HTTP proxy now automatically restarts after a VPN reconnection
- Reconnect race condition — Cancel in-flight reconnection before disconnect to prevent "port already in use" errors on next connect
- VPN permission check in proxy-only mode — Now always checks VpnService.prepare() even in proxy-only mode, detecting and revoking
conflicting VPNs (e.g. v2ray) - Settings port sync — Port text fields now sync correctly when DataStore values load asynchronously
- Settings bottom padding — Content no longer hidden behind the navigation bar
Performance
- Slipstream authoritative mode — Fixed tight idle poll loop by adding demand-driven poll floor (pending_polls) so response-triggered
polls fire even when BBR pacing is zero - Slipstream shutdown reliability — Capped idle sleep to 2 seconds so shutdown checks happen within the native stop timeout (3s),
preventing abandoned threads holding ports