# Twoman 1.0.5

Twoman 1.0.5 is a client stability and diagnostics patch for the Go dataplane
release line.

## Changes

- Android no longer advertises the legacy `198.18.0.2` virtual DNS address
  unless a real local DNS proxy is implemented. This fixes VPN start failures
  where Android Private DNS or UDP DNS attempted to use that unreachable
  client-side address through the tunnel.
- Android profiles now filter resolver addresses before handing them to
  `VpnService.Builder`, and fall back to real public resolvers when old
  imported profiles contain only the legacy virtual DNS address.
- Android VPN setup now declares the active underlying network when available,
  matching normal VPN client practice for upstream connectivity.
- Mobile helper configs now keep the fast Go dataplane defaults, including
  adaptive upload and larger data upload workers.
- Helper and agent configs now support explicit DNS timeout, DNS cache TTL, and
  DNS in-flight limits so slow resolvers fail predictably instead of stalling
  the runtime.
- Helper and agent services can write logs to configured files, which makes
  server-side diagnosis possible after systemd restarts.

## Operational Notes

- Users on Android `1.0.2` or older should upgrade before testing current
  connection strings. Old APKs can still hit the fake-DNS timeout even when the
  server and host are healthy.
- The generated private connection strings have been regenerated without the
  legacy virtual DNS value.
- Server2 still depends on WARP for reaching the host; if WARP cannot complete
  TLS to the public host, Toork/Nima direct-exit profiles can still work while
  Server2 fails.

## Release Assets

This release includes:

- `app-arm64-release.apk`
- `app-arm64-release.aab`
- `Twoman_1.0.5_amd64.AppImage`
- `Twoman_1.0.5_amd64.deb`
- `Twoman-1.0.5-1.x86_64.rpm`
- `Twoman_1.0.5_x64-portable.zip`
- `Twoman_1.0.5_x64-setup.exe`
- `Twoman_1.0.5_x64_en-US.msi`
- `twoman-cli-linux-amd64-v1.0.5.tar.gz`
- `SHA256SUMS`

No debug APK is included.

## Validation

- `helper-agent`: `go test ./...`
- `client-cli`: `go test ./...`
- Android: `:app:testArm64DebugUnitTest`
- Android release: signed `:app:assembleArm64Release`, verified with APK
  Signature Scheme v2
- Desktop: `npm run build`
- Desktop Tauri: `cargo test --locked`
- Host broker: `node --check broker.js` and `node --check app.js`
