Review notes for site items S1–S5

This commit is contained in:
ZacharyZhang-NY committed 2026-10-09 00:37:25 -04:00
1 parent 4d8bd05633
commit ff92f26af0
11 files changed
+59

No files matched your search

+1
View File
@@ -0,0 +1 @@
PASS
+5
View File
@@ -0,0 +1,5 @@
FAIL
site/src/iso.css:41(同文件:51)— 侧面加宽 1px 后在两面的公共棱线上产生贯穿高度的条纹,违反无接缝要求。复现:`pnpm build` 成功后用 `pnpm preview` 打开当前页面,Chromium 156、1200×800、DPR 1 或 2,观察最高灰色积木的中央竖棱。DPR 2 截图在物理坐标 y=600、x=1198..1201 的红色通道依次为 208、181、215、188;左右面内部值分别为 215、181,交界出现反复跳变的深浅条纹。DPR 1 同样出现条纹。修复方向:让各面共享准确边界,处理可见棱线的面重叠与抗锯齿拼接,并通过两种 DPR 的实际截图验证接缝消失。
site/src/iso.ts:14(同文件:34)— 两处注释均为 11 个英文词,超过十词上限。复现:按空白分词,`Builds a block: top, left and right faces of one colour.` 和 `The ground: a stage w by d cells that holds blocks.` 各计 11 词。修复方向:删除非必要注释,或将各注释缩至十词以内。
+3
View File
@@ -0,0 +1,3 @@
FAIL
site/src/iso.ts:56(同文件:75–76)— 绘制排序给屏幕投影互不重叠的积木也建立先后关系,形成伪循环,使合法布局整页空白。复现:保留 main.ts 的桌面,将其后三块替换为 A={x:0,y:2,z:0.5,w:1,d:1,h:1}、B={x:1,y:0,z:0.5,w:2,d:1,h:1}、C={x:0,y:1,z:0.5,w:2,d:1,h:1},各自保留原 tone。三块实体互不相交;A 与 B 的屏幕横向范围分别为 [-72.75,-24.25]、[0,72.75]。排序仍强加 A→B,并结合 B→C、C→A 形成循环。临时副本 pnpm build 成功,pnpm preview 下 Chromium 156、1200×800、DPR 1/2 均抛出 `blocks overlap; no drawing order`,#app 中积木数为 0;按桌面、B、C、A 绘制可正常呈现该布局。修复方向:依据实际投影重叠及遮挡建立排序约束,避免给互不遮挡的对象建立依赖,并添加该布局的排序与渲染回归测试。
+3
View File
@@ -0,0 +1,3 @@
FAIL
site/test/order.test.ts:12 — 新增注释超过十词上限。复现:将 `C (index 3) covers A (index 1) only from behind A.` 按空白分词,得到 11 词,违反 agents.md 与 site/TASKS.md 的注释长度要求。修复方向:删除该注释,或缩至十词以内。
+3
View File
@@ -0,0 +1,3 @@
FAIL
tests/scripts/comments.py:68 — 新增的 site TypeScript/CSS 扫描漏检跨行块注释:跨行检测的后缀列表仅含 .c、.h、.js,.ts 与 .css 的单行正则也匹配不到跨行块。复现:在独立临时根目录的 site/src/probe.ts 或 site/src/probe.css 写入 `/* A comment\n spanning lines. */\n`(将 \n 写为真实换行),运行 `python3 tests/scripts/comments.py <临时根目录>`;两种后缀均退出 0,并声称每条注释只有一行,违反 agents.md 与 site/TASKS.md 的注释规则。同样运行 comments-rules.sh 仍通过,现有测试未覆盖这两种新增后缀。修复方向:将 .ts、.css 纳入跨行块检测,并补上两种后缀的失败回归用例。
+5
View File
@@ -0,0 +1,5 @@
FAIL
tests/scripts/comments.py:68 — 本轮新增的 TS/CSS 跨行检查把字符串里的 `/*` 当作注释起点,拒绝合法源码。复现:在独立临时根目录的 `site/src/probe.ts` 写入单行 `const glob = "/*.css";`,运行 `python3 tests/scripts/comments.py <临时根目录>`,退出 1,报 `comment runs past one line`;改为 `site/src/probe.css`,写入单行 `a::after { content: "/*"; }`,同样退出 1。两份源码均无注释;现有 `comments-rules.sh` 仍通过,缺少字符串回归用例。修复方向:在识别块注释起点时正确跳过字符串,并为 TS/CSS 的字符串内容补通过用例,同时保留第 4 轮真实跨行注释的失败用例。
tests/scripts/comments.py:37 — TS/CSS 的单行注释正则要求注释位于整行开头,漏检代码尾部的超长注释(CSS 同文件:38)。复现:在独立临时根目录的 `site/src/probe.ts` 写入 `const a = 1; // One two three four five six seven eight nine ten eleven.`,运行 `python3 tests/scripts/comments.py <临时根目录>`,退出 0 并声称每条注释均在十词以内;改为 `site/src/probe.css`,写入 `a { color: red; } /* One two three four five six seven eight nine ten eleven. */`,同样退出 0。两条注释各有十一词,违反 agents.md 与 site/TASKS.md;现有回归测试只检查独占整行的超长 TS/CSS 注释。修复方向:提取代码尾部的实际注释并核对词数,补上两种后缀的失败回归用例。
+7
View File
@@ -0,0 +1,7 @@
FAIL
site/src/model.ts:45 — ElyTable 的 PDF 出口道路与建筑之间留有断点,违反 S3 用道路表达真实连接的要求。最后一行单元格止于 y=3.9,出口从 y=4 开始,相距 0.1 格。正常加载并等动画完成后,连通性探针得出 ElyTable→ElyPDF=false;Chromium 在间隙对应的屏幕坐标 (717.33, 550.02) 命中桌面顶面 rgb(230,230,226),道路顶面为 rgb(61,127,229),渲染中也存在露出的桌面。修复方向:让出口与实际单元格边界相接,并保留到 PDF 主路的连续连接。
site/src/model.ts:43 — 道路缺少 ElyMark 导出 PDF 后查看的连接。PRD MARK-11、§16、§19.3 明确 Markdown 的 PDF 输出与后续查看,S3 要求导出→ElyPDF 的真实连接由道路表示。正常加载后,ElyMark 仅接触第 5 段道路;该段连接 ElyTree,与通往 ElyPDF 的道路网络隔离,连通性探针得出 ElyMark→ElyPDF=false,完成态渲染也显示两段独立道路。修复方向:补齐 ElyMark 输出到 ElyPDF 的连续道路,同时保留 ElyMark→ElyTree 的连接。
site/test/model.test.ts:25 — 六应用断言只核对名字,其余测试也未验证应用建筑非空与必需道路连通,S3 的核心模型缺失仍会通过验收。在隔离副本中分别给 roads 数组与 show 数组追加 .slice(0, 0),保留现有声明及调用;两种变异均通过 pnpm build 和全部 8 项测试,分别产出零道路、五座应用建筑的模型。原始版本独立构建及 8 项测试也通过。修复方向:断言六个应用各有实际建筑,并核对 ElyMark→ElyTree 及 Doc/Table/Show/Mark→ElyPDF 的道路连续性,让上述删除和断路变异触发失败。小型验证日志:/tmp/ely-s3-r1.log。
+1
View File
@@ -0,0 +1 @@
PASS
+13
View File
@@ -0,0 +1,13 @@
FAIL
site/src/touch.ts:35 — 鼠标移出会清掉仍然有效的键盘焦点反馈,违反 S4 的“焦点可见”。复现:1280×1000、减少动效开启,Tab 聚焦 ElyDoc,再将鼠标移入该建筑并移出;activeElement 仍为 ElyDoc 链接,caption opacity 已变为 0,四个积木的 lifted 全被移除。style.css:63 的链接本身裁成 1×1 像素,截图确认此时全部可见焦点反馈消失。修复方向:分别维护悬停与聚焦状态,以两者的有效状态共同决定显示,并保持聚焦建筑的可见标识。
site/src/touch.ts:34 — 上浮直接改变负责悬停判定的积木位置,底缘进入会触发循环进入、离开,违反 S4 的稳定悬停上浮。复现:1280×1000,从模型外移动到 ElyDoc 底缘 (568.57, 510.96) 后保持鼠标静止;普通动效模式下 600 毫秒内记录到 17 次交替 pointerenter/pointerleave,建筑与名称持续闪动。减少动效模式下则立即触发一次进入和离开,建筑回到原位、名称隐藏,鼠标沿底缘轻移会重复该过程。修复方向:使用位置稳定的命中区域判定整座建筑的悬停,将视觉位移与命中区域分开。
site/src/touch.ts:10 — --step 使用 UNIT / 2,悬停及鼠标按压仅移动半格,违反 S4 的“上浮一格、下沉一格”。iso.ts 定义 UNIT=28,垂直高度同用这一单位。复现:1280×1000、减少动效开启,ElyDoc 积木上浮前后的实际 bounding rect 高度位置差为 14.00598 像素,同一 SVG 比例下一格为 28.01197 像素;鼠标按下只回移这半格。修复方向:交互位移使用模型统一的一格高度,并以实际渲染位移验证。
site/src/touch.ts:44 — Enter 的按压状态被同一次 keydown 产生的原生 click 立即清除,键盘操作没有可见下沉反馈。复现:Tab 聚焦 ElyDoc 后按住 Enter;location.hash 已为 #elydoc,pressed 数量为 0,实际 bounding rect 与聚焦时完全相同,下沉位移为 0。修复方向:让键盘按压状态跟随实际按下与释放,导航点击与视觉按压的结束分别处理,失焦时清理状态。
site/src/touch.ts:37 — 每次 pointerup 都直接导航,缺少有效主按钮按压的判定,会把右键及外部拖入后的释放当成激活。复现:地址 hash 为空时右键 ElyDoc,hash 变为 #elydoc;从 (10,10) 按住鼠标主键,拖入 ElyDoc 的 (580,445) 后释放,同样变为 #elydoc,尽管按压起点位于建筑外。修复方向:仅由在该建筑开始的有效主按钮点击激活,取消或离开时结束手势,并保留键盘链接激活。
site/src/main.ts:38 — S4 交互入口缺少回归测试,当前测试无法发现整个功能被移除。本轮在临时副本独立执行构建及测试,基线构建通过、10 项测试通过;随后删除 touch 的 import 与此处调用,六个链接、悬停、按压及焦点反馈全部消失,构建与同一 10 项测试仍全部通过。现有两份测试仅导入 iso.ts/model.ts。修复方向:增加覆盖实际交互入口、鼠标与键盘状态转换、渲染位移和减少动效的测试,使移除入口及上述缺陷的变异触发失败。
+5
View File
@@ -0,0 +1,5 @@
FAIL
site/src/touch.ts:65 — 静止命中区域同时包含原位和上浮后的轮廓,且全部追加在可见积木前方,扩大的透明区域会覆盖相邻建筑,导致悬停及点击激活错误应用。复现:1280×1000,将鼠标从模型外移动到 (635,468);该点实际绘制的是 ElyDoc 的页面侧面,命中元素却属于 ElyTable,名称显示 ElyTable,主键点击后 hash 变为 #elytable。减少动效模式和普通模式生长结束后均复现。修复方向:根据实际可见建筑的归属裁剪或仲裁重叠命中区域,同时保持悬停区域的位置稳定,并增加相邻建筑边缘的点击回归。
site/e2e/touch.spec.ts:44 — 名称显隐断言仅检查 .caption.shown 的文字,无法验证实际显示,违反以渲染结果验收的要求。复现:临时副本将 style.css 的 .caption.shown opacity 从 1 改为 0,构建及全部 5 项端到端测试仍通过;Tab 聚焦 ElyDoc 后名称的实际 opacity 为 0,鼠标悬停时名称也始终透明。第 49、63 行使用同样的弱断言。修复方向:验证名称的实际渲染可见性,并让名称完全透明的变异触发失败。
+13
View File
@@ -0,0 +1,13 @@
FAIL
site/src/main.ts:53 — “Source code / 源代码”指向仓库默认页,缺少 v0.1.0 对应源码包入口,违反 S7 与 PRD §21.3。复现:在本地构建或线上点击页脚源码链接,目标为 `https://github.com/ZacharyZhang-NY/ElyOffice`;该版本实际已发布 `ElyOffice-0.1.0-source.tar.gz` 和 `ElyOffice-0.1.0-upstream-source.tar.gz`。修复方向:提供这两个对应版本源码包的下载入口。
site/src/text.ts:18 — 英文与第 38 行中文安装说明统一要求 Control 点按应用后选择 Open,该操作无法在 macOS 15 及更新版本覆盖 Gatekeeper,违反 S7 的可执行安装说明要求。失败场景:用户通过浏览器下载未经公证的 DMG,在 macOS Sequoia 上按页面说明首次打开,系统继续阻止启动。证据:[Apple 官方说明](https://developer.apple.com/news/?id=saqachfa)明确要求通过 System Settings > Privacy & Security 授权。修复方向:补齐受支持系统版本对应的“隐私与安全性 → 仍要打开”步骤,并同步两种语言。
site/src/style.css:38 — 链接使用 `#3d7fe5`,页面背景为 `#fbfbfa`,对比度仅为 3.77985:1,违反 S8 与 PRD §20.3 的 4.5:1 要求。复现:悬停任一区域,使 Download 完全显示;浏览器计算样式为 17px、字重 400、opacity 1,前景 `rgb(61, 127, 229)`、背景 `rgb(251, 251, 250)`。页脚六个下载链接与 GitHub 链接同样受影响。修复方向:调整链接文字颜色,使实际背景上的常规文字对比度达到 4.5:1,并加入回归断言。
site/src/touch.ts:89 — 名称位置保存为一次计算的像素坐标,模型随窗口缩放后坐标保留旧值,破坏 S8 的手机宽度无横向滚动要求。复现:以 760×1000、减少动效模式打开页面,聚焦 `.doors a` 的第 4 项 ElyPDF,再将视口设为 390×844;名称的左右边界为 495.07 与 542.68,`document.documentElement.scrollWidth` 为 543,页面出现横向滚动。1280→320 同样复现。修复方向:模型尺寸变化时同步更新名称位置,并覆盖保留键盘焦点时的窄屏缩放场景。
site/e2e/touch.spec.ts:47 — 现有测试只监听 `pageerror`,且六项用例覆盖首屏交互,缺少 S5–S8 新路径的故障断言。复现:在隔离副本中将语言按钮处理改为 `lang = "en"`、两处发布版本改为不存在的 `missing-s5-review`、截图目录改为 `/missing-shots/`;语言切换失效、六张截图返回 404、全部 DMG 地址失效时,`pnpm e2e` 仍为 6 passed。原始构建通过,单测 10 passed,最新原始端到端测试 6 passed。修复方向:加入语言切换后的实际文字和语言属性、截图成功加载、对应版本下载与源码入口、窄屏布局及对比度断言,并捕获控制台和资源加载错误。
site/e2e/touch.spec.ts:16 — 注释 `A point where the building is hit; low takes the lowest.` 共 11 个词,超过 agents.md 的单行十词限制。复现:去掉注释定界符与格式标记后按空白分词,得到 11;现有注释检查器的扫描范围遗漏 `site/e2e`,所以常规检查通过。修复方向:将该注释缩至十词以内,并让注释检查覆盖范围内的端到端源码。