Releases: AKASGaming/tailscale-pia-controller
Release list
v1.0.23 - Fix duplicate Android notifications
Summary
Fixes the duplicate notification that could appear the first time the app went to the background.
Android (v1.0.17)
- Uses a single notification slot for background monitoring
- When the controller changes VPN state, that same notification is updated in place with the status message
- Removes the empty second notification that previously appeared alongside the real alert
Install
Download pia-control-v1.0.17-debug.apk below.
v1.0.22 - App icon and notification cleanup
Summary
- New app icon across the WebUI (favicon + header) and Android launcher
- Android notifications simplified — only controller change alerts are shown to the user
Controller (v1.0.22)
- Custom shield icon in the dashboard header and browser tab
- Favicon and Apple touch icon for bookmarks/home screen
Android (v1.0.16)
- New launcher icon on all densities
- Removed the persistent "Watching for controller changes" notification
- Status alerts still fire when VPN is enabled, disabled, or region changes from the WebUI
- Android still uses a silent system foreground notification (required for background monitoring) that should not appear in the status bar
Install
Download pia-control-v1.0.16-debug.apk below.
Deploy the controller update:
git pull
docker compose up -d --build vpn-controllerv1.0.21 - Idle server status and background notifications
Summary
- WebUI server status shows Idle when no devices have VPN enabled, and Active when at least one device is routing through PIA
- Android posts status-bar notifications when the controller changes VPN settings while the app is in the background
Controller (v1.0.20)
- Dashboard header status reflects connected VPN sessions (Idle / Active)
- Live polling updates the status without a page refresh
Android (v1.0.15)
- Background monitor service polls the controller when the app is not open
- Notifications for remote VPN disable, enable, and region changes
- Exit node is still cleared automatically when VPN is disabled from the WebUI
- Requests notification permission on Android 13+
Install
Download pia-control-v1.0.15-debug.apk below.
Deploy the controller update:
git pull
docker compose up -d --build vpn-controllerv1.0.20 - Android syncs remote WebUI changes
Summary
The Android app now polls the controller every 3 seconds so WebUI changes (disable VPN, change region, etc.) apply immediately — even when the app is in the background.
Android (v1.0.14)
- Background status polling while registered
- Clears Tailscale exit node when VPN is disabled from the WebUI
- Toast when the controller changes VPN state remotely
- Fixed exit-node polling to update UI when VPN is turned off
Install
Download pia-control-v1.0.14-debug.apk below.
v1.0.19 - In-app WebUI messages and Android polish
Summary
Admin actions in the WebUI no longer redirect with /?msg=\ in the URL. Android fixes for status bar overlap, spinner theme, and VPN status updates.
Controller (v1.0.19)
- Admin forms submit via fetch and show an in-app flash banner
- Clean URL stays at /\ — no query-string messages
- Legacy ?msg=\ links are shown once then stripped from the address bar
Android (v1.0.13)
- Content no longer draws under the status bar (edge-to-edge insets)
- Region dropdown matches the dark theme
- Status hero card updates immediately when VPN is toggled off
Deploy controller
git pull
docker compose up -d --build vpn-controller
```n
## Install Android
Download **pia-control-v1.0.13-debug.apk** below.v1.0.18 - UI redesign and pairing improvements
Summary
Production-ready UI refresh for both the controller WebUI and Android app, plus pairing/settings fixes.
Controller (v1.0.18)
- Redesigned dark WebUI with stat cards and status badges
- Cached static CSS/JS for faster loads
- Smarter polling (5s, abort in-flight requests, in-place DOM updates)
- Single admin secret field for dashboard actions
- PATCH /devices/me to update device name from the app
Android (v1.0.12)
- Material 3 dark theme matching the WebUI
- Status hero card with live VPN/stack state
- Collapsible controller setup section (always editable)
- Reset all app data to test pairing from scratch
- QR scan loads URL/code without auto-registering — set device name first
- Device name persisted locally and syncable to controller
- Re-register flow with confirmation
Deploy controller
git pull
docker compose up -d --build vpn-controller
```n
## Install Android
Download **pia-control-v1.0.12-debug.apk** below. To re-test pairing: tap **Reset all app data**, scan QR, set your device name, then **Register device**.v1.0.16 - Idle shutdown controls
Summary
Controller release with idle shutdown visibility, accurate in-use counts, and manual early stop.
v1.0.14
- Periodic idle stack cleanup every 60 seconds
- WebUI idle shutdown countdown per region
- Overview stat for configured idle timeout
v1.0.15
- Fix inflated in-use counts caused by stale ref_count
- Count active VPN sessions per region instead of a drifting counter
- Reconcile ref counts on controller startup
- Skip duplicate acquire when re-enabling the same region
v1.0.16
- Stop now button on idle regional stacks in the WebUI
- New endpoint: POST /admin/regions/{region_id}/stop
- Refuses to stop stacks that still have active devices
Deploy
git pull
docker compose up -d --build vpn-controllerv1.0.13 - Fix region spinner feedback loop
Summary
Fixes a bug where refreshing status or switching regions caused an infinite loop of API calls and exit node toggles.
Root cause
Recreating the region spinner adapter on every refresh re-fired onItemSelected, calling switchRegion repeatedly for the same region.
Fixes
- Track active region and ignore duplicate spinner selections
- Only rebuild spinner adapter when region list changes
- Remove duplicate refresh on app launch
- Skip redundant exit node broadcasts
Install
Download pia-control-v1.0.10-debug.apk below.
v1.0.12 - Android export logs
Summary
- New Export logs button in the Android app
- Saves a diagnostic log to Downloads and opens the share sheet
- Logs API calls, VPN/region changes, exit node actions, errors, and UI messages
Install
Download pia-control-v1.0.9-debug.apk below.
Reproduce the issue first, then tap Export logs and share the file.
v1.0.11 - Exit node fixes, Tailscale checks, shutdown cleanup
Summary
Android (v1.0.8 APK)
- Require Tailscale to be connected before enabling VPN or switching regions
- Poll and apply exit node when regional stacks finish starting
- Switch regions from the spinner while VPN is on
- Clear exit node when controller is unreachable, VPN disabled, or stack fails
- Refresh status when returning to the app
Controller
- Start regional stacks in the background (faster API responses)
- On shutdown: disable VPN for all devices and stop all regional stacks
- Devices clear their exit node on next refresh after controller restart
Install
Download pia-control-v1.0.8-debug.apk below.
Deploy
docker compose up -d --build vpn-controller