chore(release): prepare 3.3.5

This commit is contained in:
esefxdz committed 2026-09-06 12:09:20 +03:00
1 parent 08b21dc5d9
commit 5d2683f354
2 files changed
+45 -1

No files matched your search

+44
View File
@@ -5,6 +5,50 @@ Versions follow [semver](https://semver.org/): MAJOR.MINOR.PATCH
---
## [3.3.5] — 2026-09-06
### Added
- **Reproducible release verification.** The release build pins the production
`app_config.dart` by SHA-256 and fails closed on any mismatch, so a release
APK cannot silently ship a template or wrong server config.
### Changed
- **Vendored Android runtime.** The pinned `flutter_vless` Android runtime is now
vendored in-tree instead of being patched in the pub cache at build time.
- **Harden the control-plane trust boundary.** `/session/status` fields are
strictly validated (nonce, destination IP, port, SNI, XHTTP path), control
responses are capped and never follow redirects, and the tunnel destination
is pinned to the compiled server — a compromised API can no longer redirect
user traffic.
- **Authenticated local SOCKS5 is now mandatory.** The ephemeral local proxy
replaces rather than filters inbounds, so only the authenticated SOCKS5
listener can exist.
- **Fail closed on connection-mode changes.** The mode is persisted before it is
applied, and a failed save leaves the UI and runtime unchanged instead of
silently selecting a weaker route.
### Fixed
- Connect button no longer leaks a listener into a disposed `AnimationController`
during teardown.
- Disclosure acknowledgement is only persisted once the user accepts it.
- Session countdown now uses a monotonic clock (cannot be extended by rolling the
device clock back) and a VPN error tears the tunnel down instead of freezing
the timer on a live session.
- The VPN-service notification's disconnect action and countdown re-post are
aligned with the vendored runtime.
### Removed
- Unsupported server-selector UI (single server today; design retained for
multi-server later).
- Unused Flutter dependencies and orphaned assets.
- Dead Dart wrappers whose native handlers no longer exist.
### Security & privacy
- IPv6 is captured by the VPN interface (`::/0` route), closing a leak where
IPv6 traffic could bypass the tunnel on IPv6-capable carriers.
---
## [3.3.4] — 2026-09-02
### Added
+1 -1
View File
@@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 3.3.4+30
version: 3.3.5+31
environment:
sdk: ">=3.0.0 <4.0.0"