Skip to content

Commit 04dc9de

Browse files
committed
docs(motion): 清扫剩余十处动效注释标签
1 parent 9c1f615 commit 04dc9de

8 files changed

Lines changed: 38 additions & 18 deletions

File tree

‎app/src/components/review/useRevealMemory.ts‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,11 @@ import { SHIFT_MAX_PX } from "../../motion/shift";
5656
import { toneEase } from "../../motion/tone";
5757
import type { TextTone } from "../../ui/primitives/Text";
5858
// 🔴 **只取类型**(`import type` 不进产物、也不建静态边 —— `engine.guard.test.ts` 的遍历正则显式排除它):
59-
// `controls.ts` 内部有静态 `import { gsap } from "./engine"` ⇒ 它**只许经 `await import()` 到达**(R41.3 /
60-
// §三十四 #23;判据 = 闭包交集)。静态引入它会把 engine 拉进首屏静态闭包,`vendor-gsap` 懒 chunk 承诺落空。
59+
// `controls.ts` 自己静态 `import { gsap } from "./engine"` ⇒ **不许从「首屏静态可达」的模块静态引入
60+
// 它**(旧措辞「只许经 `await import()` 到达」**过宽**,R60.1 更正 R41.3 的适用范围;**惰性视图 /
61+
// 注册表驱动静态引入是安全的**)。本件在惰性链上(`ReviewSessionPanel` ← `ReviewPage` 经
62+
// `shell/navRegistry.ts:27` 的 `lazy()`)⇒ 今天仍只取类型 + 动态 `import()`(**形态不变**;首屏模块
63+
// 一旦静态取值引入它,`engine.guard.test.ts` 的闭包交集会红 —— 不是静默洞)。
6164
import type { Controllable, startControllable } from "../../motion/controls";
6265

6366
/** 出口的 vars 类型别名(`gsap.TweenVars` 的同义表达 —— 不必 import gsap 命名空间)。 */

‎app/src/components/review/useScaleGrowth.ts‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@ import { useEffect, useRef, type RefObject } from "react";
3333
import { DURATION_TOKENS, type DurationTokenName } from "../../ui/tokens.gen";
3434
import { useMotionIntensity, type MotionIntensity } from "../../motion/intensity";
3535
import { toneEase } from "../../motion/tone";
36-
// 🔴 **只取类型**:`controls.ts` 内部有静态 `import { gsap } from "./engine"` ⇒ 它只许经 `await import()`
37-
// **到达**(R41.3 / §三十四 #23;判据 = `engine.guard.test.ts` 的闭包交集)。`import type` 不进产物、也不
38-
// 建静态边(守卫的正则显式排除它)⇒ 下面的动态 import 是唯一运行时入口。
36+
// 🔴 **只取类型**:`controls.ts` 自己静态 `import { gsap } from "./engine"` ⇒ **不许从「首屏静态可达」的
37+
// 模块静态引入它**(旧措辞「它只许经 `await import()` 到达」**过宽**,R60.1 更正 R41.3 的适用范围;
38+
// **惰性视图 / 注册表驱动静态引入是安全的**)。本件在惰性链上(`ReviewSessionPanel` ← `ReviewPage`
39+
// 经 `shell/navRegistry.ts:27` 的 `lazy()`,T35c 实测)⇒ 今天仍只取类型(`import type` 不进产物、也不建
40+
// 静态边 —— 守卫的正则显式排除它)+ 下面的动态 `import()` 作唯一运行时入口(**形态不变**)。
3941
import type { Controllable } from "../../motion/controls";
4042
import { TICK_DAY_MAX_PX, TICK_NONE_PX, tickHeight } from "./DueScale";
4143

‎app/src/components/session-detail/SessionRawView.tsx‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
* 合法档 —— 规格 §4.2 字阶下界是 12px)· `fontSize: 12`(术语表折叠块)·
4040
* `borderRadius: 8`(= `radiusScale.panel` 档)· `background: "#fafafa"`(**未迁移**:
4141
* `#fafafa`/`#f8fafc` 与 token 表**零碰撞**且是**全站既有**底色,本仓 9 处同族写法
42-
* —— 只改会话侧会造出跨面板不一致,登记给批 6/7 的底色收敛)· `#111827`/`#f0fdfa`
42+
* —— 只改会话侧会造出跨面板不一致 ⇒ 🔴 **底色收敛批 6 未交付**(批 6 计划全文「底色收敛」
43+
* **0 命中**,T35c 实测;批 7 尚无计划文件)⇒ **去向批 7/8**(仍未排期))· `#111827`/`#f0fdfa`
4344
* 等**逐字继承自原面板、未被我改写**且**不在任何棘轮集合内**的字面量。⇒ 五类棘轮
4445
* (圆角 / 字号 / 弱化灰 / 卡片边框 / 三红)在本件全 0 命中。
4546
*/

‎app/src/components/session-detail/useRevealChoreography.ts‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ import { SHIFT_MAX_PX, clampShift } from "../../motion/shift";
5252
import { toneEase } from "../../motion/tone";
5353
import { DURATION_TOKENS } from "../../ui/tokens.gen";
5454
import type { DurationTokenName } from "../../ui/tokens.gen";
55-
// 🔴 **只取类型**:`controls.ts` 只许经 `await import()` **到达**(见文件头;判据 = `engine.guard.test.ts`)。
55+
// 🔴 **只取类型**:`controls.ts` **不许被「首屏静态可达」的模块静态引入**(旧措辞「只许经 `await import()`
56+
// 到达」**过宽**,R60.1 更正 R41.3 的适用范围;**惰性视图 / 注册表驱动静态引入是安全的**)。本件正是
57+
// 后者:`SessionRawView` 经 `SessionViewHost.tsx:98` 的 `lazy()` 惰性到达(T35c 实测;判据 = 闭包交集)。
5658
import type { Controllable } from "../../motion/controls";
5759

5860
/** 段落锚点选择器 —— 视图侧只写 `data-seg-id`(R8.5 的结构锚点;本件不碰类名)。 */

‎app/src/shell/usePhaseFreeze.ts‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@
1414
* 🔴 **起始态被持有**(R5.3):`freeze` 是 React **state**(波形按它渲染),**不是** tween 的进度读回 ——
1515
* 中途反向时新时间线**从当前持有值接着走**(不回起点、不跳终值);每帧由 `onUpdate` 从**已写进 DOM 的**
1616
* 墨度反解回持有值。🔴 **可中断**:先 `interrupt()` 收尸在飞的旧时间线、再起新的(不排队)。
17-
* 🔴 `controls.ts` **只许经 `await import()` 到达**(R41.3 / §三十四 #23):它静态 `import "./engine"` ⇒
18-
* 静态引入会把 GSAP 拉进首屏静态闭包(`engine.guard.test.ts` 的闭包交集会红);`import type` 不建边。
17+
* 🔴 `controls.ts` **不许被「首屏静态可达」的模块静态引入**(R60.1 更正 R41.3 的适用范围;**惰性视图 /
18+
* 注册表驱动静态引入是安全的**)。它静态 `import "./engine"` ⇒ 而本件**在**首屏静态闭包内
19+
* (`shell/LiveBar.tsx:44` 静态引入本件;T35c 用 `engine.guard.test.ts` 的仪器实测 89 文件闭包含本件)
20+
* ⇒ 本件**静态取值**引入它会让那条闭包交集判据当场红;故只取类型(`import type` 不建边)+ 动态 `import()`。
1921
* 🔴 **唯一 GSAP 目标**(= 墨度层):出口的 `interrupt()` 只 kill 它那**一个** target(`controls.ts` 头部
2022
* 逐字:多目标会留下够不着的孤儿 tween)⇒ 波形走 React 重渲染(32 个 div、一个 220/500ms 窗口)。
2123
* 🔴 三档(R35.4:出口**不**内置档位分支):`eco` = §8.5「编排层直接跳终态」(不建 timeline)·
@@ -34,7 +36,9 @@ import type { DurationTokenName } from "../ui/tokens.gen";
3436
import { useMotionIntensity } from "../motion/intensity";
3537
import type { MotionIntensity } from "../motion/intensity";
3638
import { toneEase } from "../motion/tone";
37-
// 🔴 **只取类型**:`controls.ts` 只许经 `await import()` **到达**(见文件头;判据 = `engine.guard.test.ts`)。
39+
// 🔴 **只取类型**:`controls.ts` **不许被「首屏静态可达」的模块静态引入**(R60.1;**惰性视图静态引入它
40+
// 是安全的** —— 但见文件头:**本件在该闭包内** ⇒ 本件的静态取值边会红;判据 = 闭包交集)。`import type`
41+
// 不建边 ⇒ 运行时入口只有下面的动态 `import()`(**形态不变**)。
3842
import type { Controllable } from "../motion/controls";
3943
import type { ShellPhase } from "./shellPhase";
4044

‎app/src/ui/primitives/ViewSwitcher.css‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222
*
2323
* ★ 响应层接缝(规格 §8.6.1 第 3 条;C14① 逐字要求覆盖):三个属性各自**单属性、无时序、
2424
* `var(--ed-dur-micro, 120ms)`** —— 下一个输入直接接管当前过渡,不排队。批 6 的三档强度 /
25-
* 双基调 / GSAP 不在本文件(B9:本批交付的是结构与内容,手感在批 6)。
25+
* 双基调 / GSAP **至今不在本文件**(B9:本批交付的是结构与内容)。🔴 批 6 **已收口**(纲领 =
26+
* `docs/standards/motion.md` + `ADR-035`),本件**零改动**(`git log` 只有批 5 的 `afd35439`)——
27+
* 段控件的「手感」就是上面那条单属性过渡(§8.6.1 第 3 条要的响应层接缝,已覆盖),不欠批 6;
28+
* 且 `ui/primitives/ViewSwitcher.tsx` **在首屏静态闭包内**(T35c 实测)⇒ GSAP 编排不许进本件。
2629
*
2730
* 边界(与 `Button.css` 同口径):
2831
* ① 零颜色字面量(`style-seams.test.ts` 守卫①扫**全部** `primitives/*.css`)· 不写 `z-index`;

‎app/src/views/session/SessionProofView.tsx‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,10 @@
5252
* 副作用:无(纯函数式渲染;无 I/O、无订阅、无定时器、无全局单例、无模块级可变状态)。
5353
* 边界:① `detail.screens` 为空 ⇒ 整块换成 `EmptyState`(根 `data-testid` 仍在,形态可判);
5454
* ② 某张印张区间内无重叠段 ⇒ 正文区为空,但印张本身**照常渲染**(印张的语义是「这一屏」,
55-
* 不是「这一屏有字」);③ 不做虚拟滚动(数据量由容器与产品上限决定;密度与滚动**手感**
56-
* 属批 6,见报告 §7 的诚实边界)。
55+
* 不是「这一屏有字」);③ 不做虚拟滚动(数据量由容器与产品上限决定;全仓 0 处虚拟滚动);
56+
* 🔴 密度与滚动**手感批 6 未交付** —— 批 6 计划把「视图密度观感」逐字列入**仪器不可达**
57+
* (`docs/superpowers/plans/2026-09-12-frontend-redesign-batch6-motion.md:2540`:jsdom 无排版;
58+
* `:2481` 又列进「未交付 / 未验证」)⇒ 只能登记,**去向批 7/8**(T35c 实测;「属批 6」已过期)。
5759
*/
5860
import type { CSSProperties, ReactElement } from "react";
5961
import { EmptyState, Text } from "../../ui/primitives";

‎app/src/views/session/useTriTrackAlign.ts‎

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,12 @@
2828
* `startControllable(el, {…, duration: 0}, {paused: true})` → `seek(0)` → `interrupt()`
2929
* (kill **不还原**已写出的值)。
3030
*
31-
* 🔴 `controls.ts` **只许经 `await import()` 到达**(R41.3 / §三十四 #23):它内部静态
32-
* `import "./engine"`(见 `motion/controls.ts` 的文件头「使用纪律」)⇒ 静态引入它会把 GSAP 拉进
33-
* **首屏静态闭包**(`engine.guard.test.ts` 的闭包交集判据会红,不是静默洞)。`import type` 不进
34-
* 产物、也不建静态边(那条守卫的正则显式排除 `import type`)。
31+
* 🔴 `controls.ts` **不许被「首屏静态可达」的模块静态引入**(**惰性视图 / 注册表驱动静态引入它是
32+
* 安全的**;旧措辞「只许经 `await import()` 到达」**过宽**,R60.1 更正 R41.3 的适用范围):它内部静态
33+
* `import "./engine"`(见 `motion/controls.ts` 的文件头「使用纪律」)⇒ 静态引用它的**首屏**模块会把 GSAP
34+
* 拉进**首屏静态闭包**(`engine.guard.test.ts` 的闭包交集判据会红,不是静默洞)。🔴 本件**不在**该闭包内:
35+
* `SessionTriTrackView.tsx` 经 `views/registry.ts:104` + `SessionViewHost.tsx:98` 的 `lazy()` 惰性到达
36+
* ⇒ 静态引入它是安全的;今天仍只取类型(`import type` 不建边)+ 动态 `import()`(**形态不变**)。
3537
*
3638
* 🔴 三档(R35.4:出口**不**内置档位分支 ⇒ 波 C 每条动效自己消费):`useMotionIntensity()` 读
3739
* `data-motion`,**档位变化时重新取值**;`eco` = §8.5「编排层直接跳终态」(**不建编排 timeline**)·
@@ -56,7 +58,8 @@ import { SHIFT_MAX_PX, clampShift } from "../../motion/shift";
5658
import { toneEase } from "../../motion/tone";
5759
import { DURATION_TOKENS } from "../../ui/tokens.gen";
5860
import type { DurationTokenName } from "../../ui/tokens.gen";
59-
// 🔴 **只取类型**:`controls.ts` 只许经 `await import()` **到达**(见文件头;判据 = `engine.guard.test.ts`)。
61+
// 🔴 **只取类型**:`controls.ts` 不许被「首屏静态可达」的模块静态引入(R60.1;**惰性视图静态引入它是安全的**
62+
// —— 本件在惰性链上,见文件头;判据 = `engine.guard.test.ts` 的闭包交集)。
6063
import type { Controllable } from "../../motion/controls";
6164

6265
/** 三轨的轨名 —— **`data-track` 锚的唯一字面量来源**(转写轨在首位 = 时间基)。 */

0 commit comments

Comments
 (0)