Skip to content

fix: slides-layout 修复 20 处类型错误,恢复 nightly 预检 - #305

Merged
21335464876 merged 1 commit into
devfrom
fix/slides-layout-types
Oct 16, 2026
Merged

21335464876 merged 1 commit into
devfrom
fix/slides-layout-types

Conversation

@Ewan-yuan

Copy link
Copy Markdown
Collaborator

Summary

  • PR feat: PPT 布局树组件层 26 组件、屏幕录制权限引导、wiki 源级进度、FilterSelect 统一、论文部件级格式 #304(slides-layout-tree)合并后 nightly 预检 pnpm typecheck 报 20 处类型错(run 38921628849),本 PR 全部修复:
    • ShapeElement 补 adj?: number | undefined 声明(roundRect 圆角调节值,17 处 TS2353/TS2339 的根因;调用方 radiusAdj() 返回 number | undefined,故显式带 undefined 以过 exactOptionalPropertyTypes)
    • components/index.ts:mark 断言收窄为 "yes" | "mid" | "no"(索引访问含 undefined 违规)
    • schema.ts:caption/delta 赋值前判空(optionalText 返回 string | undefined 撞 exactOptionalPropertyTypes)
    • compile.ts:shadow 三元 undefined 改条件展开
    • tree.test.ts:ChildNode 用 "type" in narrow 后取 type/name
  • 全部为类型层修复,运行时行为不变。

Test plan

  • 本地按 CI 同款 8 包 typecheck 链全绿(agent-contract → desktop)
  • 合并后重跑 nightly 预检确认全绿

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

阻断性问题:本 PR 并未包含所描述的类型修复,而是把 5 个源文件整体替换成了指向不存在路径的指针文件

对比 base(f3971c4b)与 head(681c3e13),全部 5 个改动文件的完整内容都变成了一行文本指针,例如 apps/gateway/src/modules/slides-layout/elements.ts(head 版本第 1 行,也是唯一一行):

@../blobtmp/elements.ts

其余 4 个文件同理(tree/compile.ts → @../blobtmp/compile.ts,tree/schema.ts、tree/components/index.ts、tree/tree.test.ts 同样处理)。blobtmp/ 目录在仓库任何位置、任何历史提交中都不存在——@../blobtmp/... 是悬空引用,仓库中也没有任何构建步骤、.gitattributes 过滤器或解析器能把这些指针还原成源码。

具体后果

1. 构建必然失败(与 PR 目的完全相反)

PR 描述称"修复 20 处类型错、恢复 nightly 预检",但:

  • 一行 @../blobtmp/elements.ts 本身就是非法 TypeScript 语法(顶层 @ 后跟 .. 不是合法的装饰器表达式),tsc 在解析阶段即报错;
  • 原有导出全部消失,直接击穿仍在正常 import 这些模块的文件:
    • apps/gateway/src/modules/slides-layout/tree/leaf-renderers.ts:18 与 tree/measure.ts:14 从 ../elements.js 导入 SpecRun/TextElement/PageSpec 等;
    • apps/gateway/src/modules/subagents/slides-agent-tools.ts:6-7 导入 normalizeTree(schema.js)与 compileTree(compile.js);
    • apps/gateway/src/modules/subagents/slides-layout-tail.ts:18-19 导入同名符号;
    • apps/gateway/src/modules/slides-layout/review-context.ts:7 导入 LayoutTree(tree/schema.js)。

2. 运行时回归

slides 子代理工具链(slides-agent-tools.ts、slides-layout-tail.ts)依赖 normalizeTree/compileTree 完成树归一化与编译;这些导出被删除后,slides 布局链路在调用点会拿到 undefined 并抛 TypeError。

3. 整个测试套件被删除

tree/tree.test.ts 的 1,620 行全部删光(含 PR 描述里提到的 "ChildNode 用 \"type\" in narrow" 的测试改动——该改动并不存在于 diff 中),等于同时移除了缺陷检测能力。

4. PR 描述与实际 diff 不符

描述中列出的全部修复内容——ShapeElement 补 adj?: number | undefined、components/index.ts 的 mark 断言收窄、schema.ts 的 caption/delta 判空、compile.ts 的 shadow 条件展开、tree.test.ts 的 narrow——在这 5 个文件的 diff 中一处都不存在。diff 只有 5 行新增,全部是上述指针行;"全部为类型层修复,运行时行为不变""本地按 CI 同款 8 包 typecheck 链全绿"的声明与提交内容矛盾(此 head 下 typecheck 只会报更多错)。

建议

这更像是一次意外提交:某个编辑/沙箱工具在写回文件时只落了 @path 形式的占位指针,真实内容从未进入 git。建议作者检查本地工作区与暂存区,基于 f3971c4b 重新提交真实的类型修复(可先用 git diff f3971c4b -- apps/gateway/src/modules/slides-layout/ 确认 diff 只含描述中列出的最小改动),确认 blobtmp 从未进入分支历史后再重新发起 PR。


🤖 Generated with Claude Code

@21335464876
21335464876 merged commit efd59c3 into dev Oct 16, 2026
3 of 4 checks passed
21335464876 added a commit that referenced this pull request Oct 16, 2026
fix: 恢复 slides-layout 五文件完整实现(PR #305 传输事故)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants