Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,24 @@

## [Unreleased]

## [0.1.3] - 2026-10-18

### 修复

- 创建卷遇到 `HRESULT=0x800700B7`(已存在)时给出中文说明,并把会话里已有、列表缺失的卷重新同步进列表。
- Map volume-create `0x800700B7` (already exists) to a clear message and re-list orphan session VHDs.
- 程序已在运行时再次点桌面图标:不再弹「不能多开」,直接显示并前置已有窗口(含最小化 / 托盘隐藏)。
- A second launch focuses the existing window (including tray-hidden) instead of showing an already-running dialog.

### 新增

- 删除容器时可单独确认是否同时删除关联命名卷(默认不删,避免误清数据库等数据)。
- Removing a container can optionally delete attached named volumes; off by default.
- 关闭窗口首次提示:最小化到系统托盘(容器继续运行)或退出并停止本会话所有运行中容器;选择会写入设置,可随时改。托盘图标常驻,可显示窗口 / 退出并保留容器 / 退出并停止容器。
- First close asks minimize-to-tray vs quit-and-stop; preference is saved. Resident tray icon for show / quit-keep / quit-stop.
- 设置页底部「关于」:版本号、GitHub / 网站链接;对照 GitHub Releases 检查更新,有新版本时跳转到对应 Release 页。
- Settings → About: version, GitHub/website links, and a GitHub Releases update check that opens the release page.

### 变更

- 启动门禁只读注册表 `HKLM\...\Lxss\Msi\Version`(与 WSL 自身一致),不再调用 `wsl --version`。缺键即视为未安装。SDK 加载后的版本仍用 `wslc::Service::version()`。
Expand All @@ -15,6 +33,9 @@
- 移除未使用的 `session_stats` / `SessionStats` / `Cmd::Stats` 路径。
- Remove unused session-stats plumbing.

- 补齐界面文案国际化(引擎徽章、关于 / 更新检查、Inspect·Exec 标题、内存/卷容量单位、卷删除部分失败提示等);统一卡片 / 徽章 / 日志面板 / 模态框宽度等可复用样式。
- Complete remaining UI i18n and share card / badge / log-pane / modal helpers across screens.

## [0.1.2] - 2026-10-11

### 修复
Expand Down Expand Up @@ -60,7 +81,8 @@
- 容器日志走 [`timeroute/wslc-rs`](https://github.com/timeroute/wslc-rs) 的 `LogsOptions`(`wslc --session wslc-desktop container logs`)。
- Container logs use the `wslc-rs` fork rather than a separate CLI path.

[Unreleased]: https://github.com/timeroute/wslc-desktop/compare/v0.1.2...HEAD
[Unreleased]: https://github.com/timeroute/wslc-desktop/compare/v0.1.3...HEAD
[0.1.3]: https://github.com/timeroute/wslc-desktop/compare/v0.1.2...v0.1.3
[0.1.2]: https://github.com/timeroute/wslc-desktop/compare/v0.1.1...v0.1.2
[0.1.1]: https://github.com/timeroute/wslc-desktop/compare/v0.1.0...v0.1.1
[0.1.0]: https://github.com/timeroute/wslc-desktop/releases/tag/v0.1.0
22 changes: 21 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 6 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "wslc-desktop"
version = "0.1.2"
version = "0.1.3"
edition = "2024"
description = "Lightweight desktop manager for Windows WSL Containers (WSLc)"
license = "Apache-2.0"
Expand All @@ -24,20 +24,23 @@ upgrade-guid = "31263ED9-28F7-4608-AF04-A8CAE4591EB0"
[dependencies]
anyhow = "1"
gpui-kit = "0.7.1"
raw-window-handle = "0.6"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
smol = "2"
sys-locale = "0.3"
# GitHub release check (About) + Windows NuGet SDK fetch.
ureq = { version = "2.12", default-features = true, features = ["json"] }

# Official WSL Containers SDK bindings (`wslcsdk.dll`). Windows host only.
# ureq/zip: download matching Microsoft.WSL.Containers native DLL at runtime.
# zip: extract matching Microsoft.WSL.Containers native DLL at runtime.
[target.'cfg(windows)'.dependencies]
# Own fork of wslc-rs (OpenContainer / Logs / named volumes / extra SDK exports).
# Bump `rev` after pushing patches to https://github.com/timeroute/wslc-rs .
# Prefer git over vendor so desktop tracks the fork tip without copying the tree.
wslc = { git = "https://github.com/timeroute/wslc-rs", rev = "9fbcd72f6967f79d0dc805648120eaec77364a2e" }
ureq = { version = "2.12", default-features = true, features = ["json"] }
zip = { version = "2", default-features = false, features = ["deflate"] }
gpui-tray = { version = "0.1", default-features = false, features = ["gpui-kit", "menu-state"] }
windows-sys = { version = "0.61", features = [
"Win32_Foundation",
"Win32_System_Registry",
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@
| **Containers** | 创建(端口 / bind / 命名卷);行内 Start / Stop / Restart / Logs / Inspect / Exec / Remove;catalog + `OpenContainer` 跨重启恢复 |
| **Images** | 拉取弹窗;行内创建容器 / 删除 |
| **Volumes** | 弹窗创建(1/2/5/10 GiB);行内删除 |
| **设置** | 可滚动;语言、主题、会话 CPU / 内存(下次新建会话生效) |
| **设置** | 可滚动;语言、主题、关闭窗口行为、会话 CPU / 内存(下次新建会话生效);关于(版本 / GitHub / 检查更新) |

Logs 走 fork 的 `LogsOptions`(底层 `wslc --session wslc-desktop container logs`)。退出应用**不会** `terminate` 会话,便于下次重连。
Logs 走 fork 的 `LogsOptions`(底层 `wslc --session wslc-desktop container logs`)。关闭窗口可最小化到托盘(容器继续运行),或退出并停止运行中的容器;删除容器时命名卷需单独确认。会话本身不会在退出时 `terminate`,便于下次重连。

## 从源码构建

Expand All @@ -54,7 +54,7 @@ cargo test
```powershell
cargo wix
# 产物:target\wix\WSLc.Desktop-<version>-x86_64.msi
# 当前 0.1.2:WSLc.Desktop-0.1.2-x86_64.msi
# 当前 0.1.3:WSLc.Desktop-0.1.3-x86_64.msi
```

可选:`cargo wix --no-build`(已有 release 产物时)、`cargo wix --sign`(需 `signtool`)。
Expand All @@ -64,9 +64,9 @@ cargo wix
打 `v*` tag 会触发 [Windows MSI](.github/workflows/windows-msi.yml) 工作流:构建 MSI 并创建 Release 挂载安装包。

```powershell
# 版本与 Cargo.toml 对齐,例如 0.1.2 → v0.1.2
git tag v0.1.2
git push origin v0.1.2
# 版本与 Cargo.toml 对齐,例如 0.1.3 → v0.1.3
git tag v0.1.3
git push origin v0.1.3
```

也可:push / PR 到 `main` 仅上传 artifact;或 Actions → **Windows MSI** → **Run workflow**。
Expand Down
Loading
Loading