winload-rust-bin 0.1.7-rc.4 → 0.1.9-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/bin.js +2 -2
  2. package/index.js +8 -8
  3. package/package.json +14 -10
  4. package/readme.md +154 -17
package/bin.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * winload-rust-bin — CLI entry point
4
+ * @vincentzyuapps/winload — CLI entry point
5
5
  *
6
6
  * 定位当前平台的预编译二进制并透传所有参数执行。
7
- * 用户通过 `npx winload-rust-bin` 或全局安装后直接 `winload` 即可运行。
7
+ * 用户通过 `npx @vincentzyuapps/winload` 或全局安装后直接 `winload` 即可运行。
8
8
  */
9
9
 
10
10
  "use strict";
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * winload-rust-bin — binary path resolver
2
+ * @vincentzyuapps/winload — binary path resolver
3
3
  *
4
4
  * npm 安装时会根据 optionalDependencies 中各平台包的 os/cpu 字段,
5
5
  * 仅下载与当前平台匹配的那一个。此模块负责定位该平台包中的二进制。
@@ -17,12 +17,12 @@ const path = require("path");
17
17
  * value: npm 平台包名
18
18
  */
19
19
  const PLATFORMS = {
20
- "win32-x64": "winload-rust-bin-win32-x64",
21
- "win32-arm64": "winload-rust-bin-win32-arm64",
22
- "linux-x64": "winload-rust-bin-linux-x64",
23
- "linux-arm64": "winload-rust-bin-linux-arm64",
24
- "darwin-x64": "winload-rust-bin-darwin-x64",
25
- "darwin-arm64": "winload-rust-bin-darwin-arm64",
20
+ "win32-x64": "@vincentzyuapps/winload-win32-x64",
21
+ "win32-arm64": "@vincentzyuapps/winload-win32-arm64",
22
+ "linux-x64": "@vincentzyuapps/winload-linux-x64",
23
+ "linux-arm64": "@vincentzyuapps/winload-linux-arm64",
24
+ "darwin-x64": "@vincentzyuapps/winload-darwin-x64",
25
+ "darwin-arm64": "@vincentzyuapps/winload-darwin-arm64",
26
26
  };
27
27
 
28
28
  /**
@@ -50,7 +50,7 @@ function getBinaryPath() {
50
50
  } catch {
51
51
  throw new Error(
52
52
  `winload: platform package "${pkg}" not found\n` +
53
- `Try reinstalling: npm install winload-rust-bin\n` +
53
+ `Try reinstalling: npm install @vincentzyuapps/winload\n` +
54
54
  `Or download manually: https://github.com/VincentZyuApps/winload/releases`
55
55
  );
56
56
  }
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "winload-rust-bin",
3
- "version": "0.1.7-rc.4",
3
+ "version": "0.1.9-rc.2",
4
4
  "description": "Network Load Monitor — nload-like TUI tool for Windows/Linux/macOS (prebuilt Rust binary)",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "https://gitee.com/vincent-zyu/winload"
8
+ "url": "https://github.com/VincentZyuApps/winload"
9
9
  },
10
- "homepage": "https://github.com/VincentZyuApps/winload",
10
+ "homepage": "https://gitee.com/vincent-zyu/winload",
11
11
  "author": "VincentZyu <1830540513zyu@gmail.com>",
12
12
  "keywords": [
13
13
  "network",
@@ -20,7 +20,8 @@
20
20
  "rust"
21
21
  ],
22
22
  "bin": {
23
- "winload": "bin.js"
23
+ "winload": "bin.js",
24
+ "win-nload": "bin.js"
24
25
  },
25
26
  "main": "index.js",
26
27
  "files": [
@@ -28,12 +29,15 @@
28
29
  "index.js",
29
30
  "readme.md"
30
31
  ],
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
31
35
  "optionalDependencies": {
32
- "winload-rust-bin-win32-x64": "0.1.7-rc.4",
33
- "winload-rust-bin-win32-arm64": "0.1.7-rc.4",
34
- "winload-rust-bin-linux-x64": "0.1.7-rc.4",
35
- "winload-rust-bin-linux-arm64": "0.1.7-rc.4",
36
- "winload-rust-bin-darwin-x64": "0.1.7-rc.4",
37
- "winload-rust-bin-darwin-arm64": "0.1.7-rc.4"
36
+ "@vincentzyuapps/winload-win32-x64": "0.1.9-rc.2",
37
+ "@vincentzyuapps/winload-win32-arm64": "0.1.9-rc.2",
38
+ "@vincentzyuapps/winload-linux-x64": "0.1.9-rc.2",
39
+ "@vincentzyuapps/winload-linux-arm64": "0.1.9-rc.2",
40
+ "@vincentzyuapps/winload-darwin-x64": "0.1.9-rc.2",
41
+ "@vincentzyuapps/winload-darwin-arm64": "0.1.9-rc.2"
38
42
  }
39
43
  }
package/readme.md CHANGED
@@ -1,39 +1,42 @@
1
1
  ![winload](https://socialify.git.ci/VincentZyu233/winload/image?custom_language=Rust&description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F250448479%3Fs%3D200%26v%3D4&name=1&owner=1&pulls=1&stargazers=1&theme=Auto)
2
+ ![onefetch](docs/images/onefetch.png)
2
3
 
3
- # Winload <img src="https://github.com/user-attachments/assets/62fec846-0442-47f6-bbba-78acdc8803ef" height="32px">
4
+ # Winload <img src="docs/images/miku.png" height="32px">
4
5
 
5
6
  > A lightweight, real-time CLI tool for monitoring network bandwidth and traffic, inspired by Linux's nload.
6
7
 
7
8
  > **[📖 English](readme.md)**
8
9
  > **[📖 简体中文(大陆)](readme.zh-cn.md)**
9
10
  > **[📖 繁體中文(台灣)](readme.zh-tw.md)**
11
+ > **[📖 文言文](readme.lzh.md)**
10
12
  > **[📖 日本語](readme.jp.md)**
11
13
  > **[📖 한국어](readme.ko.md)**
12
14
 
13
15
  [![GitHub](https://img.shields.io/badge/GitHub-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/VincentZyuApps/winload)
14
16
  [![Gitee](https://img.shields.io/badge/Gitee-C71D23?style=for-the-badge&logo=gitee&logoColor=white)](https://gitee.com/vincent-zyu/winload)
15
17
 
16
- [![Windows x64 | ARM64](https://img.shields.io/badge/Windows-x64_|_ARM64-0078D4?style=for-the-badge&logo=windows&logoColor=white)](https://github.com/VincentZyuApps/winload/releases)
17
- [![Linux x64 | ARM64](https://img.shields.io/badge/Linux-x64_|_ARM64-FCC624?style=for-the-badge&logo=linux&logoColor=black)](https://github.com/VincentZyuApps/winload/releases)
18
+ [![Windows x64 | ARM64](https://img.shields.io/static/v1?label=Windows&message=x64%20%7C%20ARM64&color=0078D4&style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTAgMGgxMS4zNzd2MTEuMzcySDB6TTEyLjYyMyAwSDI0djExLjM3MkgxMi42MjN6TTAgMTIuNjIzaDExLjM3N1YyNEgweiBNMTIuNjIzIDEyLjYyM0gyNFYyNEgxMi42MjN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+)](https://github.com/VincentZyuApps/winload/releases)
19
+ [![Linux x64 | ARM64](https://img.shields.io/badge/Linux-x64_|_ARM64-FCC624?style=for-the-badge&logo=linux&logoColor=white)](https://github.com/VincentZyuApps/winload/releases)
18
20
  [![macOS x64 | ARM64](https://img.shields.io/badge/macOS-x64_|_ARM64-000000?style=for-the-badge&logo=apple&logoColor=white)](https://github.com/VincentZyuApps/winload/releases)
19
21
  [![Android x64 | ARM64](https://img.shields.io/badge/Android-x64_|_ARM64-3DDC84?style=for-the-badge&logo=android&logoColor=white)](https://github.com/VincentZyuApps/winload/releases)
20
22
 
21
23
  [![PyPI](https://img.shields.io/badge/PyPI-3776AB?style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/winload/)
22
- [![npm](https://img.shields.io/badge/npm-CB3837?style=for-the-badge&logo=npm&logoColor=white)](https://www.npmjs.com/package/winload-rust-bin)
23
24
  [![Crates.io](https://img.shields.io/badge/Crates.io-000000?style=for-the-badge&logo=rust&logoColor=white)](https://crates.io/crates/winload)
24
25
 
25
- [![Scoop](https://img.shields.io/badge/Scoop-7B4AE2?style=for-the-badge&logo=scoop&logoColor=white)](https://scoop.sh/#/apps?q=%22https%3A%2F%2Fgithub.com%2FVincentZyuApps%2Fscoop-bucket%22&o=false)
26
+ [![npm](https://img.shields.io/badge/npm-CB3837?style=for-the-badge&logo=npm&logoColor=white)](https://www.npmjs.com/package/@vincentzyuapps/winload)
27
+ [![Scoop.sh](https://img.shields.io/badge/Scoop.sh-7B4AE2?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGNpcmNsZSBjeD0iMTIiIGN5PSI4IiByPSI1IiBmaWxsPSIjRUM3MEExIi8+PGNpcmNsZSBjeD0iOCIgY3k9IjEyIiByPSI0LjUiIGZpbGw9IiNFQkYzQTEiLz48Y2lyY2xlIGN4PSIxNiIgY3k9IjEyIiByPSI0LjUiIGZpbGw9IiM4RTZFQzgiLz48cGF0aCBkPSJNMTYuNSA0bC0xLjUtMS41TDExLjUgNmwxLjUgMS41eiIgZmlsbD0iI2ZmZmZmZiIvPjxwYXRoIGQ9Ik0zIDEzaDE4YzAgNC40LTMuNiA4LTggOGgtNGMtNC40IDAtOC0zLjYtOC04eiIgZmlsbD0iIzRGNEI1MyIvPjwvc3ZnPg==)](https://scoop.sh/#/apps?q=%22https%3A%2F%2Fgithub.com%2FVincentZyuApps%2Fscoop-bucket%22&o=false)
26
28
  [![AUR](https://img.shields.io/badge/AUR-1793D1?style=for-the-badge&logo=archlinux&logoColor=white)](https://aur.archlinux.org/packages/winload-rust-bin)
27
29
  [![APT](https://img.shields.io/badge/APT-E95420?style=for-the-badge&logo=debian&logoColor=white)](https://github.com/VincentZyuApps/winload/releases)
28
30
  [![RPM](https://img.shields.io/badge/RPM-CB1626?style=for-the-badge&logo=redhat&logoColor=white)](https://github.com/VincentZyuApps/winload/releases)
31
+ [![Homebrew](https://img.shields.io/badge/Homebrew-FBB040?style=for-the-badge&logo=homebrew&logoColor=black)](https://github.com/VincentZyuApps/homebrew-tap/blob/main/Formula/winload.rb)
29
32
 
30
33
  > **[📖 Build Docs](.github/workflows/build.md)**
31
34
 
32
35
  ## 🚀 Introduction
33
- Winload brings an intuitive, visual network monitor to the modern terminal. It started as a Windows-focused tool to fill the nload gap, and now targets Linux and macOS as well.
36
+ `Winload` brings an intuitive, visual network monitor to the modern terminal. It started as a Windows-focused tool to fill the `nload` gap, and now targets Linux and macOS as well.
34
37
 
35
38
  ## 🙏 Acknowledgements
36
- Winload is inspired by the classic nload project by Roland Riegel. Many thanks for the original idea and experience.
39
+ Winload is inspired by the classic 「[nload](https://github.com/rolandriegel/nload)」 project by Roland Riegel. Many thanks for the original idea and experience.
37
40
  https://github.com/rolandriegel/nload
38
41
 
39
42
  ## ✨ Key Features
@@ -44,37 +47,99 @@ https://github.com/rolandriegel/nload
44
47
  - **Real-time visualization**: live incoming/outgoing graphs and throughput stats.
45
48
  - **Minimal UI**: clean TUI that mirrors nload's ergonomics.
46
49
 
47
- ## 📥 Python Edition Installation
50
+ ## 📊 Performance Benchmarks
51
+ > ⚡ Winload (Rust) achieves **~10ms startup** and **<2MB binary size**, significantly outperforming Python and matching C++ nload in efficiency.
52
+
53
+ ![Winload Benchmark](docs/benchmark/benchmark.svg)
54
+
55
+ ## 🔧 Run from Source
56
+
57
+ ### Python
58
+ ```bash
59
+ git clone https://github.com/VincentZyuApps/winload.git
60
+ # or clone from Gitee (faster in China Mainland):
61
+ # git clone https://gitee.com/vincent-zyu/winload.git
62
+ cd winload/py
63
+ pip install -r requirements.txt
64
+ python main.py
65
+ ```
66
+
67
+ ### Rust
68
+ ```bash
69
+ git clone https://github.com/VincentZyuApps/winload.git
70
+ cd winload/rust
71
+ cargo run --release
72
+ cargo run --release -- --help # Show help
73
+ cargo run --release -- --version # Show version
74
+ ```
75
+
76
+ ## 🐍 Python Edition Installation
48
77
  > 💡 **Implementation Note**: Only PyPI and GitHub/Gitee provide Python edition.
49
78
  > Only Cargo provides Rust source code for local compilation.
50
79
  > All other package managers (Scoop, AUR, npm, APT, RPM) and GitHub Releases distribute **Rust binaries only**.
51
80
  ### Python (pip)
52
81
  ```bash
53
82
  pip install winload
83
+ # recommend use uv:
84
+ # https://docs.astral.sh/uv/getting-started/installation/
85
+ # https://gitee.com/wangnov/uv-custom/releases
86
+ uv venv --python 3.13
87
+ uv pip install winload
88
+ uv run winload
89
+ uv run python -c "import shutil; print(shutil.which('winload'))"
54
90
  ```
55
91
 
56
92
  ## 📥 Rust Edition Installation (recommended)
57
93
  ### npm (cross-platform)
58
94
  ```bash
95
+ # Recommended (scoped)
96
+ npm install -g @vincentzyuapps/winload
97
+
98
+ # Alternative (unscoped)
59
99
  npm install -g winload-rust-bin
100
+
101
+ # Alternative (GitHub Packages)
102
+ npm install -g @vincentzyuapps/winload --registry https://npm.pkg.github.com
103
+
104
+ # on Windows, use win-nload to avoid conflict with System32\winload.exe
105
+ # on Linux/macOS, both winload and win-nload work
60
106
  # or use npx directly
61
- npx winload-rust-bin
107
+ npx @vincentzyuapps/winload
62
108
  ```
109
+
63
110
  > Includes 6 precompiled binaries for x86_64 & ARM64 across Windows, Linux, and macOS.
64
111
 
65
112
  ### Cargo (Build from source)
66
113
  ```bash
67
114
  cargo install winload
115
+ cargo install --list
68
116
  ```
69
117
  ### Windows (Scoop)
118
+ > 📄 [Scoop Bucket (GitHub)](https://github.com/VincentZyuApps/scoop-bucket/blob/main/bucket/winload.json)
119
+ > 📄 [Scoop Bucket (Gitee)](https://gitee.com/vincent-zyu/scoop-bucket/blob/main/bucket/winload.json)
70
120
  ```powershell
71
121
  scoop bucket add vincentzyu https://github.com/VincentZyuApps/scoop-bucket
122
+ # or from Gitee:
123
+ # scoop bucket add vincentzyu https://gitee.com/vincent-zyu/scoop-bucket
124
+ scoop update # optional: manually refresh bucket list before install
72
125
  scoop install winload
126
+ # execute bin file
127
+ win-nload
128
+ Get-Command win-nload # Powershell
129
+ where win-nload # CMD
73
130
  ```
131
+ > 💡 Recommended: use [Windows Terminal](https://github.com/microsoft/terminal) instead of the legacy Windows Console for correct CJK character rendering and better TUI experience.
132
+ > ```powershell
133
+ > scoop bucket add versions
134
+ > scoop install windows-terminal-preview
135
+ > wtp
136
+ > ```
137
+ > 💡 **All builds require Windows 10+** (Rust 1.77+ dropped Windows 7/8 support). Scoop and npm provide **MSVC + Npcap** for **x86_64** and **ARM64** by default. These builds now delay-load `wpcap.dll`, reducing startup failures before `--npcap` is used, but loopback capture still requires Npcap installed on the system. For other variants (MinGW, non-Npcap, i686), download from [GitHub Releases](https://github.com/VincentZyuApps/winload/releases).
74
138
 
75
139
  ### Arch Linux (AUR):
76
140
  ```bash
77
141
  paru -S winload-rust-bin
142
+ which winload
78
143
  ```
79
144
 
80
145
  ### Linux (one-liner)
@@ -83,23 +148,47 @@ paru -S winload-rust-bin
83
148
  > Supports Fedora/RHEL and derivatives — Rocky Linux, AlmaLinux, CentOS Stream, etc. (dnf)
84
149
  ```bash
85
150
  curl -fsSL https://raw.githubusercontent.com/VincentZyuApps/winload/main/docs/install_scripts/install.sh | bash
151
+ which winload
86
152
  ```
87
153
  > 📄 [View install script source](https://github.com/VincentZyuApps/winload/blob/main/docs/install_scripts/install.sh)
88
154
 
155
+ **🇨🇳 Gitee mirror (faster in China Mainland):**
156
+ ```bash
157
+ curl -fsSL https://gitee.com/vincent-zyu/winload/raw/main/docs/install_scripts/install_gitee.sh | bash
158
+ which winload
159
+ ```
160
+ > 📄 [View Gitee install script](https://gitee.com/vincent-zyu/winload/blob/main/docs/install_scripts/install_gitee.sh)
161
+
162
+ > ⚠️ The two `curl ... | bash` install scripts above support **x86_64 / aarch64** systems with **apt** (Debian/Ubuntu), **dnf** (Fedora/RHEL), or **Termux** (Android). For other platforms, use **npm** (`npm install -g @vincentzyuapps/winload`) or **Cargo** (`cargo install winload`) instead.
163
+
164
+ ### macOS / Linux (Homebrew)
165
+ > 📄 [Homebrew Formula (GitHub)](https://github.com/VincentZyuApps/homebrew-tap/blob/main/Formula/winload.rb)
166
+ > 📄 [Homebrew Formula (Gitee)](https://gitee.com/vincent-zyu/homebrew-tap/blob/main/Formula/winload.rb)
167
+ ```bash
168
+ brew tap vincentzyuapps/tap
169
+ # or from Gitee (manual tap clone):
170
+ # git clone https://gitee.com/vincent-zyu/homebrew-tap.git "$(brew --prefix)/Library/Taps/vincentzyuapps/homebrew-tap"
171
+ brew update && brew install winload
172
+ which winload
173
+ ```
174
+ > 💡 Homebrew supports **macOS** (Intel & Apple Silicon) and **Linux** (x86_64 & ARM64).
175
+
89
176
  <details>
90
177
  <summary>Manual install</summary>
91
178
 
92
179
  **DEB (Debian/Ubuntu):**
93
180
  ```bash
94
181
  # Download the latest .deb from GitHub Releases
95
- sudo dpkg -i ./winload_*_amd64.deb
182
+ sudo dpkg -i ./winload*.deb
96
183
  # or use apt (auto-resolves dependencies)
97
- sudo apt install ./winload_*_amd64.deb
184
+ sudo apt install ./winload*.deb
185
+ which winload
98
186
  ```
99
187
 
100
188
  **RPM (Fedora/RHEL):**
101
189
  ```bash
102
- sudo dnf install ./winload-*-1.x86_64.rpm
190
+ sudo dnf install ./winload*.rpm
191
+ which winload
103
192
  ```
104
193
 
105
194
  **Or download binaries directly from [GitHub Releases](https://github.com/VincentZyuApps/winload/releases).**
@@ -112,6 +201,9 @@ sudo dnf install ./winload-*-1.x86_64.rpm
112
201
  winload # Monitor all active network interfaces
113
202
  winload -t 200 # Set refresh interval to 200ms
114
203
  winload -d "Wi-Fi" # Start with a specific device
204
+ winload --title # Show "winload <version>" as the header title
205
+ winload --title "My Monitor" # Use a custom header title
206
+ winload --title "" # Keep the default device header
115
207
  winload -e # Enable emoji decorations 🎉
116
208
  winload --npcap # Capture 127.0.0.1 loopback traffic (Windows, requires Npcap)
117
209
  ```
@@ -123,26 +215,39 @@ winload --npcap # Capture 127.0.0.1 loopback traffic (Windows, requires Npc
123
215
  | `-t`, `--interval <MS>` | Refresh interval in milliseconds | `500` |
124
216
  | `-a`, `--average <SEC>` | Average calculation window in seconds | `300` |
125
217
  | `-d`, `--device <NAME>` | Default device name (partial match) | — |
218
+ | `--title [TITLE]` | Add a title line above device header: no value shows `winload <version>`; empty string (or omitted) shows only the default device header | — |
126
219
  | `-e`, `--emoji` | Enable emoji decorations in TUI 🎉 | off |
127
220
  | `-U`, `--unicode` | Use Unicode block characters for graph (█▓░·) | off |
128
221
  | `-u`, `--unit <UNIT>` | Display unit: `bit` or `byte` | `bit` |
129
222
  | `-b`, `--bar-style <STYLE>` | Bar style: `fill`, `color`, or `plain` | `fill` |
130
223
  | `--in-color <HEX>` | Incoming graph color, hex RGB (e.g. `0x00d7ff`) | cyan |
131
224
  | `--out-color <HEX>` | Outgoing graph color, hex RGB (e.g. `0xffaf00`) | gold |
132
- | `-m`, `--max <VALUE>` | Fixed Y-axis max (e.g. `10M`, `1G`, `500K`) | auto |
225
+ | `-m`, `--max <VALUE>` | Fixed Y-axis max (e.g. `10M`, `1G`, `500K`) — *conflicts with `--smart-max`* | auto |
226
+ | `--smart-max [SECS]` | Smart adaptive Y-axis: auto-decays after traffic spikes (default half-life: 10s) — *conflicts with `--max`* | off |
133
227
  | `-n`, `--no-graph` | Hide graph, show stats only | off |
134
228
  | `--hide-separator` | Hide the separator line (row of equals signs) | off |
135
229
  | `--no-color` | Disable all TUI colors (monochrome mode) | off |
136
230
  | `--npcap` | **[Windows Rust Only]** Capture loopback traffic via Npcap (recommended) | off |
137
- | `--debug-info` | **[Rust Only]** Print network interface debug info and exit | — |
231
+ | `--debug-info` | Print network interface debug info and exit | — |
138
232
  | `-h`, `--help` | Print help (`--help --emoji` for emoji version!) | — |
139
- | `-V`, `--version` | **[Rust Only]** Print version | — |
233
+ | `-V`, `--version` | Print version | — |
234
+
235
+ > **Y-axis scaling modes** — there are three mutually exclusive scenarios:
236
+ >
237
+ > | Mode | Flag | Behavior |
238
+ > |------|------|----------|
239
+ > | **Fixed max** | `--max <VALUE>` | Y-axis is locked to the specified value (e.g. `10M`, `1G`). |
240
+ > | **Smart max** | `--smart-max [SECS]` | Y-axis adapts automatically: jumps up on traffic spikes, then smoothly decays back down (exponential decay, default half-life 10 s). |
241
+ > | **History peak** | *(neither flag)* | Y-axis follows the historical maximum of each metric — the default behavior. |
242
+ >
243
+ > ⚠️ `--max` and `--smart-max` **conflict with each other** — you can only use one at a time.
140
244
 
141
245
  ### Keyboard Shortcuts
142
246
 
143
247
  | Key | Action |
144
248
  |-----|--------|
145
249
  | `←` / `→` or `↑` / `↓` | Switch network device |
250
+ | `F3` | Toggle debug info overlay (Minecraft-style) |
146
251
  | `=` | Toggle separator line visibility |
147
252
  | `c` | Toggle color on/off |
148
253
  | `q` / `Esc` | Quit |
@@ -167,7 +272,39 @@ On Linux and macOS, loopback traffic works out of the box — no extra flags nee
167
272
 
168
273
  ## 🖼️ Previews
169
274
  #### Python Edition Preview
170
- ![docs/preview-py.png](docs/preview-py.png)
275
+ ![docs/images/preview-py.png](docs/images/preview-py.png)
171
276
 
172
277
  #### Rust Edition Preview
173
- ![docs/preview-rust.png](docs/preview-rust.png)
278
+ ![docs/images/preview-rust.png](docs/images/preview-rust.png)
279
+
280
+ ##### Rust Edition Preview GIF
281
+ ![docs/images/preview-rust.gif](docs/images/preview-rust.gif)
282
+
283
+ ##### Terminal Recording
284
+ <a href="https://asciinema.org/a/1030894?startAt=30" target="_blank"><img src="https://asciinema.org/a/1030894.svg" alt="winload demo" width="100%" /></a>
285
+
286
+ > ↑ Recorded by [asciinema](https://github.com/asciinema/asciinema)
287
+
288
+ ## 📦 Dependencies
289
+
290
+ ### Python Edition
291
+
292
+ | Package | Version | Description |
293
+ |:---|:---|:---|
294
+ | [![Python](https://img.shields.io/badge/Python-3.13.11-3776AB?style=flat-square&logo=python&logoColor=white)](https://python.org/) | 3.13.11 | Programming language |
295
+ | [![psutil](https://img.shields.io/badge/psutil-≥7.0-FFD43B?style=flat-square&logo=python&logoColor=white)](https://github.com/giampaolo/psutil) | ≥7.0 | Process and system utilities |
296
+ | [![windows-curses](https://img.shields.io/badge/windows--curses-≥2.0-FFD43B?style=flat-square&logo=python&logoColor=white)](https://github.com/zhirui2020/windows-curses) | ≥2.0 | Windows curses support |
297
+
298
+ ### Rust Edition
299
+
300
+ | Package | Version | Description |
301
+ |:---|:---|:---|
302
+ | [![Rust](https://img.shields.io/badge/Rust-1.93.0-CE422B?style=flat-square&logo=rust&logoColor=white)](https://www.rust-lang.org/) | 1.93.0 | Programming language |
303
+ | [![ratatui](https://img.shields.io/badge/ratatui-0.29-000000?style=flat-square&logo=rust&logoColor=white)](https://github.com/ratatui-org/ratatui) | 0.29 | Terminal UI framework |
304
+ | [![crossterm](https://img.shields.io/badge/crossterm-0.28-000000?style=flat-square&logo=rust&logoColor=white)](https://github.com/crossterm-rs/crossterm) | 0.28 | Cross-platform terminal library |
305
+ | [![sysinfo](https://img.shields.io/badge/sysinfo-0.32-000000?style=flat-square&logo=rust&logoColor=white)](https://github.com/GuillaumeGomez/sysinfo) | 0.32 | System information library |
306
+ | [![clap](https://img.shields.io/badge/clap-4-000000?style=flat-square&logo=rust&logoColor=white)](https://github.com/clap-rs/clap) | 4 | Command-line argument parser |
307
+ | [![pcap](https://img.shields.io/badge/pcap-2-000000?style=flat-square&logo=rust&logoColor=white)](https://github.com/pcap-parser/pcap) | 2 | Packet capture (optional, Windows) |
308
+ ## 🧭 Epilogue
309
+
310
+ Network traffic flows formless through the void — yet Winload gives it shape. Packets traverse the terminal, silent and unseen, but through this window, every thread of throughput takes form before your eyes. If you seek to know the pulse of a machine's connection to the world, this tool is at once a humble lamp upon your desk and a guiding star for the journey ahead.