chore(release): prepare 3.3.5
This commit is contained in:
1 parent
08b21dc5d9
commit
5d2683f354
2 files changed
+45
-1
No files matched your search
@@ -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
|
## [3.3.4] — 2026-09-02
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
+1
-1
@@ -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.
|
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
||||||
# Read more about iOS versioning at
|
# Read more about iOS versioning at
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
version: 3.3.4+30
|
version: 3.3.5+31
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.0.0 <4.0.0"
|
||||||
|
|||||||
Reference in new issue
Block a user