Skip to content

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 26 Jun 11:10
· 15 commits to main since this release

Features

  • Geo-aware automatic switching — the watchdog no longer just fails over to the next server in the list: it TCP-probes the subscription and moves you to the lowest-latency live server, and can switch proactively when the active server's ping stays high (default >1000ms), not only on a full outage. It avoids servers in blocked countries (RU/BY by default) by reading Xray's own geoip.dat, so an automatic switch can never drop you onto a Russian exit, and it keeps a short TTL blacklist of the server it just left so it can't flap back. Enabled out of the box via watchdog_auto_start.
  • Passkey (WebAuthn) login — sign in with Face ID / Touch ID / a security key, passwordless and with no TOTP code, alongside the existing username + password + TOTP. Register a passkey from the dashboard while logged in; user verification is required, and it works both on your local domain and through the KeenDNS cloud port (:8443). The implementation went through a dedicated security review.
  • Subscription auto-update — the panel periodically re-downloads your subscription (subscription_refresh_interval, default 6h) to keep the server list fresh. It restarts Xray only if your active server actually changed, and routes any forced replacement through the same geo filter so a refresh can't silently move you onto a blocked-country server.
  • Per-server country flags — servers now show a country flag detected from their name (flag emoji / keywords), with a manual override for cryptic names; the same auto_switch_avoid_countries list drives both the flag and the auto-switch safety check.

Improvements

  • Lighter on the router — latency probing is now concurrency-bounded instead of spawning one goroutine per server (which could exhaust RAM on a large subscription), the Xray-status check is cached, and release builds use -trimpath.
  • Infinite scroll in the server list — replaces the "show more" button, so long subscriptions load as you scroll.
  • Sturdier live updates — the SSE event stream reconnects with exponential backoff instead of hammering the router every 3 seconds, and the watchdog log file is rotated so it can't grow without bound.

Bug Fixes

  • Xray no longer shows "offline" while it's running — the status check matched the literal xray run string in busybox ps output, which doesn't match on routers where ps prints the command differently, so the panel wrongly reported Xray as down. It now detects the process via /proc, independent of ps formatting.
  • Refresh keeps you on your server — refreshing the subscription matched the active server by list position, so a provider reordering or removing servers could silently switch you onto a different one. The active server is now tracked by its link identity and re-found after every refresh.

Internal / Dependencies

  • Adds github.com/go-webauthn/webauthn for passkey support.
  • New test suite across all packages (53 tests, race-clean) plus three rounds of adversarial code review (autopilot, passkey, and the follow-up fixes) hardening the release.

Full Changelog: v1.0.1...v1.1.0