Skip to content

Commit b077d53

Browse files
committed
docs(product): 回写审校模式并加注落点与命名
规格 §4.3 逐字「必须写进规范」:docs/product/ui-ux-system.md 新增 §十二「审校模式」 (入口 / 作用域 / 三出口 / data-proofread-mode 形态 / 不新增 token / 实现落点登记)。 规格 §4.3④ 后加就地加注:属性名消歧为 data-proofread-mode(控制方 §2 B2)。 两处均为纯追加(git numstat +44 / −0):历史原文一字未改,标题锚子序列对拍被删被改 = 0。
1 parent 4041eab commit b077d53

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

‎docs/product/ui-ux-system.md‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,4 +279,45 @@
279279

280280
---
281281

282+
## 十二、审校模式(阅读面墨度加深)
283+
284+
> **依据**:规格 §4.3 条件 ③「进入审校模式时全部升到 ≥4.5:1」与该节的就地加注(批 4 / 批 6 / 批 7 / 批 8 T3)。
285+
> 本节写的是**规范面**(用户看到的审校模式是什么);🔴 **实现落点登记在 12.2 末条**(它**不是**生成物 `ui/tokens.css`)。
286+
287+
### 12.1 定义
288+
289+
- **入口**:**顶栏右簇的一个可发现按钮**(与 ⌘K / ⚙ 齿轮同簇),加**快捷键 `⌘/Ctrl+Shift+R`**。按钮必须带
290+
**可读文案** + **快捷键提示**(`title`)—— 「可发现」是条件 ① 的字面要求,不靠用户猜快捷键。
291+
⚠️ **入口不进视图注册表**:它不是第四种「视图」,而是**所有视图共同的面**(规格 §4.3① 逐字)。
292+
- **作用域**:**当前阅读面的全部文本节点**(`NotesReadingColumn` 的每一种视图、卡片流行、印样正文);
293+
**不含**编辑器(`RichEditorView`)与弹层外的外壳 —— 编辑态已有自己的墨度语义。切到别的对象 ⇒ 模式**保持**
294+
(它是「我此刻在审读」的用户意图),但**只影响当前挂载的阅读面**。
295+
- **三出口(等价)**:**再按同一个快捷键** · **点同一个入口按钮** · **`Esc`**。三条都必须能出;
296+
**退出后墨度立即回到未进入前的档位**(不得留任何中间态)。
297+
- **缺省不落属性**:常态下 `<html>` 上**没有**这个属性;退出走 `removeAttribute`,**不是**写成 `"off"`
298+
—— 否则「缺省态」与「显式关」在 DOM 上不可分,首屏还白多一个属性。
299+
300+
### 12.2 载体与取值
301+
302+
- **载体 = `<html>` 根元素上的 `data-*` 属性**(与 `data-theme` / `data-motion` / `data-shell-phase` 同范式),
303+
**不是类名**(规格 §8.3 逐字:载体 = `data-*`,禁止用类名区分)。
304+
- **属性名 `data-proofread-mode`,取值 `"on"`**(缺省 = **不落属性**)。🔴 **命名消歧**:`proofread` 一名**已被
305+
LLM 文本校对占用**(`commands_proofread.rs` / `ProofreadPanel.tsx`)⇒ 本模式**必须**用 `data-proofread-mode`,
306+
**不得**用 `data-proofread`(控制方 §2 B2;规格 §4.3④ 原文的三处写法由紧邻的就地加注改读)。
307+
- 🔴 **不新增 token**:审校模式**不是第五档墨度**,而是**档位覆盖** —— 模式位下把 `--ed-ink-4` 的值**重绑到**
308+
`--ed-ink-3`,`.ed-text--ink-4` 的规则一个字不改 ⇒「全部升到 ≥4.5:1」由**变量重绑**一次兑现,
309+
调用点零改动、零逐处判断(规格 §4.3⑤ 的**机制**不变,只更正落点)。暗档同样被覆盖(变量重绑一次通吃)。
310+
- **模式位的单一写入方**:`useProofreadMode()` 在**生产里只许调用一处**(`App.tsx`,第二、三出口的宿主),
311+
其他面(含顶栏入口按钮)**必须复用同一份状态**(经 props / context 注入)—— 属性是**全局唯一**的载体,
312+
两处各持一份 state 必然互擦(判据见 `shell/proofreadMode.dom.test.tsx` 的「单一写入方」用例)。
313+
- 🔴 **本节登记:实现落点 = `app/src/ui/proofread.css`**(由 `main.tsx` 在 token CSS **之后** import),
314+
**不是**生成物 `app/src/ui/tokens.css`(`:2-3` 逐字「由 scripts/gen-tokens.mjs 生成,请勿手改。手改会被
315+
src/ui/tokens.drift.test.ts 判失败」)⇒ **不得**手改生成物,也**不得**改生成器 `gen-tokens.mjs`
316+
与 `ui/primitives/Text.css`(控制方 §2 B1)。
317+
- **落地状态(带时点,2026-09-13)**:① 模式位(`shell/proofreadMode.ts`)· ② 纯 CSS 覆盖
318+
(`ui/proofread.css`)· ③ 快捷键与 `Esc` 两条出口(`App.tsx`)**已入库**(批 8 T9);
319+
④ **顶栏入口按钮 = 本节定义、尚未落地**(批 8 T11 的实现半)。
320+
321+
---
322+
282323
*本文档与 theme.md 同步维护(2026-08-24 建立)。组件/参数变更须回写本文档。*

‎docs/superpowers/specs/2026-09-11-frontend-redesign-design.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,9 @@
238238
> - **④ `data-*` 形态(照 `data-motion` / `data-tone` 的范式)**:模式位写在 **`<html>` 根元素**上、**不是**类名(与 §8.3 的「载体逐字 = `data-*` 属性,禁止用类名区分」同一条纪律)——
239239
> · 属性名 **`data-proofread`**,取值 **`"on" | "off"`**(缺省 = `off`,且**不落属性**——与 `data-motion` 的缺省形态一致);
240240
> · 墨度侧**不新增 token**:审校模式是**档位覆盖**(条件 ③ 逐字「全部升到 ≥4.5:1」),不是第五档墨度。
241+
> - 🔻 **批 8 T11 就地加注 · 第 ④ 条的**属性名消歧(2026-09-13;**上面第 ④ 条的原文一字未改**)**:第 ④ 条原文的 **`data-proofread`** 与既有的「**LLM 文本校对**」**同名不同物** —— 后者已占用 `proofread` 一族(`src-tauri/src/commands_proofread.rs` · `components/ProofreadPanel.tsx` · `proofread_estimate` / `proofread_run`;**T11 实测,域 = `git ls-files` 1,628 文件,时点 `4041eab5`:子串 `proofread` = 250 处 / 38 文件**)⇒ 🔴 **本模式的属性名取 `data-proofread-mode`**(控制方 §2 **B2** 逐字),**不得**用 `data-proofread`。
242+
> ⚠️ 第 ④ 条原文出现 `data-proofread` 的**三处**(本注插入前实测 = 本文件 `:235` / `:239` / `:241`,域 = 规格全文)**一律按本注改读**为 `data-proofread-mode`;**取值口径一个字不改**(两态 `"on" | "off"`,缺省 = `off`,且**不落属性**)。
243+
> ✅ **已落地的载体(批 8 T9)**:`app/src/shell/proofreadMode.ts` 的 `PROOFREAD_MODE_ATTR = "data-proofread-mode"`;CSS 侧消费形态 = `html[data-proofread-mode="on"]`(`app/src/ui/proofread.css`,由 `main.tsx` 在 token CSS **之后** import)。T11 实测:`data-proofread-mode` 形态全仓 = **46 处 / 6 文件**(域 = `git ls-files`,时点 `4041eab5`)⇒ 名字已统一,**没有**任何生产代码再写 `data-proofread`。
241244
> - **⑤ 实现层(一次覆盖,不改调用点)**:**纯 CSS 一层**完成 —— `html[data-proofread="on"]` 下把 `--ed-ink-4` 的值**指向 `--ed-ink-3`**(`ui/tokens.css` 的变量覆盖;`.ed-text--ink-4` 的规则一个字不用改)⇒ 「全部升到 ≥4.5:1」由**变量重绑**一次兑现,调用点零改动、零逐处判断。
242245
> - **⑥ 今日实测(本节的两条读数)**:`tone="ink-4"` 的**生产调用点 = 0 处 / 0 文件**(**正控** `tone="ink-3"` = **201 处 / 94 文件** ⇒ 非「假 0」;**负控** `zzz_no_such_symbol_zzz` = 0);`ink-4` 的**任意形态**(含类型联合 / token 定义 / 对比度判据 / 注释)在生产侧 = **5 处 / 4 文件**,**全部**是「`ink-4` 是过渡态、不得承载唯一关键信息」这类**禁止性**表述或定义,**没有一处是把 `ink-4` 用在元素上**。仪器:`.superpowers/sdd/2026-09-12-frontend-redesign-batch7-unwired/tmp/t20/probe-spec-readings.mjs`(只读;口径 = `app/src/**` 的 `.ts`/`.tsx`,PROD 排除 `*.test.*`)。
243246
> - 🔻 **补时点(2026-09-13 · T21 补轮;上面那条读数的**数**不动,只补时点与漂移声明)**:上面写的正控 `tone="ink-3"` = **201 处 / 94 文件** 是**某个时点**的读数 —— 🔴 **它在 `fb73e313` 那棵树上逐字可复现**(侦察单元已证),此后 `b72d4709`(T20 的六条展示面)与 T23 又加了文件 ⇒ **数继续变**。🔴 **T21 于 `53bd0759` 用自己的仪器复测**(入库域 = `git ls-files`;口径 = `app/src/**` 的 `.ts`/`.tsx` 内**子串 `tone="ink-3"` 的出现次数**):**PROD(排除 `*.test.*`)= 214 处 / 99 文件** · **TEST = 2 处 / 1 文件** · **全树 `app/src` = 216 处 / 100 文件**。

0 commit comments

Comments
 (0)