feat(app): OS session-expiry enforcement, session persistence, support sync
Enforce session expiry at the OS level (AlarmManager + handler) so the tunnel dies even if the UI process is killed; persist the session so a START_STICKY restart re-establishes it; sync immediately after a support top-up; slow the session beacon 5s/30s -> 60s/60s; drop the Always-on-VPN deep-link and the legacy 'ass' migration. Docs: CHANGELOG 3.3.4, privacy-policy log disclosure, README.
This commit is contained in:
1 parent
dfeb7f161c
commit
9ac236a981
15 files changed
+447
-383
No files matched your search
@@ -5,6 +5,39 @@ Versions follow [semver](https://semver.org/): MAJOR.MINOR.PATCH
|
||||
|
||||
---
|
||||
|
||||
## [3.3.4] — 2026-09-02
|
||||
|
||||
### Added
|
||||
- **OS-level session-expiry enforcement.** The VPN service now holds an absolute
|
||||
deadline and tears the tunnel down on its own clock — a main-looper handler
|
||||
plus an `AlarmManager` exact alarm (falling back to an inexact alarm on
|
||||
Android 13+ when exact alarms aren't granted). The app pushes
|
||||
`now + expires_in_seconds` on each session sync, so a session ends even if the
|
||||
UI process has been killed.
|
||||
- **Session survival across process death.** The service persists the active
|
||||
session and re-establishes it when Android restarts it (`START_STICKY`).
|
||||
- **Support-ad extension reflected immediately.** A rewarded "Support us" ad now
|
||||
forces an immediate server sync, so the countdown and expiry deadline update
|
||||
without waiting for the next heartbeat.
|
||||
|
||||
### Changed
|
||||
- **Session-status beacon slowed.** Foreground poll: 5 s → 60 s; background poll:
|
||||
30 s → 60 s.
|
||||
- **Background-reliability guidance.** The "Always-on VPN" settings deep-link was
|
||||
removed; the battery-optimisation exemption remains, with expiry now enforced
|
||||
by the service itself.
|
||||
|
||||
### Removed
|
||||
- Legacy `ass` connection-mode migration — unrecognized persisted modes now
|
||||
default to TUN.
|
||||
|
||||
### Security & privacy
|
||||
- Session credentials and the per-user VLESS UUID are now held app-private on
|
||||
disk (`active_session.bin`) for the session's lifetime and removed on
|
||||
disconnect or expiry. Previously they were memory-only.
|
||||
|
||||
---
|
||||
|
||||
## [3.3.3] — 2026-09-01
|
||||
|
||||
### Fixed
|
||||
|
||||
Reference in new issue
Block a user