Aether-GUI v1.18.0 — Aether 2.1.0 engine integration
Upgrades the bundled engine from Aether 2.0.0 to 2.1.0 and fixes connect-lifecycle bugs found in real session logs. GUI and engine have separate version numbers.
Engine (2.1.0)
- Psiphon modes:
psiphon,psiphon-reverse,psiphon-only(XOR shapes); MASQUE required for reverse. - Native Tor flags: bridge presets / bridge file / no-bridges / force-bridges,
--tor-relays, relay ports,--tor-http. --exit-loc/--exit-loc-secs,--stats/--stats-secs, noize profiles,--mark.- Scan mode
stealthaliases verified; turbo/balanced/thorough/verified/ironclad budgets aligned with upstream prober deadlines. - Pinned install (
engine-<ver>/) with SHA-256 verification for engine,pt/lyrebird, andpt/psiphon-tunnel-core.
Connect lifecycle (aether-3 / aether-4 field fixes)
- Stuck “Starting Aether…”: first engine log line now marks interactive prompts done, so the UI advances Launching → Connecting when the full CLI never shows a prompt menu.
- Stale monitor killing a live session: each spawn bumps an epoch; monitors exit if the epoch changes and only ever kill their own session. SOCKS address is re-read every tick instead of captured once.
- Disconnect wouldn’t cancel / wouldn’t reconnect: any non-Idle/Error state is cancellable even with no session behind it (zombie Launching/Connecting), so you can turn the tunnel off without restarting the app.
- AlreadyRunning → Error desync: the frontend no longer flips to Error when the backend still owns the attempt; the status event catches the UI up.
Proxy / ports / status
- Private engine, engine-Tor, and engine-Psiphon ports are reserved separately so reverse/only modes no longer fight over 1821/1820.
- Windows bind conflicts (
only one usage of each socket address) classify as port-in-use. - Secondary Tor/Psiphon status line is sticky (no ready/unready blink) and gated on mode + session.
- Host
PROXY/HTTPS_PROXY/… env vars are stripped from the engine process;NO_PROXYpins loopback.
UI
- Scan Mode menu scrolls on the x-axis when the window is narrow instead of overflowing the app.
- IP Changer panel stays constrained after Start Tor (carried from v0.17.1).
Known upstream (not GUI)
- MASQUE-in-MASQUE can fail every inner edge with QUIC
0x128while the outer hop validates — engine-side; single-hop MASQUE connects normally on the same install.
Verification
cargo fmt --check,cargo clippy --all-targets -- -D warnings,cargo testgreen.npm run typecheck && lint && buildgreen (one pre-existing TanStack Virtual warning).
Full changelog: v0.17.1...v1.18.0