Issue 40 Validation - ShaoClean/Alune GitHub Wiki
Issue #40:真实网络代理验收记录
- 日期:2026-09-28
- Issue:https://github.com/ShaoClean/Alune/issues/40
- PR:https://github.com/ShaoClean/Alune/pull/117
- 实现方案与历史原型
- 代码:
4408789cb5619ad478fea7f796fb030597f0a8a3,基于development@b2284c9 - 本机:macOS arm64、Node 25.5.0、Electron 44.2.0
本记录属于真实业务代码与受控网络验收。2026-09-17 的 15 种模拟状态、39 项原型检查与 9 张截图仍单独保留,不作为真实代理通过的依据。
本机自动验证
以下自动验证在合入最新 SSH 通道队列、共享密钥存储、访问令牌和外观配置功能后重新执行,退出码均为 0。
| 命令 | 实际结果 |
|---|---|
npm run desktop:build |
5 个 workspace 构建通过。 |
npm test -w server -- --ci --runInBand |
20 suites,200 tests 通过;包括 13 个代理持久化/安全存储用例。 |
npm test -w web |
158 tests 通过。 |
node --test packages/ssh-client/tests/*.test.cjs |
129 通过,2 个平台相关用例跳过,0 失败。 |
node --test packages/ssh-client/tests/proxy-transport.test.cjs apps/server/test/proxy.integration.cjs |
7 tests 通过;其中传输用例也包含在上行 SSH suite 中,不重复累加。 |
npm run test:proxy -w desktop |
实际 ElectronHttpExecutor + NsisUpdater + AppImageUpdater 的代理网络验证通过。 |
npm run desktop:test |
42 个桌面单测和桌面冒烟通过。 |
git diff --check 与修改文件格式检查 |
通过。 |
构建报告现有大包提示;Electron 报告 Node fs.F_OK 弃用提示。桌面冒烟会故意读取损坏的 workspace 配置并记录异常,以验证恢复路径;该场景和全流程均通过。
网络证据与行为
| 场景 | 证据与结果 |
|---|---|
| HTTP / HTTPS / SOCKS5 | 受控代理记录实际目标;三种协议都完成 HTTP 与 SSH 测试,并执行完整 HTTPS/SSH Git 场景。 |
| 认证与 DNS | 错误认证失败;代理认证头不进入目标 HTTP 服务;SOCKS5 使用域名请求,由代理解析。 |
| TLS 与无直连回退 | 不受信任的 HTTPS 代理被拒绝;代理拒绝或不可达时目标服务命中数不增加。HTTPS 代理认证其自身主机名,目标 HTTPS 独立校验证书。 |
| AI | 模型列表、连接测试、提交生成经过受控代理;生成使用真实服务接口和专用暂存内容。 |
| macOS 更新 | Release 元数据、SHA256SUMS、DMG 内容与 GitHub 到 release-assets 重定向经过代理,完整性校验通过。下载内容为不可安装的测试数据。 |
| Electron 更新 | NsisUpdater / AppImageUpdater 实际请求 Atom/YAML 元数据、包与重定向,验证 SHA-512;NSIS blockmap 请求后回退完整下载,AppImage 使用完整下载。未运行安装器。 |
| 新配置与已有请求 | 本机桥接已有隧道保持连通,新请求使用新配置;下一次 Electron 下载改用新代理且不复用旧代理隧道。 |
| SSH 生命周期 | 初次连接经过代理;丢失连接后业务触发重连保留旧 revision,页面仍待应用;显式重连应用新 revision;禁用也显示待重连。 |
| 远端 Git | 三种代理 × HTTPS/SSH remote × 主仓库/关联 Worktree,真实 fetch/pull/push 均通过;页面测试执行只读 ls-remote。 |
| 转发限制 | 允许回环时可用;禁止转发或强制通配监听时失败,监听释放而 SSH 仍可执行普通命令;断线释放远端端口。 |
| 配置与秘密 | 加密持久化、重载恢复、保留/替换/清除、版本冲突、损坏配置及密钥不可用均有断言;代理凭据不出现在远端命令或配置读取中。 |
| 配置隔离 | Git 命令覆盖原有仓库代理设置,但执行后原值不变;fixture 隔离全局/system Git 配置,没有修改用户全局配置。 |
| 任务保护 | 活动操作拒绝显式重连;SSH 队列断言覆盖排队、等待服务端打开、取消后待关闭的通道,全部结束后占用归零。 |
| 既有功能 | 桌面路由、SQLite、内部认证、沙箱/IPC、AI、本地 Git、历史/Diff、外观、自定义代码主题及重启恢复通过。 |
测试资产位于代码仓库的代理测试文件中。证书、私钥、账号和更新包均为公开 fixture;额外证书信任只在隔离测试子进程或 Electron 测试会话内设置,不更改系统信任或生产证书验证。
UI 人工验收
使用 ego-browser 操作真实构建的页面和隔离 Nest/SQLite/SSH/Git/代理 fixture。以下交互与截图在合入 b2284c9 前完成,代码内容对应本 PR 的代理 UI;截图基于 50cce92 开发基线,因此设置导航尚无上游新增“访问令牌”入口。合并后保留该入口,并重新完成构建和桌面冒烟;没有把旧截图声称为合并后的逐像素复验。
- 保存认证后仅显示“已保存”状态,真实 HTTP、SSH 和 Git 测试成功。
- 修改配置或测试目标后清除旧结果;未保存/过期配置不能测试。
- 离开提醒支持继续编辑、放弃、保存后离开;保存失败保留页面和草稿,Escape 返回编辑。
- 放弃恢复保存值;禁用保留凭据并使现有 SSH 待重连;重新启用和显式重连正常。
- 新密码显隐可由键盘触发;成功保存后离开到目标设置页面。
- 1440 / 1024 / 390 像素均无横向溢出,底部保存区可见;浅色和深色均完成视觉检查。
本功能为新增入口:实现前没有真实代理设置页。可参照 原型历史 比较既定布局;这些历史原型不是业务实现的“前”状态。下方为本次实际页面。

| 布局与状态 | 截图 |
|---|---|
| 1024 像素 | 查看 |
| 390 像素 | 查看 |
| 深色主题 | 查看 |
| 离开提醒 | 查看 |
截图中的服务器名、127.0.0.1 地址及端口均属于隔离 fixture;没有真实账号或代理密码。
GitHub Actions
推送验证运行:Ubuntu 22.04、macOS 14、Windows latest,Node 22.22.0,全部 10 个 job 通过;对应代码提交 4408789cb5619ad478fea7f796fb030597f0a8a3。独立的 commitlint 也通过。
| CI 类别 | 实际结果 |
|---|---|
| 网络代理 | Ubuntu / macOS / Windows 三平台全部通过,包括实际 Electron 更新下载测试。 |
| 单元测试 | desktop、web、server、ssh-client 全部通过。 |
| 本地 Git | Ubuntu / macOS / Windows 三平台全部通过。 |
PR 验证运行 的全部 10 个 job 及独立 commitlint 也通过。PR 最初创建为草稿,ShaoClean 于 2026-09-28 10:03:50 UTC 转为待审阅;保留当前状态,不自动合并。
Windows 的传输测试 4 项通过,3 个依赖 POSIX SSH/Git 的用例显式跳过;实际 Electron 更新下载测试通过。该 Windows job 仅证明代理传输和 Electron 更新栈的这些场景,不能证明 Windows 远端 Git 适配完成。Linux/macOS 的代理 job 包含完整受控 SSH/Git/AI/mac 更新场景。
尚未验收与合并边界
- Windows / Linux 实际打包应用的安装与升级;本次验证下载、重定向和校验,没有执行安装器或替换应用。
- Windows 远端 OpenSSH + Python 3 + PowerShell 的完整 Git 适配、命令长度及环境差异。
- macOS x64。
- 浏览器与独立服务分属不同设备的部署;页面说明和服务进程语义已实现,跨设备实测未运行。
- 企业 HTTPS 代理证书、不同 sshd 配置与真实仓库凭据的部署验收。
PR 使用 Refs #40。上述未验收项不能由本机受控 fixture 或历史模拟原型替代,Issue 保持打开。