-
Notifications
You must be signed in to change notification settings - Fork 0
Issue 5
2026-09-16 从 Issue 迁入的需求与方案快照,保留原始验收勾选状态;当前进度以关联 Issue / PR 为准。实现细节、验收证据和未验证项见上方记录。
- 发布基线:
v0.2.0,对应提交9c260f6。 - 开发基线:
development@83abc30。dev指development;当前分支相对 tag 新增 3 个提交,见差异。 - 本项状态:已关闭 / TODO Done;PR #11 已合并(
3709357)。实现与记录中的验证已完成,已在 development,尚未包含于 v0.2.0。
历史排查“查找 0.1.2 重装数据丢失原因”确认:当次已登记记录完整,并未被重装删除。首次 /api/repositories 请求约 30.009 秒超时,界面却显示“暂无已登记的仓库”;手动刷新约 5.57 秒后恢复,造成数据丢失的错觉。这些是一次排查中的观察值,不代表所有环境的性能基线。
发布基线 v0.2.0 仍将本地注册信息与远程 Git 状态绑定加载:后端读取 SQLite 后,逐个建立连接、查询状态,再返回整个列表。慢连接、离线主机或大型仓库会延迟列表展示,首次失败可能落入空列表提示。当前 development 已通过 PR #11 拆分加载并补齐错误反馈;以下保留原需求与已完成验收范围。
优先展示已登记仓库,使用户能够辨认和打开已有工作区;远程状态按需刷新、逐项反馈。明确区分“确实没有仓库”“尚未加载”“加载失败”和“状态尚未更新”,减少把网络问题误判为数据丢失的情况。
- 注册列表从本地数据库读取,返回过程不等待 SSH 或
git status。保留完整的仓库标识、所属连接、名称和路径,连接筛选继续在展示层处理。 - 将分支、改动、领先/落后等远程状态独立刷新;优先当前仓库和可见内容,对后台刷新限制并发、设置超时,避免单个慢仓库拖累全部。
- 每个仓库表达状态加载中、成功、失败及旧数据状态;未知状态不能显示为“干净”或“无分支”。刷新失败时保留上次有效数据,并显示更新时间或陈旧提示。
- 列表首载失败展示错误与重试入口;刷新失败保留已有列表。重复点击刷新合并请求或取消旧请求,防止晚到响应覆盖新结果。
- 保持扫描、添加、移除、筛选及工作区排序行为。此次优化不包含数据库迁移或重新登记仓库流程。
当前 development 的实现入口:
-
RepositoryService.list只返回 SQLite 登记信息;同文件的getStatus独立执行有时限的 SSH/Git 状态读取,并合并同仓库的并行请求。 -
repositoryStore分离列表错误与按仓库保存的状态、错误、时间戳;调度器限制并发并优先当前工作区。 -
RepositoriesPage、RepositoryStatusIndicator和useRepositoryStatus展示首载失败、未知、刷新中、失败及旧缓存;API使用独立状态请求时限。
- 阻塞或禁用所有远程连接时,已登记列表仍可正常返回并展示,列表接口不调用远程状态查询。
- 一个仓库状态查询超时,其他仓库仍能独立完成刷新并显示结果。
- 首载失败展示明确错误和重试入口;只有成功取得注册列表后,才显示真实空列表或筛选无匹配提示。
- 状态尚未取得、状态失败和过期缓存有可辨认反馈;刷新失败不清空已展示的注册信息。
- 恢复连接后可重试成功;重复刷新、切换仓库及移除仓库时,过期响应不会污染当前数据或重新加入已删除条目。
- 列表失败、远程状态失败或局部状态响应均不会清空工作区排序和折叠偏好。
- 记录改动前后“注册列表可见时间”和“远程状态完成时间”,附脱敏结果及测试条件。
使用隔离测试数据库与模拟 SSH/Git,覆盖空注册表、多连接、慢连接、拒绝连接、状态查询异常和网络恢复。为“返回注册表不触发 SSH”及单项失败隔离增加服务层验证;前端覆盖首次失败、已有数据刷新失败、筛选无匹配、连续刷新和请求乱序。用可重复的数据量对比首屏耗时,再执行一次桌面端冷启动与重试冒烟验证。已在 PR #11 中按上述方案完成隔离测试、模拟故障与性能对比,并完成 macOS arm64 桌面冷加载及重试冒烟;具体环境、原始数据和未验证的平台见下方实现进展。
当前策略已落地:缓存 60 秒,总并发最多 3 个、后台最多 2 个;服务端超时 10 秒、客户端 12 秒,失败后手动重试。状态异步化存在短暂滞后,界面保留旧状态并显示时间或过期提示。后续仍需按真实网络与仓库规模复核体验,不能把模拟性能结果当作通用承诺。
workspaceStore 仍仅在成功取得完整、未筛选的注册表后对齐偏好,局部状态响应不得清理排序或折叠数据。
关联历史排查标题:查找 0.1.2 重装数据丢失原因。当前代码链接统一固定到 development@83abc30;原验证记录中的基线 9c260f6、截图和测量数据保留其实际测试时间与环境,不改写为本次复测结果。
- 实现 PR:#11,已合并到
development(3709357);Issue 已关闭,TODO 为 Done。改动晚于 v0.2.0,当前公开安装包尚未包含此优化。 - 验收标准 7 项已验证完成;相关自动测试共 61 项通过,另完成浏览器验收与桌面两阶段冒烟。远程故障及性能使用隔离数据库和模拟 SSH/Git,桌面运行验证为 macOS arm64,未执行 Windows/Linux 桌面冒烟。
- 已确定刷新策略:后台最多 2 个并发、总上限 3 个,当前工作区优先;缓存有效期 60 秒;服务端超时 10 秒、客户端 12 秒;失败不自动重试,保留旧状态并提供手动重试。
- 24 个虚构仓库、3 次测量中位数:注册列表可见时间 2,004.00 → 211.10 ms,全部远程状态完成时间 1,766.83 → 924.86 ms。结果仅适用于记录中的模拟条件。
- 验证记录、脱敏截图、原始数据及复现命令。