Skip to content

v0.14.1

Choose a tag to compare

@github-actions github-actions released this 15 Aug 18:35
· 9 commits to master since this release

Fork of warpscout with a Telegram reachability check.

New in this release:

  • -tg adds the TG column: once a tunnel is up and verified, Telegram's
    MTProto data centres are dialled through that same tunnel and the round-trip
    to the nearest one that answered is reported, or "blocked" when none did.
    All five are dialled at once under one deadline, so a blocked endpoint costs
    one -timeout rather than five.
  • Endpoints that reach Telegram rank above those that do not, so -best and
    -conf pick one that works.
  • -tg-only keeps only the endpoints Telegram was reachable from.

The update check and install.sh now point at this fork rather than upstream.

Commits

  • chore: point the fork at its own repository (3af267f)
  • feat: check Telegram reachability for every endpoint (7de4178)
  • feat: print scan progress in plain output mode (deb82ac)
  • fix: put the elapsed time after the bar counters (a27ba70)
  • perf: insert into the live feed instead of resorting it (1ea0796)
  • feat: show elapsed time on the bar and the phase lines (0d9503e)
  • feat: show working, torn and node counts next to the bar (3560411)
  • fix: drop the node panel with the feed, the report prints Nodes too (efb319b)
  • fix: drop the live feed once the console tables repeat it (09b8bb2)
  • fix: keep the feed at 12 rows unless f expands it (ecb1904)
  • feat: add f and n to expand the live feed and the node panel (7be820e)
  • feat: size the live scan feed to the terminal window (68d2035)
  • feat: show every region and node found so far during the scan (9cb078b)
  • fix: drop host ping replies that came from another endpoint (8ec2902)
  • fix: cache the latest-version answer in the temp dir, not on flash (073baf7)
  • fix: return the no-endpoint failure from printBest instead of exiting inside it (3eea39c)
  • fix: stop register from overwriting an account file it could not read (closes vernette#5) (b2903f2)
  • fix: reject -best together with -conf - instead of mixing them on stdout (closes vernette#7) (1daaacc)
  • fix: sort the picks table by status before loss (closes vernette#9) (9f6ebae)
  • fix: tell a failed masque-h2 scan the same thing as masque (closes vernette#10) (85f193a)
  • fix: reject a nonpositive -sample instead of widening the scan (a78d29a)
  • fix: fail the scan when a requested -conf cannot be written (430a8a1)
  • ci: refetch the annotated tag before reading its body (6be5efb)
  • perf: back off the handshake poll instead of a flat 50ms tick (a346aa5)
  • perf: resolve the meta address without a global lock (6557ecf)
  • perf: send the host ping burst at once and match replies by sequence (b414d42)
  • perf: probe phase 1 addresses in parallel instead of one at a time (9e1c446)
  • perf: give every wg tunnel the batch-1 bind, not conn.NewDefaultBind (58c7551)
  • fix: cap the Go runtime at 32MiB so a full scan is not OOM-killed (6668e26)
  • ci: lead the release notes with the annotated tag body (b71edc5)
  • ci: leave docs commits out of the release notes (899590c)
  • fix: resolve DNS on Android, where there is no /etc/resolv.conf (77e70f4)
  • refactor: keep the version cache as a single file in the cache dir (620fce4)
  • feat: check for a new release on startup (c882667)
  • feat: add a relay fallback to register (e39e5a4)
  • feat: print the macOS quarantine hint in install.sh (220dd06)
  • feat: detect Termux in install.sh and install into $PREFIX/bin (f68b50e)
  • ci: build android/arm64 in the release matrix (61e6a32)
  • fix: strip the path termux-exec injects into argv on Android (558e6f8)
  • fix: stop repeating the country in the socks exit row (52dc225)
  • feat: add -port to pin one port for the whole scan (8930cbc)
  • ci: skip the test run for workflow-only changes (0b8e3c3)
  • ci: skip the test run for the release and docker workflows (4997d3f)
  • ci: keep only the commit list and New Contributors in release notes (dc88f38)
  • feat: add -exclude-node and -exclude-country (f0b0878)
  • feat: give the console table a row per node, not just per subnet (8fcd9bd)
  • feat: name the chained mihomo proxies after their place in the chain (3c86a5f)
  • feat: write both tunnels of the chain into the native -through config (adf4998)
  • feat: render the whole chain in the mihomo config under -through (eb02781)
  • feat: add socks to serve one endpoint as a local SOCKS5 proxy (a142752)
  • feat: add scan -through to nest one WARP tunnel inside another (290aa1f)
  • feat: carry both address families inside the WireGuard tunnel (e2e0361)
  • feat: keep the WARP device's own IPv4 and IPv6 from registration (bdce03d)
  • feat: add the second MASQUE v6 block, 103:: and 104:: (thanks @t-e-s-tweb) (6d3b891)
  • ci: bump the Docker build image to go 1.26 (dcb7706)
  • ci: skip the test workflow on doc-only changes (e102a95)
  • feat: let find-sni search an SNI for either MASQUE transport (d30063d)
  • refactor: name the mihomo proxy after the protocol instead of the endpoint (634115e)
  • feat: add -p masque-h2, CONNECT-IP over TCP with real endpoint pools (closes vernette#3) (4281051)
  • feat: add -speed to measure endpoint throughput after the scan (2a03132)
  • refactor: extract nodePicks and the feed capping helpers for reuse (8dafee7)
  • refactor: hoist the bubbletea program out of runScanUI into runWithUI (7303a35)
  • feat: add find-sni to search a MASQUE SNI that gets through (5c7aa92)
  • perf: bound the stalled MASQUE dial with quic-go's idle timeout (3ac583c)
  • feat: add install.sh for Linux, macOS and OpenWrt (5e30e8d)
  • feat: add a version command, with the tag injected at build time (35c4ea2)
  • feat: write DNS into the generated config, with -dns and -no-dns (closes vernette#2) (d6b27d0)
  • feat: print the generated config with -conf - instead of writing a file (27651d6)
  • feat: add -conf-type mihomo to render the picked endpoint as a mihomo proxy (83ab34d)
  • feat: add MASQUE support with -proto masque (c6aa8c8)
  • refactor: make the tunnel a per-protocol interface over a shared netstack (449c24a)
  • fix: use ASCII status glyphs and spinner on Windows (899e8f7)
  • fix: enable virtual terminal processing on the legacy Windows console (closes vernette#1) (a217cd0)
  • fix: pad the console summary labels so "Torn down:" keeps a space (a18762a)
  • ci: run go test on push to master and on pull requests (f795932)
  • refactor: report DPI-cut endpoints as "torn down" instead of "flaky" (ca91881)
  • feat: split the ping into ENDPOINT PING and TUN PING columns and rename -ping to -tun-ping (c107829)
  • feat: point at -gen-i1 quic when a scan finds no working endpoint (992bcf2)
  • feat: reuse the stored id/token to rotate keys instead of re-registering (f4ddcd5)
  • feat: write MTU into the generated config only with -mtu (75d132d)
  • feat: drop -proto both and collapse the scan to a single run (2b216c5)
  • fix: honour -emoji regardless of whether stderr is a TTY (b5051c9)
  • feat: keep colour in the console tables when CLICOLOR_FORCE is set (33eddf9)
  • fix: show the banner only in the final report, not in the TUI (6e30db3)
  • feat: add the author credit and repo link to the banner (2d5313f)
  • feat: add -no-report to skip writing the report file (0389a40)
  • feat: write the report file as a flat list with a per-node summary (120303b)
  • feat: print the command list for -h/--help/help instead of an error (243ad85)
  • feat: filter endpoints by edge node country with -country (f9cb7c3)
  • feat: read the exit region and node location from a single /meta fetch (69fcc98)
  • feat: make country flag emoji opt-in with -emoji (36d77d0)
  • fix: reject flag-shaped -conf/-o values and stray arguments (839cdf5)
  • feat: write a ready-to-import wg/awg config with -conf (e51c250)
  • feat: accept a junk set at the -threshold share of working endpoints (f142c11)
  • refactor: rename TSPU to DPI (f16254f)
  • feat: tune the durability burst length with -ping-count (6fbad6a)
  • feat: run phase 2 at full -jt in ping mode (9debfa9)
  • feat: drop -proto from register, sweeping awg first (8223b33)
  • feat: require an explicit register before scanning (a6e2f8d)
  • feat: split the CLI into scan, register and find-junk subcommands (a34ff6c)
  • feat: sample 5 addresses per subnet by default (34052e5)
  • feat: print the best endpoint as ip:port with -best (e9ff3b6)
  • feat: keep only endpoints on a given colo with -node (4a66251)
  • feat: scan given addresses with -target (a8a7a0f)
  • feat: scan seven more WARP /24 endpoint pools (db97c10)
  • feat: try generated I1 packets when tunnel registration is blocked (d1eb9ff)
  • feat: skip the trace fetch during -find-junk (a7ca4db)
  • feat: show the live scan dashboard during -find-junk (c490fd7)
  • feat: search a fresh I1 per attempt in -find-junk (16397e4)
  • feat: generate the awg init packet with -gen-i1 (577a133)
  • feat: always show junk params and the I1 mode in the report (712e861)
  • feat: search for working awg junk params with -find-junk (95aa3f4)
  • feat: skip the awg init packet with -i1 none (aa7357c)
  • feat: randomize awg junk params per run with -gen-junk (9e54740)
  • fix: register through the -I interface, clamping MSS and forcing IPv4 (4456af7)
  • feat: route -I/-interface through the interface via SO_BINDTODEVICE (7d5b84b)
  • feat: show progress bar while probing endpoints during -register (cd92290)
  • fix: register through a WARP tunnel via handshake, not a blocked direct probe (6074c3a)
  • feat: scan through a chosen interface with -I/-interface (d247801)
  • feat: scan IPv6 endpoint pools with -6/-ipv6 (2c27d60)
  • feat: show progress bar during phase 1 port discovery (e08c249)
  • ci: link commit hashes in release notes (8c5aab0)
  • ci: prepend commit list to release notes (37eb5e3)
  • feat: hide LOSS column unless -ping is set (dc8c64c)
  • feat: measure in-tunnel RTT and packet loss, rank by loss then ping (4cd59a0)
  • feat: sweep alternate WARP ports when primary ports are blocked (547ca6e)
  • chore: add license (f24275c)
  • ci: build and push multi-arch docker image on tag (aa85b0d)
  • ci: drop redundant upx-ucl install, it is preinstalled on runners (1847828)
  • fix: emit release notes once instead of per matrix job (296fdd6)
  • feat: add release workflow building binaries for all platforms (02bdad2)
  • perf: cut handshake-poll CPU churn in phase 2 (5db77a6)
  • feat: raise default tunnel-jobs from 4 to 10 (fa4bcc9)
  • feat: add -no-emoji flag to drop country flags without forcing plain output (c28250a)
  • feat: drop flag emoji in plain output mode (741eb3a)
  • feat: sort per-subnet summary tables by ping (9d0f04d)
  • style: render --help with shared lipgloss styles instead of raw ANSI (4e4b09a)
  • style: strip doc comments, keep only critical non-obvious notes (c9efcd8)
  • feat: allow overriding awg junk params via CLI flags (52b125c)
  • feat: split EXIT into separate EXIT and COLO columns (8671efc)
  • feat: add live bubbletea scan dashboard and lipgloss report tables (4fceeed)
  • style: left-align console output and slim the WARPSCOUT banner (b7f0a36)
  • feat: build multi-arch Docker image for amd64 and arm64 (fc30352)
  • style: add a blank line after the fresh-account notice (74437c9)
  • feat: add Dockerfile with UPX-compressed scratch image (e69fa4f)
  • feat: rank endpoints by direct host ICMP ping (3815f08)
  • style: gofmt warp_test.go (6b746e5)
  • refactor: split main.go into topical files (384c4ce)
  • feat: make the wg durability ping check opt-in via -P/-ping (7340a74)
  • feat: prefix exit regions and colos with country flag emoji (548c050)
  • style: add a blank line after the cached-account notice (d725666)
  • feat: collapse phase 1 into a single checkmark status line (2c5c2e2)
  • refactor: remove the unused -j/-jobs flag (86e81f3)
  • feat: probe reachable WARP ports in phase 1, verify all IPs in phase 2 (e7bd55a)
  • feat: probe wg durability, flag flaky endpoints, add -proto both (23ef59d)
  • feat: persist account id and token instead of hardcoded address (ea82d7f)
  • feat: grouped, colorized --help with short and long flag names (8b67461)
  • feat: separate and highlight the API-unreachable notice (8d909f1)
  • feat: colorized output with live phase progress bars (48fcc23)
  • feat: clarify empty-subnet label in report (cc5c23f)
  • feat: group full report by subnet and exit colo (a22306b)
  • feat: sample 10 addresses per subnet by default, -full for a complete scan (b0fe41e)
  • feat: summarize report in console, save full report to timestamped file (cf96a5a)
  • chore: ignore account and report files (7dafb04)
  • feat: register WARP config with proxy and tunnel fallback (ef97018)
  • perf: lower default timeout to 2s and poll handshake every 20ms (053b5d0)
  • fix: reuse tunnels in phase 2 to bound memory (ab330b6)
  • feat: initial WARP endpoint checker (c834c4a)