Releases: ShahabSL/twoman
Release list
Twoman 1.0.7
Twoman 1.0.7
Twoman 1.0.7 is the multi-client stability and release-versioning patch for the
1.0 Go dataplane line.
Changes
- Linux CLI, Android, and desktop profiles now keep a local per-installation
helper peer ID. Multiple users can import the sametwoman://route without
replacing each other on the broker. - Linux CLI explicit
--http-port 0 --socks-port 0now lets the helper bind
ephemeral ports directly, avoiding the pre-reserve race seen during
concurrent startup stress tests. - Adaptive upload now includes an error cooldown after host-side resets, so it
does not immediately ramp back into a throttled upload state. - Release metadata is now first-class across the product: CLI/helper binaries,
server-control installs, hidden-agent deploys, and authenticated broker
health expose product version, build commit, and build time where applicable. - The Linux client installer can install a specific release:
install-linux.sh --version 1.0.7. - The server installer can bootstrap from a specific release tag:
scripts/install_twoman.sh --version 1.0.7.
Validation
helper-agent:go test ./...client-cli:go test ./...- Android unit tests:
testArm64DebugUnitTest testDesktopDebugUnitTest - Desktop Tauri tests:
cargo test - Multi-client live stress:
- WARP-routed hidden server: 6 helpers, 144/144 requests, zero peer replacement/errors.
- Direct hidden server A: 6 helpers, 144/144 requests on recheck, zero peer replacement/errors.
- Direct hidden server B: 6 helpers, 144/144 requests, zero peer replacement/errors.
Release Assets
This release includes the same production asset set as 1.0.6:
app-arm64-release.apkapp-arm64-release.aabTwoman_1.0.7_amd64.AppImageTwoman_1.0.7_amd64.debTwoman-1.0.7-1.x86_64.rpmTwoman_1.0.7_x64-portable.zipTwoman_1.0.7_x64-setup.exeTwoman_1.0.7_x64_en-US.msitwoman-cli-linux-amd64-v1.0.7.tar.gzSHA256SUMS
No debug APK should be included.
Twoman 1.0.6
Twoman 1.0.6
Twoman 1.0.6 is a client packaging and local-port stability patch for the
1.0 Go dataplane release line.
Changes
- Rebuilt desktop release packages with the current Go helper sidecar so
dynamic local ports are reported as assigned ports, not127.0.0.1:0. - Desktop helper launch now suppresses duplicate helper log writes when the
GUI already redirects sidecar output intohelper.log. - Desktop and Linux CLI configs now use the same adaptive upload defaults as
the current Android runtime: bounded data workers with adaptive backoff
instead of fixed high-concurrency uploads. - Desktop and Linux CLI imports now treat missing or zero local ports in shared
profile text as stable platform defaults. Explicit ephemeral ports remain
available for advanced one-shot tests, but long-running services no longer
inherit accidental:0proxy endpoints from mobile-generated profiles. - Android share text now omits dynamic local ports so desktop and Linux clients
pick their own stable local defaults on import.
Operational Notes
- Use this release instead of reinstalling the first
1.0.5Windows packages.
Installers and Android packages behave more predictably when a fixed build
has a new version number. - Linux service installs should use the default stable local ports. Only use
twoman connect --http-port 0 --socks-port 0for intentional ephemeral
one-shot sessions.
Release Assets
This release includes:
app-arm64-release.apkapp-arm64-release.aabTwoman_1.0.6_amd64.AppImageTwoman_1.0.6_amd64.debTwoman-1.0.6-1.x86_64.rpmTwoman_1.0.6_x64-portable.zipTwoman_1.0.6_x64-setup.exeTwoman_1.0.6_x64_en-US.msitwoman-cli-linux-amd64-v1.0.6.tar.gzSHA256SUMS
No debug APK is included.
Validation
helper-agent:go test ./...client-cli:go test ./...twoman_control: focused pytest control/profile-share suite- Go helper/agent Node broker E2E:
tests/run_e2e_go_node_http.sh - Linux CLI E2E:
tests/run_client_cli_e2e.sh - Android:
:app:testArm64DebugUnitTest - Desktop:
npm run build - Desktop Tauri:
cargo test --locked - Host broker:
node --check broker.jsandnode --check app.js
Twoman 1.0.5
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.2virtual 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.
Android Asset Refresh
- The Android APK/AAB were refreshed after initial v1.0.5 publication to bind
helper broker sockets to Android's underlying physical network before the VPN
route is established. This fixes newer Pixel devices that could start the VPN
UI but then loop or time out the broker control plane. - The refreshed APK was installed on a Pixel 6a, started in VPN mode with dynamic
HTTP/SOCKS ports, and carried HTTP traffic through the tunnel.
Operational Notes
- Users on Android
1.0.2or 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.apkapp-arm64-release.aabTwoman_1.0.5_amd64.AppImageTwoman_1.0.5_amd64.debTwoman-1.0.5-1.x86_64.rpmTwoman_1.0.5_x64-portable.zipTwoman_1.0.5_x64-setup.exeTwoman_1.0.5_x64_en-US.msitwoman-cli-linux-amd64-v1.0.5.tar.gzSHA256SUMS
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.jsandnode --check app.js
Twoman 1.0.4
Twoman 1.0.4
Twoman 1.0.4 is a patch release for clients that use dynamic local proxy
ports.
Changes
- Fixed dynamic local port handling in the Go helper. Explicit
http_listen_port: 0andsocks_listen_port: 0now remain dynamic instead
of being rewritten to the fixed fallback ports8080and1080. - Fixed the Windows desktop client port validation. Profiles that request
dynamic ports now accept the helper's assigned ports instead of treating
0as a literal expected listener. - Added E2E coverage so dynamic helper ports must bind to real assigned ports
and must not silently fall back to8080or1080.
Release Assets
This release includes:
app-arm64-release.apkapp-arm64-release.aabTwoman_1.0.4_amd64.AppImageTwoman_1.0.4_amd64.debTwoman-1.0.4-1.x86_64.rpmTwoman_1.0.4_x64-portable.zipTwoman_1.0.4_x64-setup.exeTwoman_1.0.4_x64_en-US.msitwoman-cli-linux-amd64-v1.0.4.tar.gzSHA256SUMS
No debug APK is included.
Validation
Validated before release:
- Go helper-agent tests
- Go client CLI tests
- Go Node backend end-to-end test
- Headless Linux client CLI end-to-end test
- Desktop client end-to-end test
- Desktop Rust tests on Linux and Windows
- Android release APK build
- Desktop web production build
- GitHub CI
- Tracked-source secret scan
Twoman 1.0.3
Twoman 1.0.3
Twoman 1.0.3 is the multi-exit and headless-client release on top of the Go
dataplane shipped in 1.0.2.
Changes
- Added pinned multi-exit routing. Multiple hidden servers can now point at the
same public host broker, and a client profile can settargetAgentPeerLabel
to force one specific exit. - Added the headless Linux client CLI bundle. The normal flow is now
twoman import,twoman connect,twoman status, andtwoman disconnect; users no
longer need to pass helper binary paths for regular use. - Polished the server command UX.
twomannow prints a fast non-interactive
overview, whiletwoman tuiopens the management UI. - Hardened hidden-server deploys that use custom SSH ports or rebuilt hosts by
supporting isolated SSH known-hosts files and controlled host-key updates. - Documented the shared-host, multiple-hidden-agent topology in the main README.
Release Assets
This release includes:
app-arm64-release.apkapp-arm64-release.aabTwoman_1.0.3_amd64.AppImageTwoman_1.0.3_amd64.debTwoman-1.0.3-1.x86_64.rpmTwoman_1.0.3_x64-portable.zipTwoman_1.0.3_x64-setup.exeTwoman_1.0.3_x64_en-US.msitwoman-cli-linux-amd64-v1.0.3.tar.gzSHA256SUMS
No debug APK is included.
Validation
Validated before release:
- Go helper-agent tests
- Go client CLI tests
- Go Node backend end-to-end test
- Headless Linux client CLI end-to-end test
- Desktop client end-to-end test
- Android release APK/AAB build
- Linux Tauri AppImage, deb, and rpm build
- Windows MSI, NSIS setup, and portable ZIP packaging
- Tracked-source secret scan
- Release-asset secret scan
Acknowledgements
Thanks again to @motixo for the Go dataplane and
cipher migration pull requests that established the 1.0 release direction. This
release keeps that work as the production path and adds the multi-exit and CLI
UX needed to operate multiple exits cleanly from one public host.
Twoman 1.0.2
Twoman 1.0.2
Twoman 1.0.2 is the corrected Go dataplane release package.
It supersedes the incomplete 1.0.1 asset set by shipping the full Android,
Linux, and Windows release artifacts and by fixing the live managed-host
profile issue found during physical Android testing.
Fixes
- Fixed the Go HTTP down-poll transport so hidden-server agents cannot hang
forever on stale WARP/WireProxy connections. DownGETrequests now have a
bounded request context and response-header timeout. - Disabled data-down streaming by default for the cPanel/Passenger managed-host
profile. The live host buffers/delays chunked streaming responses, which can
leaveOPENframes queued on the broker and cause client-sideopen timed out
failures. - Made Windows sidecar packaging accept a prebuilt Go helper executable. This
lets release builds cross-compile the Windows Go helper from WSL when a
Windows Go toolchain is not installed, while still building the Windows
gateway, tunnel sidecar, MSI, NSIS installer, and portable ZIP on Windows. - Rebuilt Android, Linux desktop, and Windows desktop artifacts from the patched
Go helper/agent code.
Release Assets
This release includes only release artifacts:
app-arm64-release.apkapp-arm64-release.aabTwoman_1.0.2_amd64.AppImageTwoman_1.0.2_amd64.debTwoman-1.0.2-1.x86_64.rpmTwoman_1.0.2_x64-portable.zipTwoman_1.0.2_x64-setup.exeTwoman_1.0.2_x64_en-US.msiSHA256SUMS
No debug APK is included.
Validation
Validated before release:
go test ./...inhelper-agent/tests/run_e2e_go_node_http.shtests/run_desktop_client_e2e.sh- Android signed
1.0.2APK installed on a physical Pixel 6a - Android profile import through
twoman://profile?data=... - Android Proxy mode through both SOCKS and HTTP ports
- Android VPN mode with Android
tun0network validation - Android Chrome traffic through VPN to
api.ipify.org - Linux Tauri AppImage/deb/rpm build
- Linux AppImage extraction with patched sidecars present
- Windows helper sidecar live SOCKS and HTTP checks
- Windows desktop executable smoke launch
- Windows MSI, NSIS setup, and portable ZIP packaging
- Exact secret-value scan across tracked source and release artifacts
Acknowledgements
Thanks again to @motixo for the Go dataplane and
cipher migration pull requests that established the 1.0 release direction. This
patch release keeps that direction and closes the packaging/runtime gaps found
while validating the release on real Android, Linux, and Windows clients.
Twoman 1.0.1
Twoman 1.0.1
Twoman 1.0.1 is the first packaging fix release after 1.0.0.
The 1.0.0 tag introduced the Go dataplane, but the release was notes-only and
the first post-merge CI run exposed release plumbing gaps. This patch release
keeps the same Go dataplane and fixes the missing release assets, CI setup, and
installer support files.
Fixes
- Restored
requirements.txtfor Python control tooling used by installers,
cPanel automation, and desktop TUI tests. - Restored hidden-server watchdog and sample config files used by manual and
scripted deploy paths. - Fixed GitHub Actions Android setup so
sdkmanageris resolved from the
runner Android SDK path. - Added Tauri Linux build prerequisites to CI before
cargo checkand made
that package install non-interactive with a bounded timeout. - Added nested Go module cache configuration for
helper-agent/go.mod. - Removed stale desktop README references to deleted frozen e2e scripts.
Release Assets
This release includes built artifacts:
- Android arm64 signed release APK.
- Android arm64 signed release AAB.
- Android arm64 debug APK for smoke testing.
- Linux desktop TUI bundle with the Go helper sidecar.
- Standalone Go helper-agent binaries for Linux amd64 and arm64.
- SHA-256 checksum file for uploaded artifacts.
Windows desktop artifacts are not attached from Linux CI because Windows
desktop packaging should be produced on a Windows runner or release host.
Validation
GitHub Actions on main passed after the CI fixes:
relay-testsandroid-build
Local validation before publishing:
- Python compile checks for control/runtime support modules.
- Go helper-agent tests.
- Node broker parse checks.
- Shell parse checks.
- Go Node HTTP e2e.
- Desktop client e2e.
- Tauri
cargo check. - Linux desktop frozen build.
- Android arm64 debug build.
Twoman 1.0.0
Twoman 1.0.0
Twoman 1.0.0 is the Go dataplane and managed-host Node release.
This release keeps the public host in the path for camouflage, but moves the
high-throughput helper/agent runtime to Go, makes the Node broker advertise the
profile it is actually running, and adds WARP-aware hidden-server routing for
hosts that are only reachable through WireProxy/WARP.
Highlights
- Added
helper-agent/, a Go helper/agent runtime for the local client and
hidden server dataplane. - Made the Linux server deploy path use Go by default:
scripts/deploy_hidden_server.shand
scripts/install_hidden_server_local.shbuild and install
twoman-helper-agent. - Made the local client script use Go by default:
scripts/start_client.shbuildshelper-agentand runs it in helper mode. - Made Android use the packaged Go helper binary instead of the embedded Python runtime.
- Made desktop helper sidecars use the Go helper runtime:
desktop_app/scripts/build_sidecars_linux.sh,
desktop_app/scripts/build_sidecars_windows.bat, and source-mode desktop
runtime now prefer the Go helper. - Added broker-advertised managed-host capabilities in
host/node_selector/broker.js, including data upload worker counts, upload
batch sizing, down-lane selection, cipher suites, and max frame size. - Added adaptive runtime overrides in the Go transport so helper/agent can
apply broker-advertised profiles or explicit config overrides. - Increased the fast managed-host profile defaults to the measured production
shape:
8data upload workers,512 KiBdata upload batches,6 msdata flush
delay,1 MiBbroker bulk batches, and larger Go stream windows/reorder
buffers. - Reduced dataplane overhead by avoiding unnecessary frame/body copies in the
Go transport and receive path. - Added
scripts/benchmark_live_ceiling.pyto record raw host ingress and
end-to-end tunnel throughput against a live deployment. - Enabled generated camouflage websites by default in host deploy scripts.
Acknowledgements
Thanks to @motixo for the pull requests that moved
Twoman's dataplane direction forward:
- #2 introduced the AES-256-CTR
migration work across the broker and edges. - #3 introduced the Go
helper/agent rewrite that became the foundation for the 1.0.0 dataplane.
The final 1.0.0 integration includes additional hardening, deployment, client,
benchmark, documentation, and packaging work on top of those contributions, but
those PRs are the upstream contribution that started the Go release track.
WARP and Outbound Routing
WARP support in this release is specifically for the hidden server side.
TWOMAN_UPSTREAM_PROXY_URLroutes hidden-server traffic to the public broker
through a proxy such as local WireProxy/WARP.TWOMAN_OUTBOUND_PROXY_URLroutes final hidden-server egress through a
separate proxy when desired.scripts/deploy_hidden_server.shand
scripts/install_hidden_server_local.shauto-detect local WireProxy on
127.0.0.1:1280and use it for broker reachability and outbound egress
unless overridden.- WARP does not remove the public host from the architecture. The visible
tunnel still traverses the managed host, so camouflage and host limits still
matter.
Performance
Live benchmark artifact:
output/twoman-live-ceiling-20260505T031503Z.json
Measured on 2026-05-05 against the live /parvaneh managed-host Node path:
- Raw server-to-host upload probe, 16 concurrent uploads:
37.34 Mbpsaggregate. - Go tunnel,
8workers /512 KiBbatches, 100 MB download:
46.28 Mbps. - Go tunnel,
16workers /512 KiBbatches, 100 MB download:
32.45 Mbps.
The release default is 8 data upload workers because it was the fastest
stable tested profile. Higher concurrency is not automatically better on the
managed host; 24 workers timed out during tuning and 16 workers was slower
than 8.
Post-redeploy verification artifact:
output/twoman-live-ceiling-20260505T053527Z.json
- Raw server-to-host upload probe, 16 concurrent uploads:
33.01 Mbpsaggregate. - Go tunnel,
8workers /512 KiBbatches, 100 MB download:
25.93 Mbps.
That second sample used the same live stack after the 1.0.0 redeploy. The
lower number is recorded rather than hidden because the public host and remote
origin path vary over time; the release default remains the 8 x 512 KiB
profile because it was still the best tested shape.
Operator Options
New or promoted deploy/runtime controls:
TWOMAN_DATA_UP_WORKERSTWOMAN_DATA_UP_MAX_BATCH_BYTESTWOMAN_DATA_UP_FLUSH_DELAY_SECONDSTWOMAN_HELPER_DATA_UP_WORKERSTWOMAN_AGENT_DATA_UP_WORKERSTWOMAN_HELPER_DATA_UPLOAD_MAX_BATCH_BYTESTWOMAN_AGENT_DATA_UPLOAD_MAX_BATCH_BYTESTWOMAN_HELPER_DATA_UPLOAD_FLUSH_DELAY_SECONDSTWOMAN_AGENT_DATA_UPLOAD_FLUSH_DELAY_SECONDSTWOMAN_UPSTREAM_PROXY_URLTWOMAN_OUTBOUND_PROXY_URL
Compatibility Notes
- Python helper/agent runtime code was removed from the shipped client/server
path for this release. - Android, desktop, local CLI, and hidden-server installs use the Go helper.
- Desktop Proxy/System proxy modes use the Go helper sidecar after rebuilding
sidecars. The separate desktop gateway and Windows TUN sidecar remain
separate components.
Validation
Validated before release handoff:
go test ./...inhelper-agent/- shell syntax checks for deploy/start scripts
node --checkforhost/node_selector/broker.jsand bundledapp.js- focused Python tests
tests/run_e2e_go_node_http.shtests/run_desktop_client_e2e.shcargo check --manifest-path desktop_app/src-tauri/Cargo.toml- Android
assembleArm64Debug - live host redeploy for
/parvaneh - live hidden-server Go agent redeploy
- live 100 MB tunnel benchmark
Rebuild Scope
Rebuild release artifacts that include helper/agent runtime changes:
- Linux server installer/deploy bundle
- Linux desktop sidecars
- Windows desktop sidecars and portable bundle
- Android APK/AAB because the app now packages the Go helper binary for each
supported ABI.
Twoman 0.7.0
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_httpand
managed_host_ws
- helpers and agents now follow broker-advertised profiles instead of forcing
- Added a dedicated DNS protocol path in
twoman_protocol.py,
local_client/helper.py, andhidden_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 -> internetegress - final outbound egress can now be pushed through local WireProxy/WARP when
needed
- the hidden server can use one proxy for
- 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.ktand
AndroidManifest.xml:- the app now accepts
twoman://profile?data=...import links directly
- the app now accepts
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.pyand the
shell scripts:TWOMAN_UPSTREAM_PROXY_URLTWOMAN_UPSTREAM_PROXY_LABELTWOMAN_OUTBOUND_PROXY_URLTWOMAN_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.mdnow documents:- fast install
- optional hidden outbound proxy routing
- WARP-backed hidden reachability and egress guidance
docs/EASY_DEPLOY.mdnow documents:- hidden host-route proxying
- hidden outbound proxying
- optional WARP-backed hidden deployment routing
docs/BACKENDS.mdnow documents:- backend-family behavior under the
0.7transport model - managed-host Node guidance with WARP and public-host route notes
- backend-family behavior under the
docs/RELEASE_CHECKLIST.mdnow matches the0.7validation 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
Twoman 0.6.7
Twoman 0.6.7
Twoman 0.6.7 is the installer and operations release.
The main result is that a Linux machine can now become the hidden Twoman
server with one command while deploying the public host broker from the same
flow. This release also formalizes optional hidden-side WARP routing for the
setups where the hidden server cannot reach the public host directly.
Highlights
- Added a one-command Linux installer:
- deploys the selected public-host backend
- installs the hidden agent locally with
systemdand a watchdog - validates broker reachability from the real hidden-server path
- prints the final Twoman import text for Android and desktop clients
- installs the
twomanmanagement command
- Added
twoman_control/:- guided interactive install flow
- saved install state for reconfigure and redeploy
- non-interactive management commands
- Textual TUI for verify, logs, restart, redeploy, and config review
- Added optional hidden-server upstream proxy support in the shared transport:
- designed for WireProxy / WARP or any other local SOCKS or HTTP upstream
- keeps the upstream-routing decision on the hidden side only
- Added hidden-server local install support and proxy-aware deploy scripts.
- Fixed the intermittent legacy desktop TUI teardown race that was breaking the
GitHub CI desktop test during shutdown. - Expanded CI coverage for the installer, transport proxy path, and deploy
shell scripts.
Production Notes
- Production
darvazehkeeps the same public path while allowing the hidden
side to route through local WireProxy when direct hidden-to-host reachability
is bad. - The live camouflage site naming was corrected so the public site no longer
shows temporary E2E naming. - This release does not change the core product constraint: the public host
remains in the live path. - WARP support is optional and server-side only for this mode. Desktop and
Android clients do not require WARP.
Documentation
README.mdnow leads with the fast installer instead of manual deployment.docs/EASY_DEPLOY.mdcovers the interactive flow, the optional WARP route,
and a non-interactive install example.docs/MANUAL_DEPLOY.md,docs/BACKENDS.md, anddocs/RELEASE_CHECKLIST.md
now match the current runtime and release flow.CONTRIBUTING.mdandSECURITY.mdwere added to make the public repository
easier to work with as an open-source project.