Skip to content

v0.14.2

Choose a tag to compare

@github-actions github-actions released this 22 Aug 12:26
· 2 commits to master since this release

Fork of warpscout with a Telegram reachability check.

New in this release:

  • The TG check now speaks MTProto instead of relying on a bare TCP connect:
    an unencrypted req_pq_multi is sent to every data centre and only an
    actual answer counts as reachable. DPI that completes the handshake and
    drops the payload no longer makes blocked endpoints look Telegram-clean;
    the TG column shows time-to-first-response.
  • Under -tg-only endpoints are ranked by the Telegram RTT instead of the
    endpoint ping, so -best and -conf pick the one Telegram is fastest through.

Commits

  • feat: rank endpoints by telegram rtt under -tg-only (13bb329)
  • fix: require an mtproto answer from telegram dcs, not just a tcp connect (d595a57)
  • build: add a macOS 10.13 high sierra build script (1be1556)
  • Update README.md (c03ccfa)
  • 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)