Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
d3c797f
:tada: 0.6.0: rewrite desktop GUI with woocraft (GPUI)
Reverier-Xu Aug 21, 2026
1f48819
:lipstick: unify sidebar entries and drop title-bar sidebar toggle
Reverier-Xu Aug 21, 2026
9e3dde0
:bug: persist settings and scopes immediately on every change
Reverier-Xu Aug 21, 2026
f2e293c
:lipstick: use a single uniform font size across the UI
Reverier-Xu Aug 21, 2026
9452257
:lipstick: add a divider line under the title bar
Reverier-Xu Aug 21, 2026
e77e70c
:recycle: render the network logs page as a readonly editor
Reverier-Xu Aug 21, 2026
27c5c94
:recycle: make all pages scrollable with gap-1 layout; fix logs edito…
Reverier-Xu Aug 21, 2026
22441a9
:lipstick: make the settings page a true gap-1 stack
Reverier-Xu Aug 22, 2026
db64c86
:lipstick: restore divider lines on the settings page
Reverier-Xu Aug 22, 2026
86e2eee
:lipstick: center the home page and switch sidebar divider to a 1px div
Reverier-Xu Aug 22, 2026
ea25145
:lipstick: stretch the interface selector button to fill its row
Reverier-Xu Aug 22, 2026
d15e68a
:recycle: replace interface selector button with an input + popover
Reverier-Xu Aug 22, 2026
55396cb
:recycle: switch interface selector back to a bordered button with dr…
Reverier-Xu Aug 22, 2026
171e8bf
:lipstick: sync the interface dropdown width with the selector button
Reverier-Xu Aug 22, 2026
5d42c52
:lipstick: fix the interface dropdown to a fixed 282px width
Reverier-Xu Aug 22, 2026
dd346ca
:recycle: settings: readonly editor for system info, fixed English fo…
Reverier-Xu Aug 22, 2026
3e3547c
:sparkles: use the real logo instead of the generic globe icon
Reverier-Xu Aug 22, 2026
f7591a0
:sparkles: use the SVG logos (stroked and background variants)
Reverier-Xu Aug 22, 2026
f629c43
:lipstick: fix logo rendering and swap the variants
Reverier-Xu Aug 22, 2026
40e49c7
:recycle: refactor and lint cleanups (incl. clippy)
Reverier-Xu Aug 22, 2026
6d72edf
:lipstick: use the background-less logo on the get-started page
Reverier-Xu Aug 22, 2026
6a326db
:sparkles: per-session log rotation with timestamped archives + lock …
Reverier-Xu Aug 22, 2026
db19904
:sparkles: syntax-highlight log levels with tracing console colors
Reverier-Xu Aug 22, 2026
dc70a44
:bug: emit contiguous highlight runs so every log line is colored
Reverier-Xu Aug 22, 2026
cef49bb
:sparkles: system tray support (close-to-tray, Show/Quit, /popup rest…
Reverier-Xu Aug 22, 2026
e37c5bb
:bug: keep the app resident in the tray when closing
Reverier-Xu Aug 22, 2026
6805f97
:bug: close-to-tray removes the window instead of minimizing
Reverier-Xu Aug 22, 2026
dca5d63
:bug: coalesce log events so tray popup is never starved
Reverier-Xu Aug 22, 2026
ceb21e0
:bug: reopen the window from the tray when the stored handle is stale
Reverier-Xu Aug 22, 2026
8bb971a
:bug: restore controller port and session logs when the window reopens
Reverier-Xu Aug 22, 2026
5b3bfef
:art: fix style
Reverier-Xu Aug 22, 2026
80dc432
:sparkles: logs: tracing-styled highlighting and scrollbar preview mi…
Reverier-Xu Aug 22, 2026
487056e
:arrow_up: woocraft: VS Code-style scrollbar minimap (fit/windowed pr…
Reverier-Xu Aug 22, 2026
090a8fe
:sparkles: logs: narrow preview strip + borderless indicator
Reverier-Xu Aug 22, 2026
ff58021
:arrow_up: woocraft: fix windows tray build (windows-rs 0.62 BOOL/HICON)
Reverier-Xu Aug 22, 2026
e74189f
:art: fix connection style
Reverier-Xu Aug 22, 2026
6549e20
:arrow_up: woocraft: native macOS tray backend + windows build fix
Reverier-Xu Aug 22, 2026
4464278
:arrow_up: bump versions
Reverier-Xu Aug 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8,262 changes: 5,007 additions & 3,255 deletions Cargo.lock

Large diffs are not rendered by default.

27 changes: 9 additions & 18 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ edition = "2024"
homepage = "https://github.com/XDSEC/WebSocketReflectorX"
license = "MIT"
repository = "https://github.com/XDSEC/WebSocketReflectorX"
rust-version = "1.89.0"
version = "0.5.17"
rust-version = "1.95"
version = "0.6.0"

[profile.release]
codegen-units = 1
Expand Down Expand Up @@ -47,9 +47,13 @@ tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
url = { version = "2.5" }

# GUI
async-compat = { version = "0.2" }
i-slint-backend-winit = "1.15"
open = "5.3"
async-compat = { version = "0.2" }
open = "5.3"

# GPUI / Woocraft
gpui = { git = "https://github.com/zed-industries/zed", package = "gpui" }
gpui_platform = { git = "https://github.com/zed-industries/zed", package = "gpui_platform", features = ["font-kit", "wayland", "x11"] }
woocraft = { git = "https://github.com/Reverier-Xu/woocraft", package = "woocraft" }

reqwest = { version = "0.13", features = [
"blocking",
Expand All @@ -58,25 +62,12 @@ reqwest = { version = "0.13", features = [
"json",
] }

slint = { version = "1.15", default-features = false, features = [
"accessibility",
"backend-winit",
"compat-1-2",
"gettext",
"renderer-skia",
"renderer-software",
"serde",
"std",
] }

sys-locale = "0.3"
sysinfo = "0.38"
toml = "1.0"
winit = "0.30"

# build dependencies
build-target = "0.8"
git-version = "0.3"
rustc_version = "0.4"
slint-build = "1.15"
winres = "0.1"
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Download from [Releases](https://github.com/XDSEC/WebSocketReflectorX/releases)

### Desktop App

[#madewithslint](https://slint.dev/showcase.html) !
Built with [Woocraft](https://github.com/Reverier-Xu/woocraft) (GPUI component library).

#### For Mac Users

Expand Down
51 changes: 25 additions & 26 deletions crates/desktop/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,42 +14,41 @@ version.workspace = true
[dependencies]
wsrx = { path = "../wsrx" }

i-slint-backend-winit = { workspace = true }
slint = { workspace = true }
winit = { workspace = true }
gpui = { workspace = true }
gpui_platform = { workspace = true }
woocraft = { workspace = true, features = ["tray"] }

directories = { workspace = true }
async-channel = "2.2"
rust-embed = { version = "8.11", features = ["interpolate-folder-path", "include-exclude"] }
directories = { workspace = true }
local-ip-address = { workspace = true }
open = { workspace = true }
sys-locale = { workspace = true }
sysinfo = { workspace = true }
open = { workspace = true }
sys-locale = { workspace = true }
sysinfo = { workspace = true }

async-compat = { workspace = true }
bitflags = { workspace = true }
once_cell = { workspace = true }
rand = { workspace = true }
rustls = { workspace = true }
tokio = { workspace = true }
toml = { workspace = true }
tracing = { workspace = true }
tracing-appender = { workspace = true }
bitflags = { workspace = true }
once_cell = { workspace = true }
rand = { workspace = true }
rustls = { workspace = true }
tokio = { workspace = true }
toml = { workspace = true }
tracing = { workspace = true }
tracing-appender = { workspace = true }
tracing-subscriber = { workspace = true }

axum = { workspace = true }
chrono = { workspace = true }
reqwest = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
tokio-tungstenite = { workspace = true }
tokio-util = { workspace = true }
tower-http = { workspace = true }
axum = { workspace = true }
chrono = { workspace = true }
reqwest = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
tokio-util = { workspace = true }
tower-http = { workspace = true }

[build-dependencies]
build-target = { workspace = true }
git-version = { workspace = true }
rustc_version = { workspace = true }
slint-build = { workspace = true }
winres = { workspace = true }

[[bin]]
Expand Down
Binary file added crates/desktop/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
6 changes: 0 additions & 6 deletions crates/desktop/build.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
use std::{env, fs, path::Path};

fn main() {
let config = slint_build::CompilerConfiguration::new()
.with_bundled_translations("ui/i18n")
.embed_resources(slint_build::EmbedResourcesKind::EmbedFiles);
slint_build::compile_with_config("ui/main.slint", config).expect("Slint build failed");

println!("cargo::rerun-if-changed=ui/i18n");
println!("cargo::rerun-if-env-changed=WSRX_GIT_VERSION");
let out_dir = env::var_os("OUT_DIR").unwrap();
let dest_path = Path::new(&out_dir).join("constants.rs");
Expand Down
16 changes: 16 additions & 0 deletions crates/desktop/src/assets.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//! Desktop app assets (the logo), served alongside woocraft's built-in
//! assets through a combined asset source.

use rust_embed::RustEmbed;

#[derive(RustEmbed)]
#[folder = "assets"]
pub struct DesktopAssets;

/// Builds the app-wide asset source: woocraft's built-in assets first, then
/// the desktop app's own embedded assets (e.g. `logo.png`).
pub fn asset_source() -> woocraft::CombinedSource {
woocraft::CombinedSource::new()
.with(woocraft::Assets)
.with(woocraft::EmbeddedSource::<DesktopAssets>::new())
}
12 changes: 0 additions & 12 deletions crates/desktop/src/bridges/mod.rs

This file was deleted.

130 changes: 0 additions & 130 deletions crates/desktop/src/bridges/settings.rs

This file was deleted.

Loading
Loading