Skip to content

Commit 9e13dd9

Browse files
committed
v0.9.0: UI redesign + stricter end-to-end test verification
=== UI redesign (zero new deps, same binary size) === Entire App::update() rewritten around three ideas: 1. Section cards. Form rows are grouped inside rounded frames with faint fills and small-caps headings: - 'Apps Script relay' — Deployment IDs (textarea) + Auth key - 'Network' — Google IP (+inline scan button), Front domain, Listen host, HTTP+SOCKS5 ports on one row, SNI pool button - Collapsing 'Advanced' — upstream SOCKS5, parallel dispatch, log level, verify SSL, show auth key. Closed by default — most users never touch these. 2. Clearer action hierarchy. Primary buttons are accent-filled and larger: - Start (green filled, ▶ glyph, 120x32) - Stop (red filled, ■ glyph, 120x32) - Save config (blue accent filled, path shown inline after →) - SNI pool (blue accent filled, inside Network section) - Test relay (neutral, tall) Secondary actions (Install CA / Check CA / Check for updates) moved to their own compact row below, no longer competing. 3. Status + log clarity. - Header version links to GitHub: → repo, → the release tag page. - Running/stopped status is now a pill-shaped colored chip at the right end of the header (green fill + green dot when running, red when stopped). - Traffic stats in a 2-column layout inside the Traffic card — 7 metrics fit in 4 rows instead of a 7-row vertical strip. - One compact transient status line above the log that auto-hides after 10 seconds — replaces the previous stack of permanent ca_trusted / test_msg / update_check labels that were pushing the log panel off-screen. - Log panel now has its own bordered frame (darker fill), a '[x] show' checkbox that hides it entirely when off, a 'save…' button that writes the current log buffer to a timestamped log-YYYYMMDD-HHMMSS.txt in the user-data dir, and a 'clear' button. Empty state shows a muted placeholder instead of silent void. All helper functions (section, primary_button, form_row) live at the top of ui.rs as small local helpers — no new modules, no new dependencies. === Stricter end-to-end test (test_cmd.rs) === Previous test passed on any HTTP 200 status regardless of body. After a user pointed out that the test reported PASS even after they deleted their Apps Script deployment, updated the pass criteria: 1. Status must contain '200 OK'. 2. Body must parse as JSON. 3. JSON must have an 'ip' field with a valid IPv4 or IPv6. Anything else → SUSPECT (returns false), with a specific log message like 'HTML returned instead of JSON. The Apps Script deployment may be deleted, not published to Anyone, or requires sign-in.' Also now emits tracing::info!/warn!/error! alongside println!, so the verdict + detail show up in the UI's Recent log panel instead of disappearing to a stdout nobody sees. One new unit test: looks_like_ip() accepts v4+v6, rejects empty, rejects malformed, rejects overflowed octets. 44 tests total, all green. Verified locally end-to-end — UI launches clean, form loads config cleanly, Start/Stop/Save all fire correctly, Test relay produces the new PASS/SUSPECT verdict with the tracing detail visible in the log panel, Check-for-updates hits GitHub and resolves with the compact auto-hiding status line.
1 parent 89fe6b5 commit 9e13dd9

4 files changed

Lines changed: 650 additions & 271 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mhrv-rs"
3-
version = "0.8.6"
3+
version = "0.9.0"
44
edition = "2021"
55
description = "Rust port of MasterHttpRelayVPN -- DPI bypass via Google Apps Script relay with domain fronting"
66
license = "MIT"

0 commit comments

Comments
 (0)