winload-rust-bin 0.1.7-rc.5 → 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 +12 -9
  4. package/readme.md +136 -20
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.5",
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",
@@ -29,12 +29,15 @@
29
29
  "index.js",
30
30
  "readme.md"
31
31
  ],
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
32
35
  "optionalDependencies": {
33
- "winload-rust-bin-win32-x64": "0.1.7-rc.5",
34
- "winload-rust-bin-win32-arm64": "0.1.7-rc.5",
35
- "winload-rust-bin-linux-x64": "0.1.7-rc.5",
36
- "winload-rust-bin-linux-arm64": "0.1.7-rc.5",
37
- "winload-rust-bin-darwin-x64": "0.1.7-rc.5",
38
- "winload-rust-bin-darwin-arm64": "0.1.7-rc.5"
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"
39
42
  }
40
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,7 +47,33 @@ 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**.
@@ -54,7 +83,7 @@ pip install winload
54
83
  # recommend use uv:
55
84
  # https://docs.astral.sh/uv/getting-started/installation/
56
85
  # https://gitee.com/wangnov/uv-custom/releases
57
- uv venv
86
+ uv venv --python 3.13
58
87
  uv pip install winload
59
88
  uv run winload
60
89
  uv run python -c "import shutil; print(shutil.which('winload'))"
@@ -63,14 +92,20 @@ uv run python -c "import shutil; print(shutil.which('winload'))"
63
92
  ## 📥 Rust Edition Installation (recommended)
64
93
  ### npm (cross-platform)
65
94
  ```bash
95
+ # Recommended (scoped)
96
+ npm install -g @vincentzyuapps/winload
97
+
98
+ # Alternative (unscoped)
66
99
  npm install -g winload-rust-bin
67
- npm list -g winload-rust-bin
100
+
101
+ # Alternative (GitHub Packages)
102
+ npm install -g @vincentzyuapps/winload --registry https://npm.pkg.github.com
103
+
68
104
  # on Windows, use win-nload to avoid conflict with System32\winload.exe
69
105
  # on Linux/macOS, both winload and win-nload work
70
106
  # or use npx directly
71
- npx winload-rust-bin
107
+ npx @vincentzyuapps/winload
72
108
  ```
73
- > ⚠️ This package will be migrated to `@vincentzyuapps/winload` in a future version for [GitHub Packages](https://github.com/features/packages) compatibility.
74
109
 
75
110
  > Includes 6 precompiled binaries for x86_64 & ARM64 across Windows, Linux, and macOS.
76
111
 
@@ -80,14 +115,26 @@ cargo install winload
80
115
  cargo install --list
81
116
  ```
82
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)
83
120
  ```powershell
84
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
85
125
  scoop install winload
86
126
  # execute bin file
87
127
  win-nload
88
128
  Get-Command win-nload # Powershell
89
129
  where win-nload # CMD
90
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).
91
138
 
92
139
  ### Arch Linux (AUR):
93
140
  ```bash
@@ -105,21 +152,42 @@ which winload
105
152
  ```
106
153
  > 📄 [View install script source](https://github.com/VincentZyuApps/winload/blob/main/docs/install_scripts/install.sh)
107
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
+
108
176
  <details>
109
177
  <summary>Manual install</summary>
110
178
 
111
179
  **DEB (Debian/Ubuntu):**
112
180
  ```bash
113
181
  # Download the latest .deb from GitHub Releases
114
- sudo dpkg -i ./winload_*_amd64.deb
182
+ sudo dpkg -i ./winload*.deb
115
183
  # or use apt (auto-resolves dependencies)
116
- sudo apt install ./winload_*_amd64.deb
184
+ sudo apt install ./winload*.deb
117
185
  which winload
118
186
  ```
119
187
 
120
188
  **RPM (Fedora/RHEL):**
121
189
  ```bash
122
- sudo dnf install ./winload-*-1.x86_64.rpm
190
+ sudo dnf install ./winload*.rpm
123
191
  which winload
124
192
  ```
125
193
 
@@ -133,6 +201,9 @@ which winload
133
201
  winload # Monitor all active network interfaces
134
202
  winload -t 200 # Set refresh interval to 200ms
135
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
136
207
  winload -e # Enable emoji decorations 🎉
137
208
  winload --npcap # Capture 127.0.0.1 loopback traffic (Windows, requires Npcap)
138
209
  ```
@@ -144,26 +215,39 @@ winload --npcap # Capture 127.0.0.1 loopback traffic (Windows, requires Npc
144
215
  | `-t`, `--interval <MS>` | Refresh interval in milliseconds | `500` |
145
216
  | `-a`, `--average <SEC>` | Average calculation window in seconds | `300` |
146
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 | — |
147
219
  | `-e`, `--emoji` | Enable emoji decorations in TUI 🎉 | off |
148
220
  | `-U`, `--unicode` | Use Unicode block characters for graph (█▓░·) | off |
149
221
  | `-u`, `--unit <UNIT>` | Display unit: `bit` or `byte` | `bit` |
150
222
  | `-b`, `--bar-style <STYLE>` | Bar style: `fill`, `color`, or `plain` | `fill` |
151
223
  | `--in-color <HEX>` | Incoming graph color, hex RGB (e.g. `0x00d7ff`) | cyan |
152
224
  | `--out-color <HEX>` | Outgoing graph color, hex RGB (e.g. `0xffaf00`) | gold |
153
- | `-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 |
154
227
  | `-n`, `--no-graph` | Hide graph, show stats only | off |
155
228
  | `--hide-separator` | Hide the separator line (row of equals signs) | off |
156
229
  | `--no-color` | Disable all TUI colors (monochrome mode) | off |
157
230
  | `--npcap` | **[Windows Rust Only]** Capture loopback traffic via Npcap (recommended) | off |
158
- | `--debug-info` | **[Rust Only]** Print network interface debug info and exit | — |
231
+ | `--debug-info` | Print network interface debug info and exit | — |
159
232
  | `-h`, `--help` | Print help (`--help --emoji` for emoji version!) | — |
160
- | `-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.
161
244
 
162
245
  ### Keyboard Shortcuts
163
246
 
164
247
  | Key | Action |
165
248
  |-----|--------|
166
249
  | `←` / `→` or `↑` / `↓` | Switch network device |
250
+ | `F3` | Toggle debug info overlay (Minecraft-style) |
167
251
  | `=` | Toggle separator line visibility |
168
252
  | `c` | Toggle color on/off |
169
253
  | `q` / `Esc` | Quit |
@@ -188,7 +272,39 @@ On Linux and macOS, loopback traffic works out of the box — no extra flags nee
188
272
 
189
273
  ## 🖼️ Previews
190
274
  #### Python Edition Preview
191
- ![docs/preview-py.png](docs/preview-py.png)
275
+ ![docs/images/preview-py.png](docs/images/preview-py.png)
192
276
 
193
277
  #### Rust Edition Preview
194
- ![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.