@cyber-dash-tech/revela 0.15.2 → 0.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.zh-CN.md CHANGED
@@ -17,8 +17,8 @@ Revela 是一个 [OpenCode](https://opencode.ai) 插件,用来把工作区来
17
17
 
18
18
  ## 它能做什么
19
19
 
20
- - 为 `/revela init`、`/revela story`、`/revela make deck` 等显式命令注入一次性 workflow instructions
21
- - 只有在显式运行 `/revela make deck` 时,才切换到 deck-render prompt mode
20
+ - 为 `/revela init`、`/revela story`、`/revela make --deck` 等显式命令注入一次性 workflow instructions
21
+ - 只有在显式运行 `/revela make --deck` 时,才切换到 deck-render prompt mode
22
22
  - 支持工作区文档扫描,以及 `.pdf`、`.docx`、`.pptx`、`.xlsx` 的透明文本提取和嵌入素材缓存提取
23
23
  - 将 `DECKS.json` 作为当前 workspace state engine,持续记录来源材料、调研动作、findings、claims、证据、叙事意图、render targets 和 readiness
24
24
  - 先检查 narrative readiness,再用独立 deck/artifact gate 保护 deck HTML 写入
@@ -94,8 +94,8 @@ export { default } from "/absolute/path/to/revela/index.ts";
94
94
 
95
95
  ```text
96
96
  /revela design
97
- /revela design use summit
98
- /revela domains deeptech-investment
97
+ /revela design --use summit
98
+ /revela domain --use deeptech-investment
99
99
  ```
100
100
 
101
101
  然后先打磨、调研或检查 story。叙事 ready 并获得批准后,再生成 deck:
@@ -103,32 +103,14 @@ export { default } from "/absolute/path/to/revela/index.ts";
103
103
  ```text
104
104
  /revela story
105
105
  /revela research
106
- /revela make deck
107
- ```
108
-
109
- 如果只需要检查写 HTML 前的 deck/artifact gate,使用:
110
-
111
- ```text
112
- /revela make deck --review
106
+ /revela make --deck
113
107
  ```
114
108
 
115
109
  需要导出时,可以手动调用,也可以让 agent 直接导出:
116
110
 
117
111
  ```text
118
- /revela pdf decks/humanoid-robotics.html
119
- /revela pptx decks/humanoid-robotics.html
120
- ```
121
-
122
- 如果希望普通聊天消息在显式命令之间也保持 Revela narrative mode,可以启用可选 ambient mode:
123
-
124
- ```text
125
- /revela enable
126
- ```
127
-
128
- 完成后关闭 ambient mode:
129
-
130
- ```text
131
- /revela disable
112
+ /revela export --deck pdf decks/humanoid-robotics.html
113
+ /revela export --deck pptx decks/humanoid-robotics.html
132
114
  ```
133
115
 
134
116
  ---
@@ -136,67 +118,51 @@ export { default } from "/absolute/path/to/revela/index.ts";
136
118
  ## 命令
137
119
 
138
120
  ```text
139
- /revela 显示当前状态与帮助
140
- /revela enable 可选:让普通聊天保持 ambient narrative mode
141
- /revela disable 关闭 ambient Revela mode
121
+ /revela show REVELA help
142
122
 
143
123
  /revela init 初始化或刷新 narrative workspace state
144
124
  /revela research 调研、绑定证据,并减少 story gaps/caveats
145
125
  /revela story 打开只读 story workspace UI
146
- /revela make deck 从已批准 story 生成 deck
147
- /revela make deck --review 写 HTML 前检查 deck/artifact readiness
148
- /revela make brief [file.md] 从已批准 story 渲染 executive brief
149
- /revela remember <text> 保存明确的用户/工作流偏好
150
- /revela refine 打开统一的阅读、检查和编辑 workspace
151
- /revela inspect deprecated,兼容到 /revela refine Inspect mode
152
-
153
- /revela review legacy story readiness report
154
- /revela narrative 兼容别名,等同 /revela story
155
- /revela deck 兼容别名,等同 /revela make deck
156
- /revela brief [file.md] 兼容别名,等同 /revela make brief
126
+ /revela make --deck 从已批准 story 生成 deck
127
+ /revela make --brief [file.md] 从已批准 story 渲染 executive brief
128
+ /revela review --deck 打开统一的 deck 阅读、洞察和评论 workspace
129
+ /revela export --deck pdf [file] 将 HTML deck 导出为同目录 PDF
130
+ /revela export --deck pptx [file] [--notes] 将 HTML deck 导出为可编辑 PPTX
157
131
 
158
132
  /revela design 列出已安装 design
159
- /revela design use <name> 激活某个 design
160
- /revela design new <name> 通过 AI 创建一个自定义 design
161
- /revela design edit <name> 通过 AI 调整已有自定义 design
162
- /revela design preview [name] 在浏览器中打开 design preview
163
- /revela design add <source> 从 URL、本地路径或 github:user/repo 安装 design
164
- /revela design rm <name> 删除已安装 design
165
- /revela designs 列出已安装 design
166
- /revela designs <name> 激活某个 design
167
- /revela designs-new <name> 通过 AI 创建一个自定义 design
168
- /revela designs-edit <name> 通过 AI 调整已有自定义 design
169
- /revela designs-preview [name] 在浏览器中打开 design preview
170
- /revela designs-add <source> 从 URL、本地路径或 github:user/repo 安装 design
171
- /revela designs-rm <name> 删除已安装 design
172
-
173
- /revela domains 列出已安装 domain
174
- /revela domains <name> 激活某个 domain
175
- /revela domains-add <source> 从 URL、本地路径或 github:user/repo 安装 domain
176
- /revela domains-rm <name> 删除已安装 domain
177
-
178
- /revela pdf <file> 将 HTML deck 导出为同目录 PDF
179
- /revela pptx <file> 将 HTML deck 导出为同目录可编辑 PPTX
133
+ /revela design --use <name> 激活某个 design
134
+ /revela design --new <name> 通过 AI 创建一个自定义 design
135
+ /revela design --edit <name> 通过 AI 调整已有自定义 design
136
+ /revela design --preview [name] 在浏览器中打开 design preview
137
+ /revela design --add <source> 从 URL、本地路径或 github:user/repo 安装 design
138
+ /revela design --rm <name> 删除已安装 design
139
+
140
+ /revela domain 列出已安装 domain
141
+ /revela domain --use <name> 激活某个 domain
142
+ /revela domain --add <source> URL、本地路径或 github:user/repo 安装 domain
143
+ /revela domain --rm <name> 删除已安装 domain
180
144
  ```
181
145
 
182
- 大多数 `/revela` 命令都在本地执行,不消耗 LLM token。`/revela init`、`/revela research`、`/revela story`、`/revela review`、`/revela make deck`、`/revela remember`、`/revela design new` 和 `/revela design edit` 会启动 AI 辅助流程,因为它们需要读取或更新项目状态。这些 workflow command 只在可见聊天里显示短意图,详细内部说明通过一次性的 system-prompt command intent 注入。`/revela refine` 是统一的 post-artifact workspace,会打开一个本地浏览器 workspace,里面有 EditInspect 两个 tab,并共享同一套 Cmd/Ctrl-click 元素引用。Edit 会把精准修改评论发回当前 OpenCode 会话;Inspect 会把 grounded selection context 发给当前 OpenCode 会话,并渲染本地化的 Narrative Reading、Exploratory Reading、Source、Purpose 卡片。确定性预处理保留为 fallback context,而不是默认先展示的 UI。如果生成结果缺少较新的 reading 卡片,Refine 会保留确定性 Narrative Reading 和 Exploratory Reading,而不是丢掉这些上下文。Narrative Reading 还会显示所选 canonical claim 的 artifact coverage,包括每个已记录 artifact 是否包含该 claim,以及 coverage 是 current、stale、partial 还是 missing。Exploratory Reading 明确是非官方阅读辅助,只能基于已记录 claim、evidence、caveat、objection、risk 和 artifact coverage。它没有聊天框,也不会修改 deck。`/revela edit` 已移除;请使用 `/revela refine`。`/revela inspect` 仅作为 deprecated 兼容入口保留。
146
+ 大多数 `/revela` 命令都在本地执行,不消耗 LLM token。`/revela init`、`/revela research`、`/revela story`、`/revela make --deck`、`/revela design --new`、`/revela design --edit` 和 `/revela export --deck pptx --notes` 会启动 AI 辅助流程,因为它们需要读取或更新项目状态。这些 workflow command 只在可见聊天里显示短意图,详细内部说明通过一次性的 system-prompt command intent 注入。`/revela review --deck` 是统一的 post-artifact workspace,会打开一个本地浏览器 workspace,里面有 CommentInsight 两个 tab,并共享同一套 Cmd/Ctrl-click 元素引用。Comment 会把精准修改评论发回当前 OpenCode 会话;Insight 会把 grounded selection context 发给当前 OpenCode 会话,并渲染本地化的 Narrative Reading、Exploratory Reading、Source、Purpose 卡片。确定性预处理保留为 fallback context,而不是默认先展示的 UI。如果生成结果缺少较新的 reading 卡片,Review 会保留确定性 Narrative Reading 和 Exploratory Reading,而不是丢掉这些上下文。Narrative Reading 还会显示所选 canonical claim 的 artifact coverage,包括每个已记录 artifact 是否包含该 claim,以及 coverage 是 current、stale、partial 还是 missing。Exploratory Reading 明确是非官方阅读辅助,只能基于已记录 claim、evidence、caveat、objection、risk 和 artifact coverage。它没有聊天框,也不会修改 deck。`/revela edit` `/revela inspect` 不再是公开命令;请使用 `/revela review --deck`。`/revela refine --deck` 仍作为兼容 alias 保留。
183
147
 
184
148
  ---
185
149
 
186
150
  ## 工作原理
187
151
 
188
- 显式 Revela workflow command 会把一次性 command instructions 追加到当前 agent 的 system prompt 中。`/revela enable` 是可选 ambient mode,用于让显式命令之间的普通聊天也保持 Revela narrative mode。
152
+ 显式 Revela workflow command 会把一次性 command instructions 追加到当前 agent 的 system prompt 中。你不需要先运行 ambient enable/disable;公开入口都在 `/revela` help 中列出。
189
153
 
190
- 默认 prompt 是 narrative-first:它遵循 `Init -> Research -> Story -> Make -> Refine`,关注受众信念变化、decision/action、thesis、claims、证据边界、objections、risks、research gaps 和 approval。Active design CSS、layout catalog、component index、chart rules 和 deck HTML skeleton 在 `/revela make deck` 切换到 deck-render mode 或 `/revela design` 进入显式设计工作流前不会注入。
154
+ 默认 prompt 是 narrative-first:它遵循 `Init -> Research -> Story -> Make -> Review -> Export`,关注受众信念变化、decision/action、thesis、claims、证据边界、objections、risks、research gaps 和 approval。Active design CSS、layout catalog、component index、chart rules 和 deck HTML skeleton 在 `/revela make --deck` 切换到 deck-render mode 或 `/revela design` 进入显式设计工作流前不会注入。
191
155
 
192
- Deck-render mode 由 3 层组成:
156
+ Deck-render mode 由 2 层组成:
193
157
 
194
158
  1. `skill/SKILL.md` - 核心 deck-render 流程
195
- 2. 当前 active domain - 行业结构与术语
196
- 3. 当前 active design - 视觉系统、layout、component 和图表规则
159
+ 2. 当前 active design - 视觉系统、layout、component 和图表规则
160
+
161
+ Active domain 只进入 narrative pipeline。它帮助 `init`、`research`、`story`
162
+ 形成 canonical narrative;`make --deck` 只渲染已批准的 narrative,不再重复注入完整 domain prompt。
197
163
 
198
164
  持久化配置保存在 `~/.config/revela/config.json`。
199
- ambient enable/disable 状态只在当前会话生效。
165
+ 显式 workflow command 会自动选择 narrative 或 deck-render prompt mode。
200
166
 
201
167
  ### Workspace State
202
168
 
@@ -210,7 +176,7 @@ ambient enable/disable 状态只在当前会话生效。
210
176
  - active HTML deck 以及派生 PDF、PPTX 等 render targets
211
177
  - 带 input hash 的 review snapshots,使重要状态变化后旧的 readiness 自动变 stale
212
178
 
213
- 已有的根目录 `DECKS.json` 工作区继续兼容。对旧项目运行 `/revela init` 或 `/revela review` 时,可以安全 normalize canonical narrative state 并刷新 projection 字段;用户不需要手动迁移、不需要移动文件,也不需要把 `DECKS.json` 换成数据库。`writeReadiness.status: "ready"` 只代表 deck/artifact readiness,永远不等于 narrative approval。
179
+ 已有的根目录 `DECKS.json` 工作区继续兼容。对旧项目运行 `/revela init` 或 `/revela story` 时,可以安全 normalize canonical narrative state 并刷新 projection 字段;用户不需要手动迁移、不需要移动文件,也不需要把 `DECKS.json` 换成数据库。`writeReadiness.status: "ready"` 只代表 deck/artifact readiness,永远不等于 narrative approval。
214
180
 
215
181
  Deck 仍然是主要 authored artifact,但现在它是从同一份 workspace state 渲染出来的目标之一。后续 briefs、appendix material、Evidence Inspector views、Q&A 和 interactive reading layers 都可以复用同一套来源/证据逻辑,而不是各自生成孤立内容。
216
182
 
@@ -224,26 +190,18 @@ Deck 仍然是主要 authored artifact,但现在它是从同一份 workspace s
224
190
  2. 如果 story gaps 或 unsupported central claims 需要外部证据,用 `/revela research` 定向调研;它应循环执行 research、证据绑定、claim/relation 收窄和 re-review,直到公开调研无法继续改善状态。
225
191
  3. 用 `/revela story` 打开 story workspace UI,查看 claim flow、证据、caveats、research gaps、approval state 和 artifact coverage。
226
192
  4. 批准 narrative 或要求修改。如果需要在完整战略批准前渲染,必须记录 explicit render override。
227
- 5. 运行 `/revela make deck`,把已批准 narrative 编译成 deck slide specs 并进入 deck-render mode,或运行 `/revela make brief` 渲染 executive brief。
228
- 6. 只在 deck handoff 阶段选择或确认 design,然后通过 handoff workflow 或 `/revela make deck --review` 运行 deck/artifact gate。
193
+ 5. 运行 `/revela make --deck`,把已批准 narrative 编译成 deck slide specs 并进入 deck-render mode,或运行 `/revela make --brief` 渲染 executive brief。
194
+ 6. 只在 deck handoff 阶段选择或确认 design;`/revela make --deck` 会在 deck plan 确认后运行 deck/artifact gate。
229
195
  7. 只有 artifact gate ready 后,才让 agent 把 HTML deck 写到 `decks/` 下。
230
- 8. 用 `/revela refine` 对选中 deck 元素做可视化评论、精准修改、只读 Narrative Reading、有边界的 Exploratory Reading、Source、Purpose 检查,以及 claim-to-artifact coverage 查看。
231
- 9. post-artifact 修改统一使用 `/revela refine`;`/revela edit` 已移除,`/revela inspect` 仅保留给旧脚本或旧习惯。
232
- 10. 用 `/revela pdf <file>` 或 `/revela pptx <file>` 导出。
233
-
234
- 只有当你希望普通聊天消息,而不只是显式 `/revela ...` 命令,也保持 Revela narrative mode 时,才需要使用 `/revela enable`。
196
+ 8. 用 `/revela review --deck` 对选中 deck 元素做可视化评论、精准修改、只读 Narrative Reading、有边界的 Exploratory Reading、Source、Purpose 洞察,以及 claim-to-artifact coverage 查看。
197
+ 9. post-artifact 修改统一使用 `/revela review --deck`;`/revela edit` 和 `/revela inspect` 不再是公开命令。
198
+ 10. 用 `/revela export --deck pdf <file>` 或 `/revela export --deck pptx <file>` 导出。
235
199
 
236
- `/revela story` 打开只读 story workspace UI。`/revela review` 生成 legacy readiness report,用于检查受众不清、缺信念变化、缺 decision/action、thesis 弱、central claims 无证据、evidence 弱、unsupported scope、objection 未处理、缺风险/假设处理、approval stale 或缺 approval。两者都不检查 design/layout readiness,也不会写最终 deck。
200
+ 普通聊天不需要 ambient command。需要 Revela 工作流时,直接运行对应的 `/revela ...` 显式命令。
237
201
 
238
- 如果 Revela 阻止写入 deck,直接让 agent 运行 `/revela make deck --review`,根据报告补齐 artifact 缺口后再写。这样可以避免在 slide specs、evidence projection、design/layout readiness、review snapshot 和 deck HTML contract 还不完整时覆盖真实 deck 文件。
239
-
240
- 记住长期偏好请使用:
241
-
242
- ```text
243
- /revela remember 我偏好中文、咨询风格、每页只表达一个核心观点。
244
- ```
202
+ `/revela story` 打开只读 story workspace UI,用于检查受众不清、缺信念变化、缺 decision/action、thesis 弱、central claims 无证据、evidence 弱、unsupported scope、objection 未处理、缺风险/假设处理、approval stale 或缺 approval。它不检查 design/layout readiness,也不会写最终 deck
245
203
 
246
- 不要用 `remember` 保存临时 checklist 状态;它只适合保存长期用户偏好或工作流偏好。
204
+ 如果 Revela 阻止写入 deck,直接让 agent 继续 `/revela make --deck`,根据报告补齐 artifact 缺口后再写。这样可以避免在 slide specs、evidence projection、design/layout readiness、review snapshot 和 deck HTML contract 还不完整时覆盖真实 deck 文件。
247
205
 
248
206
  ---
249
207
 
@@ -295,7 +253,7 @@ Deck 仍然是主要 authored artifact,但现在它是从同一份 workspace s
295
253
 
296
254
  ## Designs 与 Domains
297
255
 
298
- 用 `/revela design` 和 `/revela domains` 查看你当前环境里实际安装的内容。旧的 `/revela designs*` 命令仍作为兼容别名保留。
256
+ 用 `/revela design` 和 `/revela domain` 查看你当前环境里实际安装的内容。旧的 `/revela designs*` 和 `/revela domains*` 命令只显示迁移帮助,不再执行旧行为。
299
257
 
300
258
  仓库内置的 domains:
301
259
 
@@ -322,8 +280,7 @@ Deck 仍然是主要 authored artifact,但现在它是从同一份 workspace s
322
280
  你也可以让 Revela 交互式创建一个新的本地 design:
323
281
 
324
282
  ```text
325
- /revela designs-new my-design
326
- /revela design new my-design
283
+ /revela design --new my-design
327
284
  ```
328
285
 
329
286
  Agent 会先询问你的审美参考,整理设计 brief 并等待确认,然后把 `DESIGN.md` 和 `preview.html` 保存到本地 Revela designs 目录。对 AI 生成的 design,`preview.html` 是必需验收面:它必须包含 cover 和 closing 页,并且必须展示所有 `@component:*`,否则 `revela-designs-author` 不会接受这个包。默认结构底座是内部中性 `starter` design,它不会出现在普通 design 列表中。只有当你明确想从 `summit` 或 `monet` 的具体风格派生时,才建议使用 `--base summit` 或 `--base monet`。
@@ -331,8 +288,7 @@ Agent 会先询问你的审美参考,整理设计 brief 并等待确认,然
331
288
  调整已有本地 design:
332
289
 
333
290
  ```text
334
- /revela designs-edit my-design
335
- /revela design edit my-design
291
+ /revela design --edit my-design
336
292
  ```
337
293
 
338
294
  Agent 会询问你想修改什么,读取当前 design,整理 edit brief 并等待确认,然后通过受控 authoring tool 覆盖保存本地 design 包。
@@ -340,8 +296,7 @@ Agent 会询问你想修改什么,读取当前 design,整理 edit brief 并
340
296
  在浏览器中打开某个 design 的 preview:
341
297
 
342
298
  ```text
343
- /revela designs-preview my-design
344
- /revela design preview my-design
299
+ /revela design --preview my-design
345
300
  ```
346
301
 
347
302
  省略 name 时会打开当前 active design 的 preview。如果该 design 没有 `preview.html`,Revela 会提示没有可用 preview。
@@ -548,9 +503,9 @@ Prompt 注入规则:
548
503
  安装自定义 design:
549
504
 
550
505
  ```text
551
- /revela design add github:your-org/your-design
552
- /revela design add https://example.com/my-design.zip
553
- /revela design add ./path/to/local/design-folder
506
+ /revela design --add github:your-org/your-design
507
+ /revela design --add https://example.com/my-design.zip
508
+ /revela design --add ./path/to/local/design-folder
554
509
  ```
555
510
 
556
511
  ---
@@ -560,7 +515,7 @@ Prompt 注入规则:
560
515
  自定义 domain 是一个包含 `INDUSTRY.md` 的文件夹。
561
516
 
562
517
  ```text
563
- /revela domains-add github:your-org/your-domain
518
+ /revela domain --add github:your-org/your-domain
564
519
  ```
565
520
 
566
521
  `INDUSTRY.md` 是为兼容历史版本保留的文件名。
@@ -572,10 +527,10 @@ Prompt 注入规则:
572
527
  正常的写后 review 和修改建议使用统一 refinement workspace:
573
528
 
574
529
  ```text
575
- /revela refine
530
+ /revela review --deck
576
531
  ```
577
532
 
578
- `/revela refine` 会打开 active HTML deck,并提供两个 tab。使用 `Ctrl`/`Cmd` + click 先引用 deck 元素,然后在 Edit 里快速写自然语言修改评论,或在 Inspect 里做只读 Narrative Reading、有边界的 Exploratory Reading、Source、Purpose 和 artifact coverage 检查。Inspect 不会修改 deck;真正的 mutation 仍然只走 Edit。这是 post-artifact 阅读、检查和编辑的推荐入口。
533
+ `/revela review --deck` 会打开 active HTML deck,并提供两个 tab。使用 `Ctrl`/`Cmd` + click 先引用 deck 元素,然后在 Comment 里快速写自然语言修改评论,或在 Insight 里做只读 Narrative Reading、有边界的 Exploratory Reading、Source、Purpose 和 artifact coverage 检查。Insight 不会修改 deck;真正的 mutation 仍然只走 Comment。这是 post-artifact 阅读、洞察和评论的推荐入口。
579
534
 
580
535
  已移除命令:
581
536
 
@@ -583,29 +538,29 @@ Prompt 注入规则:
583
538
  /revela edit
584
539
  ```
585
540
 
586
- `/revela edit` 已移除。请使用 `/revela refine` 打开统一的阅读、检查和编辑 workspace。
541
+ `/revela edit` 已移除。请使用 `/revela review --deck` 打开统一的阅读、洞察和评论 workspace。
587
542
 
588
- 使用 `Ctrl`/`Cmd` + 点击 deck 元素来引用它们,在 Edit tab 写一段自然语言评论,然后发送回 OpenCode。Revela 会把 deck 文件、slide 上下文、选中元素 metadata 和你的评论整理成结构化 edit prompt。
543
+ 使用 `Ctrl`/`Cmd` + 点击 deck 元素来引用它们,在 Comment tab 写一段自然语言评论,然后发送回 OpenCode。Revela 会把 deck 文件、slide 上下文、选中元素 metadata 和你的评论整理成结构化 edit prompt。
589
544
 
590
- 对应的 LLM tool:`revela-edit`,不需要 target。这个 tool 仍作为兼容入口保留,当你说“我要编辑这个 deck”时,agent 会打开 RefineEdit mode。
545
+ 对应的 LLM tool:`revela-edit`,不需要 target。这个 tool 仍作为兼容入口保留,当你说“我要编辑这个 deck”时,agent 会打开 ReviewComment mode。
591
546
 
592
- 对于已有 HTML deck,`/revela refine` 会自动准备必要的最小项目上下文,让后续精准修改仍然经过正常安全检查。
547
+ 对于已有 HTML deck,`/revela review --deck` 会自动准备必要的最小项目上下文,让后续精准修改仍然经过正常安全检查。
593
548
 
594
549
  ---
595
550
 
596
551
  ## Evidence Inspector
597
552
 
598
- 用 `/revela refine` 做 evidence inspection 和 narrative reading。Deprecated 兼容命令:
553
+ 用 `/revela review --deck` 做 evidence insight 和 narrative reading。已移除的兼容命令:
599
554
 
600
555
  ```text
601
556
  /revela inspect
602
557
  ```
603
558
 
604
- `/revela inspect` 不再打开独立 inspector shell。它会打开 `/revela refine` 的 Inspect modeInspect tab 会在固定 Source 和 Purpose 卡片之外显示 Narrative Reading 和 Exploratory Reading 卡片。当选中元素能映射到 canonical narrative state 时,Narrative Reading 会保留 canonical claim id、evidence binding id、supported scope、unsupported scope、caveat、objection、risk 和 artifact coverage。Coverage 会显示所选 claim 是否出现在已记录的 deck/brief/export artifact 中,以及这些 artifact 相对当前 narrative hash 是 current、stale、partial 还是 missing。Exploratory Reading 提供非官方的 objection prep、audience reframing 边界、appendix leads 和 meeting-prep cues,并且只能使用同一份已记录 context。使用 `Ctrl`/`Cmd` + click 引用 deck 元素,然后点击 `Inspect Selection`。请求处理期间,deck 选择会被锁定。
559
+ `/revela inspect` 不再打开独立 inspector shell。请使用 `/revela review --deck` 的 Insight tabInsight tab 会在固定 Source 和 Purpose 卡片之外显示 Narrative Reading 和 Exploratory Reading 卡片。当选中元素能映射到 canonical narrative state 时,Narrative Reading 会保留 canonical claim id、evidence binding id、supported scope、unsupported scope、caveat、objection、risk 和 artifact coverage。Coverage 会显示所选 claim 是否出现在已记录的 deck/brief/export artifact 中,以及这些 artifact 相对当前 narrative hash 是 current、stale、partial 还是 missing。Exploratory Reading 提供非官方的 objection prep、audience reframing 边界、appendix leads 和 meeting-prep cues,并且只能使用同一份已记录 context。使用 `Ctrl`/`Cmd` + click 引用 deck 元素,然后点击 `Get Insight`。请求处理期间,deck 选择会被锁定。
605
560
 
606
- Inspector 不是聊天,也没有自由输入框。它不会修改 `DECKS.json` 或 deck HTML。它使用已记录的 slide spec、narrative state 和 slide-level evidence trace 作为 grounded context。Inspect 的用户界面是 LLM-first:先显示 reading/loading 状态,再渲染结构化生成卡片。确定性预处理仍作为内部 fallback context,仅在生成失败或超时时显示。Inspect tab 提供固定 display-language 下拉选项;语言只影响卡片文案,不会改变 claim id、evidence id、source path、URL、数字、引用或 canonical facts。如果旧版或不完整的生成结果只返回 Source/Purpose,Refine 会保留确定性 reading 卡片,避免 generated inspection 静默移除 claim、evidence boundary、artifact coverage 或 exploratory context。
561
+ Insight 不是聊天,也没有自由输入框。它不会修改 `DECKS.json` 或 deck HTML。它使用已记录的 slide spec、narrative state 和 slide-level evidence trace 作为 grounded context。Insight 的用户界面是 LLM-first:先显示 reading/loading 状态,再渲染结构化生成卡片。确定性预处理仍作为内部 fallback context,仅在生成失败或超时时显示。Insight tab 提供固定 display-language 下拉选项;语言只影响卡片文案,不会改变 claim id、evidence id、source path、URL、数字、引用或 canonical facts。如果旧版或不完整的生成结果只返回 Source/Purpose,Review 会保留确定性 reading 卡片,避免 generated insight 静默移除 claim、evidence boundary、artifact coverage 或 exploratory context。
607
562
 
608
- Refine 会使用 workspace state 中记录的 active HTML deck render target。Deck HTML 必须满足 Revela 的 slide identity contract:active artifact 中每个 `<section class="slide">` 都需要有正数、1-based 的 `data-slide-index`,并且要匹配当前 slide specs。无效的 active artifact 会在 refine/export 工作流信任它之前被拒绝或报告。
563
+ Review 会使用 workspace state 中记录的 active HTML deck render target。Deck HTML 必须满足 Revela 的 slide identity contract:active artifact 中每个 `<section class="slide">` 都需要有正数、1-based 的 `data-slide-index`,并且要匹配当前 slide specs。无效的 active artifact 会在 review/export 工作流信任它之前被拒绝或报告。
609
564
 
610
565
  ---
611
566
 
@@ -614,7 +569,7 @@ Refine 会使用 workspace state 中记录的 active HTML deck render target。D
614
569
  PDF 导出:
615
570
 
616
571
  ```text
617
- /revela pdf decks/my-deck.html
572
+ /revela export --deck pdf decks/my-deck.html
618
573
  ```
619
574
 
620
575
  对应的 LLM tool:`revela-pdf`,参数为 `{ "file": "decks/my-deck.html" }`。
@@ -622,12 +577,12 @@ PDF 导出:
622
577
  可编辑 PPTX 导出:
623
578
 
624
579
  ```text
625
- /revela pptx decks/my-deck.html
580
+ /revela export --deck pptx decks/my-deck.html
626
581
  ```
627
582
 
628
583
  对应的 LLM tool:`revela-pptx`,参数为 `{ "file": "decks/my-deck.html" }`。
629
584
 
630
- 命令和 tool 都会把结果写到源 HTML deck 同目录。如果希望 agent 在 deck 工作流中自动完成导出,可以让它调用 tool,而不需要用户手动执行 `/revela pdf` 或 `/revela pptx`。
585
+ 命令和 tool 都会把结果写到源 HTML deck 同目录。如果希望 agent 在 deck 工作流中自动完成导出,可以让它调用 tool,而不需要用户手动执行 `/revela export --deck pdf` 或 `/revela export --deck pptx`。
631
586
 
632
587
  ---
633
588
 
@@ -32,8 +32,8 @@ Starter is the neutral structural base for generating new Revela designs. It sho
32
32
  --accent-soft: #dbeafe;
33
33
  --accent-danger: #dc2626;
34
34
  --shadow-soft: rgba(15, 23, 42, 0.16);
35
- --font-display: 'Inter', ui-sans-serif, sans-serif;
36
- --font-body: 'Inter', ui-sans-serif, sans-serif;
35
+ --font-display: 'Montserrat', ui-sans-serif, sans-serif;
36
+ --font-body: 'Montserrat', ui-sans-serif, sans-serif;
37
37
  --font-size-body: 17px;
38
38
  --font-size-meta: 12px;
39
39
  --font-size-body-strong: 20px;
@@ -48,13 +48,13 @@ Accent usage guidance:
48
48
 
49
49
  ### Typography
50
50
 
51
- - **Display / heading font**: `Inter` — neutral sans-serif base for all headings and display text
52
- - **Body font**: `Inter` — neutral sans-serif base for copy, captions, labels, and UI text
51
+ - **Display / heading font**: `Montserrat` — geometric sans-serif base for all headings and display text
52
+ - **Body font**: `Montserrat` — geometric sans-serif base for copy, captions, labels, and UI text
53
53
  - Font link tag:
54
54
  ```html
55
55
  <link rel="preconnect" href="https://fonts.googleapis.com">
56
56
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
57
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
57
+ <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
58
58
  ```
59
59
  - cover h1: `88px` to `116px`, weight `700` to `800`, line-height `0.92` to `1.0`
60
60
  - inner-layout h2: `34px` to `56px`, weight `650` to `800`, line-height `1.02` to `1.12`
@@ -114,7 +114,7 @@ Every generated presentation must use this exact HTML skeleton:
114
114
  <title>{Presentation Title}</title>
115
115
  <link rel="preconnect" href="https://fonts.googleapis.com">
116
116
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
117
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
117
+ <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
118
118
  <!-- <script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script> only if charts are needed -->
119
119
  <style>/* all CSS here */</style>
120
120
  </head>
@@ -655,17 +655,36 @@ Full-bleed cover, section divider, closing, or strong visual statement with opti
655
655
  Table of contents or section index.
656
656
 
657
657
  ```html
658
- <div class="toc-panel"><div class="toc-panel-inner"><div class="toc-header"><p class="eyebrow">Contents</p><h2>Agenda</h2></div><div class="toc-list"><div class="toc-item"><span>01</span><strong>Section title</strong><em>03</em></div></div></div></div>
658
+ <div class="toc-panel">
659
+ <div class="toc-panel-inner">
660
+ <div class="toc-header">
661
+ <h2>Table of<br>Contents</h2>
662
+ <p class="toc-note">Brief context note describing the scope of the sections that follow.</p>
663
+ <p class="toc-footer">Creative-Curious-Cooperation</p>
664
+ </div>
665
+ <ol class="toc-list">
666
+ <li class="toc-item"><span>01</span><strong>The vision of a changing world</strong></li>
667
+ <li class="toc-item"><span>02</span><strong>Smart home solutions</strong></li>
668
+ <li class="toc-item"><span>03</span><strong>Smart city innovations</strong></li>
669
+ <li class="toc-item"><span>04</span><strong>Smart office revolution</strong></li>
670
+ <li class="toc-item"><span>05</span><strong>Wearable technology</strong></li>
671
+ <li class="toc-item"><span>06</span><strong>The future of connected work</strong></li>
672
+ </ol>
673
+ </div>
674
+ </div>
659
675
  ```
660
676
 
661
677
  ```css
662
- .toc-panel { height: 100%; padding: 54px 52px 42px; display: flex; overflow: hidden; background: var(--bg-page); }
663
- .toc-panel-inner { display: flex; flex-direction: column; justify-content: space-between; width: 100%; gap: 32px; }
664
- .toc-header { max-width: 620px; display: flex; flex-direction: column; gap: 18px; }
665
- .toc-list { display: flex; flex-direction: column; border-top: 1px solid var(--line-strong); }
666
- .toc-item { display: grid; grid-template-columns: 70px 1fr 60px; gap: 24px; align-items: baseline; padding: 22px 0; border-bottom: 1px solid var(--line); }
667
- .toc-item span, .toc-item em { font-style: normal; color: var(--text-muted); font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; }
668
- .toc-item strong { font-size: 28px; line-height: 1.08; color: var(--text-primary); }
678
+ .toc-panel { height: 100%; padding: 86px 118px 58px; display: flex; overflow: hidden; background: var(--bg-page); }
679
+ .toc-panel-inner { width: 100%; display: grid; grid-template-columns: 37% 1fr; align-items: stretch; gap: 76px; }
680
+ .toc-header { display: flex; flex-direction: column; min-height: 100%; }
681
+ .toc-header h2 { margin-top: 32px; max-width: 360px; font-size: 46px; line-height: 1.04; letter-spacing: 0.02em; text-transform: uppercase; font-weight: 650; }
682
+ .toc-note { margin-top: 230px; margin-bottom: 0; max-width: 300px; font-size: 14px; line-height: 1.7; letter-spacing: 0.02em; color: var(--text-muted); }
683
+ .toc-footer { margin-top: auto; font-size: 11px; line-height: 1.4; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 750; color: var(--text-primary); }
684
+ .toc-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: center; gap: 42px; height: 100%; }
685
+ .toc-item { display: grid; grid-template-columns: 80px 1fr; gap: 44px; align-items: center; }
686
+ .toc-item span { font-style: normal; font-family: var(--font-display); font-size: 42px; line-height: 1; letter-spacing: 0.03em; color: var(--text-primary); font-variant-numeric: tabular-nums; }
687
+ .toc-item strong { font-size: 17px; line-height: 1.35; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 500; color: var(--text-primary); }
669
688
  ```
670
689
  <!-- @component:toc:end -->
671
690
 
@@ -6,7 +6,7 @@
6
6
  <title>Starter Design System — Preview</title>
7
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
9
+ <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
10
10
  <script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
11
11
  <style>
12
12
  :root {
@@ -25,8 +25,8 @@
25
25
  --accent-soft: #dbeafe;
26
26
  --accent-danger: #dc2626;
27
27
  --shadow-soft: rgba(15, 23, 42, 0.16);
28
- --font-display: 'Inter', ui-sans-serif, sans-serif;
29
- --font-body: 'Inter', ui-sans-serif, sans-serif;
28
+ --font-display: 'Montserrat', ui-sans-serif, sans-serif;
29
+ --font-body: 'Montserrat', ui-sans-serif, sans-serif;
30
30
  --font-size-body: 17px;
31
31
  --font-size-meta: 12px;
32
32
  }
@@ -124,13 +124,16 @@
124
124
  .image-title h1 { color: #f8fafc; font-size: 104px; line-height: 0.92; letter-spacing: -0.055em; }
125
125
  .image-title-eyebrow { font-size: 12px; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(248,250,252,0.62); margin-bottom: 20px; }
126
126
  .image-title-subtitle { margin-top: 24px; font-size: 18px; line-height: 1.56; color: rgba(248,250,252,0.78); max-width: 520px; }
127
- .toc-panel { height: 100%; padding: 54px 52px 42px; display: flex; overflow: hidden; background: var(--bg-page); }
128
- .toc-panel-inner { display: flex; flex-direction: column; justify-content: space-between; width: 100%; gap: 32px; }
129
- .toc-header { max-width: 620px; display: flex; flex-direction: column; gap: 18px; }
130
- .toc-list { display: flex; flex-direction: column; border-top: 1px solid var(--line-strong); }
131
- .toc-item { display: grid; grid-template-columns: 70px 1fr 60px; gap: 24px; align-items: baseline; padding: 22px 0; border-bottom: 1px solid var(--line); }
132
- .toc-item span, .toc-item em { font-style: normal; color: var(--text-muted); font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; }
133
- .toc-item strong { font-size: 28px; line-height: 1.08; color: var(--text-primary); }
127
+ .toc-panel { height: 100%; padding: 86px 118px 58px; display: flex; overflow: hidden; background: var(--bg-page); }
128
+ .toc-panel-inner { width: 100%; display: grid; grid-template-columns: 37% 1fr; align-items: stretch; gap: 76px; }
129
+ .toc-header { display: flex; flex-direction: column; min-height: 100%; }
130
+ .toc-header h2 { margin-top: 32px; max-width: 360px; font-size: 46px; line-height: 1.04; letter-spacing: 0.02em; text-transform: uppercase; font-weight: 650; }
131
+ .toc-note { margin-top: 230px; margin-bottom: 0; max-width: 300px; font-size: 14px; line-height: 1.7; letter-spacing: 0.02em; color: var(--text-muted); }
132
+ .toc-footer { margin-top: auto; font-size: 11px; line-height: 1.4; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 750; color: var(--text-primary); }
133
+ .toc-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: center; gap: 42px; height: 100%; }
134
+ .toc-item { display: grid; grid-template-columns: 80px 1fr; gap: 44px; align-items: center; }
135
+ .toc-item span { font-style: normal; font-family: var(--font-display); font-size: 42px; line-height: 1; letter-spacing: 0.03em; color: var(--text-primary); font-variant-numeric: tabular-nums; }
136
+ .toc-item strong { font-size: 17px; line-height: 1.35; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 500; color: var(--text-primary); }
134
137
  .quote-block { height: 100%; display: flex; flex-direction: column; justify-content: center; gap: 24px; max-width: 980px; }
135
138
  .quote-mark { font-size: 96px; line-height: 0.7; color: var(--accent-primary); }
136
139
  .quote-block blockquote { font-family: var(--font-display); font-size: 54px; line-height: 1.06; letter-spacing: -0.04em; color: var(--text-primary); }
@@ -204,13 +207,17 @@
204
207
  <div class="page" style="padding:0;">
205
208
  <div class="toc-panel">
206
209
  <div class="toc-panel-inner">
207
- <div class="toc-header reveal"><p class="eyebrow">Contents</p><h2>Core primitives for derived themes</h2><p>Starter preview demonstrates structure, not a fixed aesthetic.</p></div>
208
- <div class="toc-list reveal">
209
- <div class="toc-item"><span>01</span><strong>Foundation and visual schema</strong><em>03</em></div>
210
- <div class="toc-item"><span>02</span><strong>Layouts and content modules</strong><em>04</em></div>
211
- <div class="toc-item"><span>03</span><strong>Data, flow, and evidence</strong><em>05</em></div>
212
- <div class="toc-item"><span>04</span><strong>Motifs and closing states</strong><em>06</em></div>
210
+ <div class="toc-header reveal">
211
+ <h2>Table of<br>Contents</h2>
212
+ <p class="toc-note">Starter preview demonstrates the core structure available to derived themes.</p>
213
+ <p class="toc-footer">Structure-First-Design</p>
213
214
  </div>
215
+ <ol class="toc-list reveal">
216
+ <li class="toc-item"><span>01</span><strong>Foundation and visual schema</strong></li>
217
+ <li class="toc-item"><span>02</span><strong>Layouts and content modules</strong></li>
218
+ <li class="toc-item"><span>03</span><strong>Data flow and evidence</strong></li>
219
+ <li class="toc-item"><span>04</span><strong>Motifs and closing states</strong></li>
220
+ </ol>
214
221
  </div>
215
222
  <div class="page-number">02</div>
216
223
  </div>