Releases: mhyrzt/xrat
Releases · mhyrzt/xrat
v0.5.3
xrat v0.5.3
GeoIP fixes
- geoip: endpoint location is now derived from the server address instead of
the proxy connection. Tested configs previously storedloopback_ipv4because
the real-delay stage read the local proxy address (127.0.0.1); the TUI table
Country column showed-while the detail card showedloopback_ipv4. - TUI: placeholder locations are treated as missing geo, so existing
poisoned rows self-heal from the config address off the critical path without
affecting first-paint time.
Upgrade notes
- No new database migrations in this release.
- Re-run
xrat test(or let the TUI re-enrich in the background) to replace any
loopback_ipv4locations stored by earlier versions with real geo.
Full Changelog: v0.5.2...v0.5.3
v0.5.2
xrat v0.5.2
TUI traffic dashboard
- TUI: the traffic tab is now a widget dashboard with a live stats tab —
total download/upload, current throughput, delay, and failed-request counts
fed through a ring buffer and rendered with a sparkline. - TUI: engine-neutral traffic stats sources back the dashboard, plumbed for
both engines (xray StatsService over gRPC, sing-box Clash API).
API request logging
- Server: the HTTP API now records each request as a structured event.
- TUI: a dedicated API logs tab (moved last) splits requests into method,
path, and status columns; stats-poll self-traffic is hidden from the engine
and API views everywhere.
Engine logs
- TUI: sing-box engine log lines are parsed into structured time/level/feed/
source/message columns with severity colors unified across engines. - TUI: the engine feed is deduped, access-log columns are filled, and the
log card column header stays pinned while scrolling. - logs:
xrat logsoutput now labels the feed origin.
View-only clears
- TUI: view-only log and stats clears (
C l,C s) wipe the visible buffer
without deleting persisted records, kept distinct from the DB clear (C p).
Upgrade notes
- No new database migrations in this release.
Full Changelog: v0.5.1...v0.5.2
v0.5.1
xrat v0.5.1
Performance
- TUI: instant first paint. GeoIP location enrichment no longer blocks the
initial frame — known locations render immediately from the database and
missing ones fill in progressively in the background. - TUI: resolved host geo is now persisted in a database cache, so locations
survive restarts and unresolvable or untested hosts stop re-resolving on every
launch. - TUI: mutating actions (enable/disable/delete/purge/restore) no longer
freeze the UI. The reload runs off the event loop, and single-config toggles
patch the affected row in place instead of reloading everything. - TUI: dirty-flag rendering eliminates the constant idle redraw, and the
engine version probe now runs asynchronously instead of delaying first paint.
Upgrade notes
- This release adds one database migration (
0020_add_geoip_cache) that creates
thegeoip_cachetable. It is applied automatically on first run; no manual
action is required.
Full Changelog: v0.5.0...v0.5.1
v0.5.0
xrat v0.5.0
Features
- TUI: faster boot — GeoIP location enrichment now runs in parallel instead
of serially, cutting startup latency on large config sets. - TUI: new page and jump scroll keys, and long log messages now wrap instead
of being truncated. - Release: release notes are now sourced from
.github/RELEASE_NOTE.mdwhen
present, so the GitHub release body is controlled instead of auto-generated
from commits.
Fixes
- Rotation:
xrat rotate nowno longer selects an untested or known-bad
config. Manual rotation now requires a passing real-delay result and otherwise
fails with a clear message pointing atxrat test/xrat scan. - Rotation: stopped persisting noisy per-candidate progress events as durable
log rows; only bounded start/finish events and the test-run summary remain. - CLI: dropped the redundant
invalid argument:prefix from error output, so
messages read clearly (e.g.error: no active HTTP or SOCKS inbound; ...).
Upgrade notes
- No schema or config changes. Manual rotation behavior is stricter: if no
enabled config has a passing real-delay result,xrat rotate nownow reports
no eligible candidate instead of rotating to an arbitrary config. Run
xrat testorxrat scanto populate results first.
v0.4.6
This release improves MMDB/GeoIP workflows, test-result visibility in the CLI and TUI, Docker/runtime packaging, desktop integration, and cross-platform command behavior.
Highlights
- Renamed the
geoipcommand namespace tommdbfor clearer GeoLite2 database management. Usexrat mmdb ...for downloads, updates, status, lookup, and backend inspection. - Added richer config list test metadata: ICMP, TCP, real-delay, download/upload throughput, endpoint country/location/ASN, failure details, and latest test timestamps are now threaded into list output where available.
- Improved TUI config tables and detail/runtime cards so probe columns follow configured test stages, hide inactive metrics, show GeoIP metadata, clear stale values while tests are running, and use cleaner label formatting.
- Improved Docker images by bundling both Xray and sing-box from upstream runtime images instead of relying on only inline Xray download behavior.
- Improved Linux desktop integration so installed launchers/icons have stable taskbar identity and release/source installs no longer depend on fragile desktop icon symlink layouts.
CLI And Testing
xrat mmdb backendcan print backend configuration as JSON.- MMDB download/update progress now shows the expanded source URL and has more stable multi-download progress rendering.
- MMDB lookup now resolves hostnames before local lookup so domain endpoints can receive country/city/ASN enrichment.
xrat list confignow exposes latest test fields in human/JSON output and conditionally shows metric columns from enabled test settings.- Test command output hides disabled metric columns instead of reserving empty columns for skipped stages.
- Proxy shell handling and ICMP ping flags are more portable across Unix-like platforms.
TUI
- Config table probe columns now align with the configured TUI/rotation test stages, so
icmp + real-delayno longer shows TCP. - Config table/detail views can show ICMP, TCP, real-delay, download, upload, country, city/location, and ASN data when configured or available.
- Running a TUI test batch clears stale test cells for targeted configs while fresh results are pending.
- The TUI test bar displays the active configured stage label, such as
icmp + real-delay. - Detail and runtime card labels no longer include trailing colons.
Install, Docker, And Docs
- Release archives and
install.shrestore desktop icons from the consolidateddocs/src/mediaasset location. - Desktop installation now installs/copies desktop entries and icons in a way that avoids broken symlinks.
- Docker documentation now documents exposed runtime ports and proxy usage more clearly.
- Documentation media assets were consolidated under
docs/src/media. - Backlog documents were reorganized under
docs/backlog, with completed/stale notes removed.
Upgrade Notes
- Replace
xrat geoip ...commands withxrat mmdb .... - If you install desktop assets manually, use the updated release archive layout documented in the manual install guide.
- Docker users can rely on the image including both Xray and sing-box runtime binaries.
Full Changelog: v0.4.5...v0.4.6
v0.4.5
Highlights
- Fixed
xrat rotate nowso it can start an initial runtime when no runtime session is running. - Added a CLI fallback so updated clients can recover from older daemons that still return the old replacement-only error.
CLI
xrat rotate nowno longer fails withno running runtime session to replacewhen no runtime is active.- First-run manual rotation now reports
replaced noandold session -while showing the newly started config, session, and PID. - When no
--config-idis provided for initial rotation startup, xrat selects the lowest enabled config.
Runtime
- Runtime replacement results now distinguish between replacing an existing session and starting a new one.
- Initial rotation startup records rotation transition metadata on the newly created runtime session.
- Timer rotation attempts with no eligible configs now report
rotation_no_candidate.
Internal
- Added regression coverage for rotating with no running runtime session.
- Updated IPC payloads to allow an absent old session ID.
- Released package version
0.4.5.
Full Changelog: v0.4.4...v0.4.5
v0.4.4
Highlights
- Enabled automatic proxy rotation by default in newly generated configs.
- Polished the rotation CLI with clearer
enable/disablecommands and live manual-rotation progress. - Improved TUI clipboard feedback with transient chrome-bar status messages.
- Tidied xrat event log formatting in both CLI and TUI views.
CLI
xrat rotate enableandxrat rotate disablereplace the previous volatile rotation start/stop wording.xrat rotate nownow streams rotation-related events while candidate testing and replacement are running.xrat rotate now --refreshcontinues to refresh URL-backed subscriptions before candidate selection.- Rotation enable/disable output now shows the config file path and the setting needed to persist the change.
xrat logsnow uses wider, fixed-width event columns for cleaner table and follow-mode output.
TUI
- Copying config URIs, subscription URLs, and API subscription URLs now shows success/failure in the chrome bar.
- Clipboard handling now reuses a thread-local clipboard instance and reports unavailable/write-failure states clearly.
- The xrat events log tab now aligns
time,level,source, andkindcolumns more consistently.
Docs
- Updated rotation, daemon, quickstart, deployment, error-code, and architecture docs for default auto-rotation behavior.
- Updated example config files to include enabled runtime rotation defaults.
Internal
- Added rotation bulk-test progress events so manual rotation can surface candidate-test progress.
- Avoid duplicate daemon start event recording when an existing daemon socket is already reachable.
- Released package version
0.4.4.
Full Changelog: v0.4.3...v0.4.4
v0.4.3
Highlights
- Added a dedicated subscription refresh command:
xrat update [SUBS_REF...]. - Improved TUI background activity feedback for subscription refresh and runtime transitions.
- Added
Updated Atvisibility forxrat list subscriptionsoutputs. - Standardized TUI wording from Sources to Subscriptions.
CLI
- New command:
xrat update- Refresh all subscriptions when no refs are provided.
- Refresh selected subscriptions by id/ref when refs are provided.
xrat list subscriptionsnow includesupdated_atin tabular/script-friendly outputs.
TUI
- Added live activity indicators while subscription refresh tasks are in flight.
- Runtime panel now reflects transitional activity states with animated feedback.
- Added transient bottom chrome-bar completion messages (auto-hide) for background task outcomes.
- Renamed user-facing labels/prompts from Sources to Subscriptions for consistency.
Docs
- Added CLI reference page for
update. - Updated TUI/list/import docs to match new subscription naming and behavior.
Internal
- Extracted reusable subscription update flow into shared app command logic used by both CLI and TUI.
Full Changelog: v0.4.2...v0.4.3
v0.4.2
Highlights
- Added numbered TUI panel shortcuts for faster dashboard navigation.
- Updated panel titles to show their matching shortcut numbers.
- Refreshed TUI documentation for the new keyboard workflow.
TUI
- Added
1–4shortcuts to jump directly between dashboard panels. - Updated card titles to display
n:shortcut indicators, making available navigation keys visible in the UI. - Improved focus handling so numbered shortcuts select the matching panel consistently.
Docs
- Updated the TUI CLI reference with numbered panel navigation details.
Internal
- Added parser/keymap and navigation test coverage for numbered TUI shortcuts.
- Released package version
0.4.2.
Full Changelog: v0.4.1...v0.4.2
v0.4.1
v0.4.1
Highlights
- Added dedicated proxy toggles:
xrat proxy shell togglefor shell environment proxy variables.xrat proxy desktop togglefor GNOME desktop proxy settings, with manual proxy mode by default and optional PAC mode via--pac.
- Added
xratuiinstaller shortcut so installed builds can launch the TUI directly withxratui. - Made config/subscription CLI output ref-first by hiding internal database IDs in user-facing outputs.
Proxy
- Moved shell proxy toggling from
xrat proxy toggletoxrat proxy shell toggle. - Added desktop proxy toggling for GNOME via
gsettings. - Simplified
xrat proxy infoso it shows active local endpoints only, without environment variables or toggle hints. - Hardened PAC output:
- Uses concrete loopback proxy destinations instead of
0.0.0.0. - Removes
DIRECTfallback when a proxy is active. - Normalizes hostnames before matching.
- Resolves hostnames before private IPv4 checks and handles DNS resolution failures safely.
- Uses concrete loopback proxy destinations instead of
CLI Output
list,show,test,status,rotate, and import summaries now prefer stable refs over internal config/subscription database IDs.- Machine-readable outputs for config/subscription data now omit internal IDs where refs are the public identifier.
- Numeric IDs remain accepted as command input for compatibility.
Install & Docs
install.shnow installs anxratuishortcut next to thexratbinary.- Installer quick start now shows
xrat connect <ref>,xrat proxy shell toggle,xrat proxy desktop toggle, andxratui. - Updated CLI, proxy, TUI, quickstart, runtime, rotate, and testing docs for ref-first commands and new proxy behavior.