Skip to content

Commit c377357

Browse files
committed
v0.9.0
- **Mirror Install**: New Linux Mirrors install method with automatic mirror speed probing (throughput detection + TCP latency fallback), hash verification, and auto-retry; - **System Messaging**: New system messaging framework for delivering critical notifications such as version compatibility risks and key announcements; - **Pin on Top**: Title bar pin button for one-click always-on-top toggle; setting to hide the pin button; - **Donate Page**: Sidebar donate entry and dedicated donate view; sidebar visibility controlled via settings; - **Multilingual Expansion**: 21 new languages added, reaching 50 total; language selector upgraded from dropdown to a dedicated dialog (including README manuals) - **Install Guide**: Home page shows setup guide link when no distro is detected; clicking opens the official documentation; - **WSL Version Compatibility Check**: Automatic WSL version compatibility detection on startup; shows a warning dialog and directs users to documentation when incompatible - **Move Distro Improvement**: Move operation uses elevated execution to avoid E_ACCESSDENIED on WSL 2.7.*.0; post-move registry verification to confirm success; - **Debug Mode**: New debug.toml configuration file; supports loading local JSON data source for mirror install and executing local cleanup scripts for distro compression, useful for development and testing; - **Task Scheduler Refactor**: Unified TaskScheduler; dialog sync, message sync, expiry detection, and WSL compat detection split into independent task modules for better decoupling; - **Dialog Priority Management**: DND (Do Not Disturb) mechanism with priority chain — WSL Compat > Expired > Update dialogs — ensuring higher-priority dialogs are never obscured; - **Startup Performance**: Fixed memory spike caused by bold font rendering in certain scenarios; removed startup API pre-warm; internet timestamp now returned from startup API; - **API Cache Layer**: In-memory API response cache; cache updates only on successful remote requests, reducing redundant network calls; - **Distro List Cache Fix**: Fixed an issue where the home page distro list still displayed cached data after unregistering all distros; - **Update Timeout Notification**: Added a network timeout notification dialog during version update checks; - **Compression Path Fix**: Fixed path issues during distribution compression; - **Terminal Launch Compatibility**: Optimized compatibility when launching the distribution terminal; - **Installer Path Safety Fix**: Fixed an issue in the Inno Setup installer where manually typed install paths were not auto-completed with the "WSL Dashboard" subdirectory, preventing accidental deletion of other files in the target directory during uninstall;
1 parent 680dbf4 commit c377357

286 files changed

Lines changed: 38314 additions & 1996 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

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

Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "wsldashboard"
3-
version = "0.8.0"
3+
version = "0.9.0"
44
edition = "2024"
55
description = "A modern, high-performance, lightweight, and low-memory WSL (Windows Subsystem for Linux) instance management dashboard."
66
repository = "https://github.com/owu/wsl-dashboard"
@@ -29,6 +29,8 @@ rfd = "0.14"
2929
open = "5.3.3"
3030
image = { version = "0.25", default-features = false, features = ["png", "jpeg"] }
3131
ureq = { version = "2.10", features = ["json", "native-tls"] }
32+
reqwest = { version = "0.12", features = ["json", "stream", "gzip", "brotli", "deflate"] }
33+
futures-util = "0.3"
3234
semver = "1.0"
3335
chrono = { version = "0.4.42", features = ["serde"] }
3436
rand = "0.9.2"
@@ -42,6 +44,8 @@ rust-ini = "0.21"
4244
dhat = { version = "0.3", optional = true }
4345
get_if_addrs = "0.5.3"
4446
urlencoding = "2.1"
47+
async-trait = "0.1"
48+
native-tls = "0.2.18"
4549

4650
[features]
4751
dhat-heap = ["dhat"]

README.md

Lines changed: 58 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Notice:​
2727
<a href="https://hellogithub.com/repository/owu/wsl-dashboard" target="_blank"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=cb1edc45846e475da1dae615a4b4f71c&claim_uid=mWIRuYqZo1FUrjE&theme=small" alt="Featured|HelloGitHub" /></a>
2828
</p>
2929

30-
I18N : English | [简体中文](./manual/README_zh_CN.md) | [繁體中文](./manual/README_zh_TW.md) | [हिन्दी](./manual/README_hi.md) | [Español](./manual/README_es.md) | [Français](./manual/README_fr.md) | [العربية](./manual/README_ar.md) | [বাংলা](./manual/README_bn.md) | [Português](./manual/README_pt.md) | [Русский](./manual/README_ru.md) | [اردو](./manual/README_ur.md) | [Bahasa Indonesia](./manual/README_id.md) | [Deutsch](./manual/README_de.md) | [日本語](./manual/README_ja.md) | [Türkçe](./manual/README_tr.md) | [한국어](./manual/README_ko.md) | [Italiano](./manual/README_it.md) | [Nederlands](./manual/README_nl.md) | [Svenska](./manual/README_sv.md) | [Čeština](./manual/README_cs.md) | [Ελληνικά](./manual/README_el.md) | [Magyar](./manual/README_hu.md) | [עברית](./manual/README_he.md) | [Norsk](./manual/README_no.md) | [Dansk](./manual/README_da.md) | [Suomi](./manual/README_fi.md) | [Slovenčina](./manual/README_sk.md) | [Slovenščina](./manual/README_sl.md) | [Íslenska](./manual/README_is.md)
30+
I18N : English | [简体中文](./manual/README_zh_CN.md) | [繁體中文](./manual/README_zh_TW.md) | [हिन्दी](./manual/README_hi.md) | [Español](./manual/README_es.md) | [Français](./manual/README_fr.md) | [العربية](./manual/README_ar.md) | [বাংলা](./manual/README_bn.md) | [Português](./manual/README_pt.md) | [Русский](./manual/README_ru.md) | [اردو](./manual/README_ur.md) | [Bahasa Indonesia](./manual/README_id.md) | [Deutsch](./manual/README_de.md) | [日本語](./manual/README_ja.md) | [Türkçe](./manual/README_tr.md) | [한국어](./manual/README_ko.md) | [Italiano](./manual/README_it.md) | [Nederlands](./manual/README_nl.md) | [Svenska](./manual/README_sv.md) | [Čeština](./manual/README_cs.md) | [Ελληνικά](./manual/README_el.md) | [Magyar](./manual/README_hu.md) | [עברית](./manual/README_he.md) | [Norsk](./manual/README_no.md) | [Dansk](./manual/README_da.md) | [Suomi](./manual/README_fi.md) | [Slovenčina](./manual/README_sk.md) | [Slovenščina](./manual/README_sl.md) | [Íslenska](./manual/README_is.md) | [Tiếng Việt](./manual/README_vi.md) | [తెలుగు](./manual/README_te.md) | [Basa Jawa](./manual/README_jv.md) | [ภาษาไทย](./manual/README_th.md) | [தமிழ்](./manual/README_ta.md) | [Filipino](./manual/README_fil.md) | [ਪੰਜਾਬੀ](./manual/README_pa.md) | [Bahasa Melayu](./manual/README_ms.md) | [Polski](./manual/README_pl.md) | [Українська](./manual/README_uk.md) | [فارسی](./manual/README_fa.md) | [ಕನ್ನಡ](./manual/README_kn.md) | [मराठी](./manual/README_mr.md) | [Hausa](./manual/README_ha.md) | [မြန်မာ](./manual/README_my.md) | [Oʻzbek](./manual/README_uz.md) | [Azərbaycan](./manual/README_az.md) | [Cebuano](./manual/README_ceb.md) | [മലയാളം](./manual/README_ml.md) | [سنڌي](./manual/README_sd.md) | [አማርኛ](./manual/README_am.md)
3131

3232
---
3333

@@ -40,14 +40,16 @@ I18N : English | [简体中文](./manual/README_zh_CN.md) | [繁體中文](./ma
4040
- [💻 System Requirements](#-system-requirements)
4141
- [📦 Installation](#-installation)
4242
- [🛠️ Tech Stack & Performance](#️-tech-stack--performance)
43+
- [🤝 Community Support](#-community-support)
44+
- [❤️ Support this project](#️-support-this-project)
4345
- [⭐️ Labor of love](#️-labor-of-love)
4446
- [📄 License](#-license)
4547

4648
---
4749

4850
## 🌍 Language Support
4951

50-
English, Simplified Chinese, Traditional Chinese, Hindi, Spanish, French, Arabic, Bengali, Portuguese, Russian, Urdu, Indonesian, German, Japanese, Turkish, Korean, Italian, Dutch, Swedish, Czech, Greek, Hungarian, Hebrew, Norwegian, Danish, Finnish, Slovak, Slovenian, Icelandic
52+
English, Simplified Chinese, Traditional Chinese, Hindi, Spanish, French, Arabic, Bengali, Portuguese, Russian, Urdu, Indonesian, German, Japanese, Turkish, Korean, Italian, Dutch, Swedish, Czech, Greek, Hungarian, Hebrew, Norwegian, Danish, Finnish, Slovak, Slovenian, Icelandic, Vietnamese, Telugu, Javanese, Thai, Tamil, Filipino, Punjabi, Malay, Polish, Ukrainian, Persian, Kannada, Marathi, Hausa, Burmese, Uzbek, Azerbaijani, Cebuano, Malayalam, Sindhi, Amharic
5153

5254
<p align="left">
5355
<img src="assets/flags/us.svg" width="32" title="English" alt="English" />
@@ -79,6 +81,27 @@ English, Simplified Chinese, Traditional Chinese, Hindi, Spanish, French, Arabic
7981
<img src="assets/flags/sk.svg" width="32" title="Slovak" alt="Slovak" />
8082
<img src="assets/flags/si.svg" width="32" title="Slovenian" alt="Slovenian" />
8183
<img src="assets/flags/is.svg" width="32" title="Icelandic" alt="Icelandic" />
84+
<img src="assets/flags/vn.svg" width="32" title="Vietnamese" alt="Vietnamese" />
85+
<img src="assets/flags/in.svg" width="32" title="Telugu" alt="Telugu" />
86+
<img src="assets/flags/id.svg" width="32" title="Javanese" alt="Javanese" />
87+
<img src="assets/flags/th.svg" width="32" title="Thai" alt="Thai" />
88+
<img src="assets/flags/in.svg" width="32" title="Tamil" alt="Tamil" />
89+
<img src="assets/flags/ph.svg" width="32" title="Filipino" alt="Filipino" />
90+
<img src="assets/flags/pk.svg" width="32" title="Punjabi" alt="Punjabi" />
91+
<img src="assets/flags/my.svg" width="32" title="Malay" alt="Malay" />
92+
<img src="assets/flags/pl.svg" width="32" title="Polish" alt="Polish" />
93+
<img src="assets/flags/ua.svg" width="32" title="Ukrainian" alt="Ukrainian" />
94+
<img src="assets/flags/ir.svg" width="32" title="Persian" alt="Persian" />
95+
<img src="assets/flags/in.svg" width="32" title="Kannada" alt="Kannada" />
96+
<img src="assets/flags/in.svg" width="32" title="Marathi" alt="Marathi" />
97+
<img src="assets/flags/ng.svg" width="32" title="Hausa" alt="Hausa" />
98+
<img src="assets/flags/mm.svg" width="32" title="Burmese" alt="Burmese" />
99+
<img src="assets/flags/uz.svg" width="32" title="Uzbek" alt="Uzbek" />
100+
<img src="assets/flags/az.svg" width="32" title="Azerbaijani" alt="Azerbaijani" />
101+
<img src="assets/flags/ph.svg" width="32" title="Cebuano" alt="Cebuano" />
102+
<img src="assets/flags/in.svg" width="32" title="Malayalam" alt="Malayalam" />
103+
<img src="assets/flags/pk.svg" width="32" title="Sindhi" alt="Sindhi" />
104+
<img src="assets/flags/et.svg" width="32" title="Amharic" alt="Amharic" />
82105
</p>
83106

84107

@@ -90,7 +113,7 @@ English, Simplified Chinese, Traditional Chinese, Hindi, Spanish, French, Arabic
90113
- **Comprehensive Instance Control**: One-click Start, Stop, Terminate, and Unregister. Real-time status monitoring and detailed insights into disk usage and file locations.
91114
- **Distro Management**: Set as default, migration (Move VHDX to other drives), and export/clone to `.tar` or `.tar.gz` archives.
92115
- **Quick Integration**: Instant launch into Terminal, VS Code, or File Explorer with customizable working directories and startup script hooks.
93-
- **Smart Installation**: Install from Microsoft Store, GitHub, or local files (RootFS/VHDX). Includes a built-in RootFS download helper.
116+
- **Distro Installation**: Install Linux distributions via Microsoft Store, GitHub, local files (RootFS/VHDX), or Online Mirrors (with auto speed-test to pick the fastest mirror and built-in RootFS download helper).
94117
- **Global Safety**: Mutex locks for safe concurrent migration/backup operations and automatic Appx cleanup on removal.
95118
- **Ultra-Low Memory Footprint**: Highly optimized for efficiency. Silent startup (system tray) uses only **~10MB** RAM. Windowed mode usage varies by font complexity: **~18MB** for standard languages (English, German, Spanish, etc.) and **~38MB** for large font languages (Chinese, Japanese, Korean, etc.).
96119
- **Advanced Networking**: Seamless port forwarding management (with automatic firewall rule creation) and global HTTP proxy configuration for unified connectivity.
@@ -144,17 +167,20 @@ Log files are written to the configured log directory and can be attached when r
144167
<img src="assets/screenshot/add.png" width="48%" />
145168
<img src="assets/screenshot/settings.png" width="48%" />
146169
</p>
170+
<p align="center">
171+
<img src="assets/screenshot/settings-advanced.png" width="48%" />
172+
<img src="assets/screenshot/settings-interface.png" width="48%" />
173+
</p>
147174

148-
### About
175+
### About & Donate
149176
<p align="center">
150177
<img src="assets/screenshot/about.png" width="48%" />
178+
<img src="assets/screenshot/donate.png" width="48%" />
151179
</p>
152180

153181
## 🎬 Operation Demo
154182

155-
Below is a demonstration of the WSL Dashboard in action:
156-
157-
![WSL Dashboard Demo](assets/screenshot/demo.gif)
183+
[Help us improve! Watch our intro video and share your thoughts.](https://github.com/owu/wsl-dashboard/discussions/9)
158184

159185

160186

@@ -214,22 +240,6 @@ Ensure you have the Rust toolchain (Rust 1.92+ or newer) installed.
214240
- **Portability**: Optimized release build produces a single compact executable.
215241
216242
217-
## ⭐️ Labor of love
218-
219-
If you have found this project useful, I would be grateful if you could leave a star on GitHub. Your endorsement helps it reach a wider audience and is deeply appreciated. It is this encouragement that motivates me to keep building.
220-
221-
222-
## 📄 License
223-
224-
This project is licensed under the GPL-3.0 – see the [LICENSE](LICENSE) file for details.
225-
226-
227-
---
228-
229-
Built with ❤️ for the WSL Community.
230-
231-
---
232-
233243
## 🤝 Community Support
234244
235245
A big thank you to the following communities for their support:
@@ -245,3 +255,28 @@ A big thank you to the following communities for their support:
245255
- [V2EX](https://www.v2ex.com) - For Chinese tech community discussions
246256
247257
Your contributions and feedback make this project possible!
258+
259+
260+
## ❤️ Support this project
261+
262+
- This project is licensed under GPL-3.0 and is free for all users.
263+
- From feature development and daily testing to bug fixes, all work is done in spare time. The road of open source is not easy alone — your recognition and support give the project the confidence to keep going.
264+
- If this tool has genuinely helped you, consider lending a hand. All donations go toward server costs, version iterations, and feature improvements, keeping the project continuously updated and steadily progressing.
265+
- Every bit of kindness is a ray of starlight. Thank you again for your understanding and generosity!
266+
267+
Visit our donation page: [https://www.wslui.com/donate/](https://www.wslui.com/donate/)
268+
269+
270+
## ⭐️ Labor of love
271+
272+
If you have found this project useful, I would be grateful if you could leave a star on GitHub. Your endorsement helps it reach a wider audience and is deeply appreciated. It is this encouragement that motivates me to keep building.
273+
274+
275+
## 📄 License
276+
277+
This project is licensed under the GPL-3.0 – see the [LICENSE](LICENSE) file for details.
278+
279+
280+
---
281+
282+
Built with ❤️ for the WSL Community.

assets/flags/az.svg

Lines changed: 8 additions & 0 deletions
Loading

assets/flags/et.svg

Lines changed: 14 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)