Skip to content

0.1.6

Choose a tag to compare

@Moowningstar Moowningstar released this 21 Oct 15:26
· 45 commits to main since this release

0.1.6

这一版把侧边栏的图从“能看”推进到“能定位”,同时补上 0.1.5 留下的可信度问题:测试不再依赖本机目录,图不再在打开面板时立刻请求,索引与当前 CLI 不一致时会明确警告。

新增

  • 侧边栏内联 3D 社区图:社区总览现在直接画在卡片里,用 Canvas 2D 做 3D 投影(不引入 three.js),可以旋转 Z 轴、滚轮缩放、悬停查看。按社区着色,标注代表文件和 #id,支持最短路径高亮(点「路径」后点两个社区),双击社区进入成员符号。
  • 展开为居中弹窗:卡片内保持紧凑;点「展开」打开居中弹窗,左侧是社区列表/搜索/路径/详情,右侧是同一份 3D 投影。弹窗不是全屏模式,关闭后回到卡片。
  • 延迟加载图:图卡片滚动到视口附近才发起请求(IntersectionObserver,rootMargin: 200px);未到达时显示“滚动到此处加载”,到达后不再重复请求。打开面板不再同步拉图。
  • 符号视图:新增 view=symbols 的全仓库符号投影,按文件顺序截断,卡片上可在「符号视图 / 社区视图」之间切换。社区视图仍是结构总览;符号视图用于查社区之外的符号,并明确标注截断。
  • 工作区聚合卡:工作区包含多个已索引项目时,在项目卡片之前增加一张聚合卡,汇总 manifest 里的文件/节点/边/社区/流程/embedding,并列出前 8 个项目与未索引仓库数量。单项目工作区不显示。
  • 刷新建议:陈旧度判断不再只给“需要/不需要刷新”,而是给出 无需刷新 / 增量刷新 / 重新分析 / 全量重建 / 初始化索引 / 无法判断 六档,并写明理由。规则包括:没有索引 → 初始化;索引与工作区不可比 → 无法判断;工作区未改但索引没有提交基线 → 无法判断;工作区变更多 → 重新分析;删除超过 50 个且超过一半 → 全量重建;其余 → 增量刷新。
  • 版本一致性警告:把索引记录里的 runnerIdentity.cliVersion 与当前 GitNexus CLI 对比;不一致时在「需要注意」里给出 version-mismatch 警告和两边版本号,并在「解析质量与溯源」里显示 索引/CLI 指标。没有任一侧时显示“未知”,不冒充一致。
  • CI 与可移植测试:新增 .github/workflows/ci.yml,Windows / Ubuntu × Node 22 / 24 跑 npm ci、npm run check、npm test。测试不再硬编码 D:\project\data-screen,改为临时 fixture;react、@deepseek-ai/schemastery、dsh-tools、cordis 进入 devDependencies,测试不再依赖本机 DSH 链接。
  • 面板错误边界:侧边栏面板外包 PanelBoundary。渲染异常时显示错误消息和组件栈,而不是整块黑屏;注册前还会检查关键组件是否真的存在,缺失时直接给出组件名。

修复

  • 重启后侧边栏黑屏:CoverageView 的 activityDays 状态原本声明在 report === null / 无索引提前返回之后。首次加载少执行一个 hook,数据回来后多执行一个,React 抛 #310,DSH 卸载整个右侧面板。现在状态移到所有 early return 之前,并加了回归测试。
  • 社区下拉框白底白字:原生 <select> 和 <option> 改用主题背景/前景色,并设置 colorScheme: 'dark',不再出现看不清选项的问题。
  • 删除放大/缩小按钮:保留滚轮缩放和「适配」;双击社区直接进入成员符号,交互更直接。
  • --skip-git 索引不再报“不是仓库”:readDelta 在没有 .git 时直接返回 comparable: false 和“没有提交基线,只能重新分析”,不再启动 git 并显示误导性的错误。
  • 维护区显示建议与理由:刷新建议会出现在维护卡片里;没有提交基线、没有索引等分支各自说明原因,而不是只给一个按钮。
  • 图卡片不再抢跑:见上面的延迟加载;切项目时仍会清掉上一项目的图。

验证

  • 398 engine + 60 plugin + 209 client = 667 passed, 0 failed。
  • npm run check(host / scripts / client 三套 tsconfig)通过;git diff --check 干净。
  • 实际重启 DSH 后侧边栏恢复;3D 卡片、社区下拉、双击下钻、展开弹窗均可见。
  • CI workflow 已加入仓库,但尚未在 GitHub 实际跑过;首次 push 后需要看 Windows/Linux 两条矩阵。

已知限制

  • 3D 卡片在 50+ 社区时仍偏小,自动标签最多 8 个;复杂仓库需要先旋转/滚轮拉近,标签才逐步出现。
  • 展开弹窗是居中对话框,不是无边框全屏;在很窄的侧边栏中仍以卡片为主。
  • 符号视图按文件顺序截断,不是按重要性排序;它回答“社区之外还有什么”,不替代完整图查询。
  • 工作区聚合只合并 manifest 统计,不是每个项目的完整 coverage 报告;要逐项对比仍需切换项目。
  • 工作区发现仍只向下、有界(12 层 / 4000 目录 / 2 秒),不列父仓库或兄弟目录。
  • --skip-git 索引没有提交基线、增量刷新和 Git 活动,只能重新分析。
  • 版本比较是精确字符串比较(不做 semver 语义化),因为不同 GitNexus 版本的存储格式确实可能不同。

npm: dsh-gitnexus-plus@0.1.6