From 2cbe8b457ff066e3b11efe06a0d4d9fc4a34de45 Mon Sep 17 00:00:00 2001 From: Jesse Zhang <101612750+Nagi-ovo@users.noreply.github.com> Date: Fri, 19 Jun 2026 00:54:59 +0100 Subject: [PATCH] Document Opus 4.7 skeleton-watch exploded-view bug in run note Clicking Exploded View barely moves anything: animate() does const t = clock.getElapsedTime() then const dt = clock.getDelta(). getElapsedTime() already consumes the frame delta and resets oldTime, so the following getDelta() returns ~0 and dt is ~0 every frame, leaving the explode lerp (and crystal offset) effectively frozen. Gear rotations use t directly so the movement still runs. Bug documented, not fixed. Co-Authored-By: Claude Opus 4.8 (1M context) --- models/claude-opus-4-7-cc.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/claude-opus-4-7-cc.json b/models/claude-opus-4-7-cc.json index 406af91..72599a8 100644 --- a/models/claude-opus-4-7-cc.json +++ b/models/claude-opus-4-7-cc.json @@ -22,8 +22,8 @@ }, "skeleton-watch": { "note": { - "zh": "在 Claude Code 中以 Claude Opus 4.7(Max 思考配额)一次生成;本页为未经修改的原始产出。", - "en": "Generated in one shot by Claude Opus 4.7 (Max effort) inside Claude Code; unmodified original output." + "zh": "在 Claude Code 中以 Claude Opus 4.7(Max 思考配额)一次生成;本页为未经修改的原始产出。已知 bug(未修复):点击「Exploded View」分解视图几乎没有反应,零件始终保持组装状态。位置在 animate()(933–934 行):先 const t = clock.getElapsedTime() 再 const dt = Math.min(clock.getDelta(), 0.05)。THREE.Clock 的 getElapsedTime() 内部已经调用过一次 getDelta() 并把 oldTime 重置为当前时刻,因此紧随其后的 getDelta() 返回的是这两行之间的间隔,几乎为 0,导致每帧 dt≈0。分解动画靠 explodeAmount += (explodeTarget - explodeAmount) * min(1, dt*4) 推进,dt≈0 时几乎不增长(实测点击后 2 秒仅到 0.0008,需数分钟才能展开),所以看起来失效;水晶玻璃位移同理。齿轮转动用的是 t 不受影响,机芯照常运转。", + "en": "Generated in one shot by Claude Opus 4.7 (Max effort) inside Claude Code; unmodified original output. Known bug (not fixed): clicking 'Exploded View' does almost nothing — the parts stay assembled. Located in animate() (lines 933-934): const t = clock.getElapsedTime() followed by const dt = Math.min(clock.getDelta(), 0.05). THREE.Clock.getElapsedTime() internally already calls getDelta() and resets oldTime to now, so the getDelta() on the next line returns the gap between those two lines — effectively 0 — making dt≈0 every frame. The explode is driven by explodeAmount += (explodeTarget - explodeAmount) * min(1, dt*4), which barely advances when dt≈0 (measured ~0.0008 two seconds after the click; it would take minutes to open), so it looks broken; the crystal offset fails the same way. The gear rotations use t directly and are unaffected, so the movement keeps running." }, "contributor": "Nagi-ovo" }