# Twoman 0.7.0

Twoman 0.7.0 is the transport and deployment consolidation release.

This release turns the `0.7` transport refresh into the official shipped
version. The main themes are:

- backend-aware transport profiles
- dedicated DNS handling for tunnel mode
- managed-host Node improvements
- hidden-side WARP routing for reachability and egress
- separate hidden-side outbound proxy routing

## Highlights

- Added broker-advertised transport capabilities and profile selection in
  `twoman_transport.py`:
  - helpers and agents now follow broker-advertised profiles instead of forcing
    one transport shape across every backend
  - shared hosts advertise and default to `shared_host_safe`
  - Node-capable managed hosts can advertise `managed_host_http` and
    `managed_host_ws`
- Added a dedicated DNS protocol path in `twoman_protocol.py`,
  `local_client/helper.py`, and `hidden_server/agent.py`:
  - VPN DNS is no longer modeled as ordinary short-lived proxy streams
  - tunnel mode now uses `FRAME_DNS_QUERY` / `FRAME_DNS_RESPONSE` /
    `FRAME_DNS_FAIL`
  - Android VPN reliability improves because DNS is now a first-class protocol
    subsystem
- Added hidden outbound proxy routing in `hidden_server/agent.py`,
  `twoman_proxy.py`, `twoman_dns.py`, and the install/deploy scripts:
  - the hidden server can use one proxy for `server -> public host`
  - and a separate proxy for final `server -> internet` egress
  - final outbound egress can now be pushed through local WireProxy/WARP when
    needed
- Added managed-host Node broker improvements in `host/node_selector/broker.js`:
  - local Node HTTP and WebSocket end-to-end coverage now ship in-tree
  - the managed-host transport benchmark harness now ships in
    `tests/benchmark_transport_profiles.sh`
- Added Android profile import improvements in `MainActivity.kt` and
  `AndroidManifest.xml`:
  - the app now accepts `twoman://profile?data=...` import links directly

## New Operator Options

The `0.7.0` diff adds explicit hidden-side proxy controls instead of relying on
ad hoc config edits.

- CLI installer options in `twoman_control/cli.py`:
  - `--hidden-upstream-proxy-url`
  - `--hidden-upstream-proxy-label`
  - `--hidden-outbound-proxy-url`
  - `--hidden-outbound-proxy-label`
- Deploy/install environment variables in `twoman_control/installer.py` and the
  shell scripts:
  - `TWOMAN_UPSTREAM_PROXY_URL`
  - `TWOMAN_UPSTREAM_PROXY_LABEL`
  - `TWOMAN_OUTBOUND_PROXY_URL`
  - `TWOMAN_OUTBOUND_PROXY_LABEL`

## WARP Notes

WARP is the important operational path in `0.7.0`.

- Hidden-side WARP can be used for host reachability when the Linux server
  cannot reach the public host directly.
- Hidden-side WARP can also be used for final outbound egress so the visible
  public IP becomes the WARP exit instead of the hidden server IP.
- WARP is a hidden-server routing tool in this release. Desktop and Android
  clients do not need WARP for normal Twoman use.
- WARP does not bypass the public host, remove camouflage, or change the
  public-host role in the architecture.

## Production Notes

- The current audited shared host still recommends `shared_host_safe`.
- The current managed Node path has the highest ceiling, but only when the host
  actually exposes a stable Node-capable runtime and the broker advertises that
  capability.
- Hidden-side WARP remains a reachability and egress tool, not a desktop or
  Android client requirement.
- Camouflage behavior remains in place. This release improves transport and
  deploy behavior without removing the public camouflage model.

## Documentation

- `README.md` now documents:
  - fast install
  - optional hidden outbound proxy routing
  - WARP-backed hidden reachability and egress guidance
- `docs/EASY_DEPLOY.md` now documents:
  - hidden host-route proxying
  - hidden outbound proxying
  - optional WARP-backed hidden deployment routing
- `docs/BACKENDS.md` now documents:
  - backend-family behavior under the `0.7` transport model
  - managed-host Node guidance with WARP and public-host route notes
- `docs/RELEASE_CHECKLIST.md` now matches the `0.7` validation set

## Release Scope

Artifacts should be rebuilt for this release because the shared runtime changed:

- Android APK and AAB
- Linux desktop bundles
- Windows desktop bundles
