技术栈:.NET 10 · Avalonia 12.1 · Semi Design(Semi.Avalonia 12)· Ursa 2.2 · CommunityToolkit.Mvvm
|
内置 PicViewer:缩放、平移、左右键分类打点、拖拽微调。选中的标签直接在图上显示译文提示。 |
图片在后台解码并预读下一页,翻页不卡界面;标注层复用画笔与文字排版,数百个标签也能流畅重绘。 |
全面采用 Semi Design 设计语言:统一的 4px 间距节奏、圆角与阴影层级,自绘无边框标题栏,浅色 / 深色主题同步切换;按钮、数据表格与进度条均有平滑过渡,面板可拖动调整大小。 |
|
自动保存、远程同步、冲突检测与合并助手,多人翻译同一话也不怕覆盖。 |
流式直传,覆盖前自动备份旧版本并可回退;文件名自动解析“卷 / 番外 / 话数”生成规范目录。 |
SHA256 强校验 + 分阶段安装,任一步失败自动回滚,下载中途可随时取消。 |
![]() |
![]() |
| 启动页:最近项目与只读预览 | 设置:标注显示与软件更新(深色主题) |
前往 Releases 下载对应平台安装包;也可以使用免安装压缩包,解压后直接运行:
| 平台 | 安装包 | 免安装 |
|---|---|---|
| Windows x64 / arm64 | LabelPlus_Next-<ver>-win-*-setup.exe |
LabelPlus_Next.Desktop-win-*.zip |
| macOS Intel / Apple Silicon | LabelPlus_Next-<ver>-macos-*.dmg |
LabelPlus_Next.Desktop-osx-*.zip |
| Linux x64 / arm64 | labelplus-next_<ver>_*.deb / *.rpm / *.AppImage |
LabelPlus_Next.Desktop-linux-*.zip |
Windows 安装包按当前用户安装、无需管理员权限;macOS 首次打开请右键 → 打开;Linux deb/rpm 用包管理器安装。安装后程序会自动检查更新(deb/rpm 请通过包管理器升级)。
| 按键 | 作用 | 按键 | 作用 |
|---|---|---|---|
| Q | 浏览模式 | Ctrl + S | 保存 |
| W | Label 模式(打点) | Ctrl + Shift + S | 另存为 |
| E | 录入模式 | Ctrl + O / N | 打开 / 新建译文 |
| R | 审校模式 | Ctrl + ↑ ↓ | 上 / 下一个标签 |
| 1 / 2 | 所选标签设为框内 / 框外 | Ctrl + ← → | 上 / 下一张图片 |
| Ctrl + Z | 撤销删除标签 |
需要 .NET 10 SDK。
git clone https://github.com/SeaAndStars/LabelPlus_Next.git
cd LabelPlus_Next
dotnet run --project LabelPlus_Next.Desktop发布单平台自包含版本:
dotnet publish LabelPlus_Next.Desktop -c Release -r win-x64 --self-contained运行测试
# 仅本地测试(推荐)
dotnet test LabelPlus_Next.Test --filter "FullyQualifiedName!~Test1&FullyQualifiedName!~AuthApiTests"
# 全局异常处理测试仅在 Release 下有意义
dotnet test LabelPlus_Next.Test -c Release --filter "FullyQualifiedName!~Test1&FullyQualifiedName!~AuthApiTests"[!WARNING]
Test1与AuthApiTests中的集成测试会用LabelPlus_Next.Test/test.json的账号真实访问并写入远程存储,请只在自己的测试服务器上运行;CI 默认已跳过这两组测试。
项目结构
| 项目 | 说明 |
|---|---|
LabelPlus_Next |
主程序 UI 与业务逻辑(视图、ViewModel、自定义控件、API 客户端) |
LabelPlus_Next.Desktop |
桌面宿主(入口、平台清单、安装脚本) |
LabelPlus_Next.Update |
独立更新程序:等待主程序退出后下载并安装客户端更新 |
LabelPlus_Next.Tools |
发布工具:打包各平台产物、计算 SHA256、生成并上传更新清单 |
LabelPlus_Next.ApiServer |
可选的自托管 API 服务(鉴权、文件系统),支持 Docker |
LabelPlus_Next.Test |
MSTest 单元测试与集成测试 |
Shared/UpdateKit.cs |
客户端与更新程序共用的更新基础设施(链接编译进两个项目) |
sequenceDiagram
autonumber
participant C as 主程序
participant S as 更新服务器 (AList)
participant U as 更新程序
C->>S: 读取 manifest.json
alt 更新程序有新版本
C->>S: 下载更新程序包
C->>C: SHA256 校验 → 分阶段安装到 update/
end
alt 客户端有新版本
C->>C: 自动保存未保存的译文
C->>U: 启动更新程序后退出
U->>S: 下载客户端包
U->>U: SHA256 校验 → 分阶段安装(失败回滚)
U->>C: 重新启动主程序
end
- 强校验:清单提供
sha256时,下载文件必须完全一致,否则重试 3 次后放弃,绝不安装。 - 分阶段安装:先完整解压到安装目录内的临时目录,再逐个替换;文件被占用、磁盘已满、压缩包条目越界等任何错误都会把已替换的文件恢复原样。
- 语义化版本:支持
v1.2.3、1.3.0-beta.2等写法,1.10.0正确地新于1.9.0。
清单格式(manifest.json)
默认位置 /OneDrive2/Update/manifest.json,可在 设置 → 软件更新 → 设置自定义更新服务器 中修改。
发布新版本时用 LabelPlus_Next.Tools 打包各平台产物,它会计算 SHA256 并更新、上传清单。
- UI:Avalonia 12 · Semi Design · Semi.Avalonia · Ursa · Avalonia DataGrid · Svg.Skia
- 库:CommunityToolkit.Mvvm · ReactiveUI · Newtonsoft.Json · SharpCompress · RestSharp · WebDav.Client · Downloader · NLog · Antelcat.I18N
特别致谢 Ursa 及相关生态。
MIT © SeaAndStars



{ "schema": "v1", "projects": { "LabelPlus_Next.Desktop": { "latest": "1.3.3", "releases": [{ "version": "1.3.3", "notes": "更新说明(显示在设置页)", "files": [{ "name": "LabelPlus_Next.Desktop-win-x64.zip", "url": "https://…/d/…", "sha256": "…", "size": 0 }] }] }, "LabelPlus_Next.Update": { "latest": "1.3.3", "releases": [ /* 同上 */ ] } } }