28 Commits
Author SHA1 Message Date
lbl 298c3965e2 chore: bump version to 2.0.2 2026-08-23 11:37:34 +08:00
lbl 619a5bcf18 feat(web): share network configs via QR code 2026-08-23 11:03:28 +08:00
lbl 7675a6868c fix(ci): restore FreeBSD and MIPS builds 2026-08-22 22:52:27 +08:00
lbl 70e584b37b chore(release): bump version to 2.0.1 2026-08-22 22:43:31 +08:00
lbl af4b5d9657 refactor(jni): remove legacy no_tun config field
fix(ui): clarify mapping exit description
2026-08-22 22:38:38 +08:00
lbl de0183139d feat: add TAP device mode and Ethernet interoperability 2026-08-22 21:47:49 +08:00
lbl 26a44e64bd build(web): build frontend UI automatically in build.rs
vnt-web/build.rs now runs the pnpm UI build when static/ is missing or
older than ui/src, so the embedded assets no longer need to be committed.
Set VNT_WEB_SKIP_UI_BUILD=1 to skip (a placeholder page is written).
Remove vnt-web/static from version control.
2026-08-22 04:12:46 +08:00
lbl 3e2274dfe5 fix(ui): simplify encryption password hint in config editor 2026-08-22 04:05:10 +08:00
lbl 53e092b63d refactor(ui): merge instances page into network dashboard
- Remove the redundant Instances page; its network detail and server
  connection sections now live in DashboardView below selectable
  instance cards
- Redirect legacy /instances and /general routes to /
- Add per-page subtitles to the header instead of a fixed caption
- Widen content container to 1700px for large screens
- Highlight online device count in green on the stats cards
2026-08-22 04:04:30 +08:00
lbl 60a4403f0e feat: add desktop updater and release automation 2026-08-22 10:00:24 +08:00
lbl da72670154 chore: update rand and resolve clippy warnings 2026-08-22 08:57:50 +08:00
lbl 2995cfcb26 fix(ui): refine web access and peer list 2026-08-22 08:52:25 +08:00
lbl 74c47bce69 feat: add outbound interface binding 2026-08-22 07:58:18 +08:00
lbl 55d47c5a1c feat: replace native select controls 2026-08-22 04:23:35 +08:00
lbl cd5b4431dc feat: add unified Tauri desktop client and secure web access 2026-08-22 04:09:44 +08:00
lbl 0ccd045e78 feat(vnt-web): 新增 /api/version,顶栏版本号不再依赖组网状态 2026-08-22 01:38:57 +08:00
lbl 39a4e60d39 feat(vnt-web): 配置变化提示与停止交互优化
- /api/info 新增 config_changed:与启动时的配置快照对比,启动后配置被修改(或文件缺失/解析失败)时实例卡片显示「配置发生变化」徽章,重启后自动消失
- 停止操作增加「停止中」中间态:徽章脉冲提示、按钮区禁用,实例真正停止后卡片渐隐消失,失败时自动恢复
- 停止/重启/移除确认弹窗优先显示配置名称,兜底文件名
2026-08-22 01:27:39 +08:00
lbl 7513465b61 refactor(vnt-web): 前端重构为 Vite+Vue3+Pinia 工程并重新设计 UI
- 单文件 index.html 拆分为 vnt-web/ui(pnpm+Vite+Vue3 SFC+Pinia+Tailwind v4),构建产物输出到 static/
- UI 重新设计:浅色简洁风(可切换深色模式)、顶部导航、新增总览仪表盘首页
- 自定义弹窗/toast/确认框替换全部原生 alert/confirm,交互与过渡统一
- 响应式布局:移动端汉堡导航,表格与卡片自适应
- 实例卡片移除日志按钮;启动组网默认选中第一个配置
2026-08-22 00:53:51 +08:00
lbl 292d54fbc3 feat(vnt-web): 支持同时启动多个组网配置
- 后端实例状态从全局单槽改为按配置文件名隔离的 HashMap,每个实例持有
  独立的状态机、启动日志与任务组管理器
- 启动/停止/重启/信息/对端/路由/启动状态接口均按 file_name 维度隔离,
  新增 GET /api/instances 实例列表与 DELETE /api/instance 移除已停止实例
- 启动前冲突检测:device_id 相同(同服务器同组网范围内)或 tunnel_port
  显式相同则拒绝启动
- vnt_current_config.txt 改为每行一个配置名,重启后自动恢复所有运行中实例
- 前端重做为多实例模型:实例卡片列表、按实例隔离的启动日志弹窗、
  peers/routes 顶部实例切换器、配置列表运行状态标记、已停止实例可移除
2026-08-21 21:31:48 +08:00
lbl 061135fb95 fix(vnt-web): save_config 强制 .toml 后缀
问题:list_configs 只列出 *.toml 文件(service_http.rs:812),而
save_config 对文件名不做后缀校验,可保存出列表中不可见、无法通过
Web 界面再次选择的配置文件。

修复:新增 normalize_config_file_name——无扩展名时自动补 .toml,已是
.toml 保持不变,其他扩展名直接拒绝并返回错误提示。

测试:新增 test_normalize_config_file_name 覆盖补后缀/保持不变/拒绝
.txt/.json 三种情况,cargo test -p vnt-web 4 个测试全部通过。
2026-08-21 03:11:14 +08:00
lbl ca72f2b3d4 修复 Web 状态机在启动中停止时卡死
- 启动任务(含注册重试循环)此前是裸 tokio::spawn,stop 打不断:
  服务器不可达时点击停止,状态永远卡在 Starting 或显示 Running 的死网络。
  现在保存 JoinHandle,stop/restart 时先 abort_start_task 中断它,
  defer 守卫负责把状态迁移到 Stopped
- 清理任务此前 spawn 在自己所等待的 task_group 里,形成自引用等待,
  网络自行停止时永不返回;改为在任务组外等待
- 顺带修复 TaskGroup::wait_all_stopped 的丢失唤醒竞态:
  notified() 先 enable 注册再检查条件
- 补充 Starting 状态停止迁移、任务自然结束唤醒两个测试
2026-08-20 22:21:54 +08:00
lbl bd79844849 修复 Web 静态资源目录穿越
static_handler 此前直接 join 未归一化的 URI 路径,
curl --path-as-is .../../../ 可读取进程权限内任意文件。
改为逐组件校验:仅允许 Normal/CurDir 组件,拒绝 ..、根路径、盘符。
补充路径校验单元测试。
2026-08-20 22:16:01 +08:00
lbl 7d481560e3 规范依赖管理并适配 rand 0.10
- tcp_ip 从 git 依赖切换为 crates.io 0.2(IpStackConfig 改用 builder)
- 公共依赖收拢到 workspace.dependencies 统一版本
- 移除 release profile 的 panic=abort(避免 vnt-jni 中止宿主 JVM)
- vnt-jni 升级 edition 2024(no_mangle 改为 unsafe(no_mangle))
- vnt-ipc 显式声明 tokio features
- 适配 rand 0.10:random_range 移至 RngExt,choose_multiple 改名 sample
- 修复 clippy 警告(type_complexity/collapsible_if/ptr_arg)
2026-08-20 20:58:07 +08:00
lbl 12f7eed8a5 记录具体路径的丢包率 2026-02-28 18:56:11 +08:00
lbl 2aa423062e 支持设置端口 2026-02-28 17:49:11 +08:00
lbl 5a31ad89f4 jni 2026-02-24 18:31:40 +08:00
lbl 4708ed2b16 注册失败时重试 2026-02-24 16:08:18 +08:00
lbl b4301a8106 v2 2026-02-10 18:20:39 +08:00