|
279 | 279 |
|
280 | 280 | --- |
281 | 281 |
|
| 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 | + |
282 | 323 | *本文档与 theme.md 同步维护(2026-08-24 建立)。组件/参数变更须回写本文档。* |
0 commit comments