dsh-ppt 0.5.0 → 0.6.0

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/CHANGELOG.md CHANGED
@@ -1,75 +1,90 @@
1
- # Changelog
2
-
1
+ # Changelog
2
+
3
+ ## 0.6.0(2026-10-01)
4
+
5
+ - 新增离线嵌入图片的三种布局、四类原生可编辑图表及数据工作簿;精确使用 MIT Office Kit 0.21.0,保留备注和原有动效。
6
+ - 新增 ppt_templates、ppt_edit、ppt_undo、ppt_check、ppt_render;四种场景结构参考、品牌、稳定页面ID、修订冲突保护和最多20次原子撤销。
7
+ - 质量报告定位具体页面;未填模板明确标注草稿,静态估算、渲染、视觉检查分开说明。
8
+ - 可选官方 LibreOffice Kit 0.1.3 读取最终PPTX生成PNG/PDF,报告缺失字体并写入完整性收据;不修改可编辑源文件。
9
+ - 修正总览缩略图重叠、PPTX表格标题字号、正文段间距、图片说明间距和图表坐标/比例标签。
10
+ - CLI覆盖全部流程,显式收据失效返回非零,默认渲染目录位于PPTX旁。
11
+ - 修正默认主题PPTX字体映射:CSS可选字体与本机Office字体分离,明确东亚字体,避免官方渲染时中文字符重叠;工具schema使用官方宿主支持的oneOf。
12
+
13
+ ## 0.5.1(2026-09-28)
14
+
15
+ - 兼容验证更新到 Harness 0.2.0-rc.1:70 项测试与 18 插件共同加载检查通过(`ppt_create` / `ppt_themes` 与 `dsh-ppt` 技能注册正常)。
16
+ - 运行时代码未变;同步中英文兼容性声明。
17
+
3
18
  ## 0.5.0(2026-09-27)
4
19
 
5
- - 包含新的演讲者预览、缩略图和计时控件。浏览器不支持或拒绝全屏时显示操作提示,不再无声失败。
6
-
7
- - **演讲者视图升级**:独立窗口内显示真实当前页与下一页预览(复用幻灯片渲染)、全片缩略图条(点击跳页)、wall clock + 计时(P 暂停 / T 重置)、备注字号 +/-、黑屏 / 白屏(B / W)、结束放映一键退出。
8
- - **通信更稳**:演讲者窗口改用 Blob URL + postMessage 同步,不再依赖同源 document 直连,file:// 打开的 deck 也能正常联动;窗口被直接关闭后 0.8 秒内自动恢复普通模式。
9
- - **观众端**:黑屏 / 白屏时隐藏 HUD;观众端备注与 HUD 默认隐藏逻辑保持不变。
10
- - 播放器保留 0.4.5 的全部修复,70 项测试通过。
11
- ## 0.4.5(2026-09-23)
12
-
13
- - **播放器交互修复(由合成用户复测驱动)**:备注面板不再遮挡页脚 HUD,新增关闭按钮并支持 Esc;无备注页显示「本页无备注」占位;`G` 改为缩略图网格总览(当前页高亮、页码同步、点击跳页、Esc 退出、页码角标);`?` 打开快捷键帮助;表格页补页面标题、数字列右对齐、表格边界与内容列对齐、表头对比度达标;窄屏字号下限 14px、HUD 按钮 44px;新增环绕提示、ArrowUp/Down 翻页、数字 1-9 跳页、focus-visible 与 reduced-motion 处理。
14
- - **演讲者视图(V)**:独立窗口显示当前页 / 下一页 / 备注 / 计时 / 进度,支持 +/- 字号、T 重置计时、P 暂停、方向键翻页、Esc 关闭;打开后主窗口隐藏备注与 HUD,观众端不泄露备注,关闭后状态自动恢复。
15
- - **主题预览**:`ppt_themes { preview: true, outputDir: "..." }` 生成 `themes-preview.html`(5 套主题并排对比)与每套主题一张 `theme-<id>.svg` 色板卡,可直接用于 README / npm 首屏。
16
- - 测试 70 项通过;三个合成用户(非技术运营 / 键盘党 / 培训讲师)真实浏览器复测通过,无 P0/P1。
17
-
18
- ## 0.4.4(2026-09-21)
19
-
20
- - Markdown 与结构化长表格自动按每页 8 行数据分页,续页重复表头,备注仅放第一页;修复无小标题、首个 H1 下表格被丢弃。
21
- - 不再静默裁掉中间幻灯片、额外列或长单元格:总页数超过 maxSlides、超过 8 列或单元格超过 60 字符时,生成前提示调整。短行补空白,HTML 与 PPTX 保留同一份数据。
22
- - 续页标题跟随中文、英文或双语设置。新增 7 项回归,67 项测试通过;生成产物检查覆盖全部 17 行数据。
23
-
24
- ## 0.4.3(2026-09-18)
25
-
26
- - 修复:中文分句导致正文丢内容;`--content deck.md` 不读文件;>8 条要点静默丢弃;`deck.json` 版本写死;英文 deck 被标 zh-CN。
27
- - 稳健性:三件套改为 tmp + rename 原子提交(失败回滚);过滤 Windows 保留名;文件名探测改一次目录快照。
28
- - 测试 48 → 60 项。
29
- ## 0.4.2(2026-09-11)
30
-
31
- - 适配并验证官方 Harness 0.1.5-rc.1:整套同载、工具/技能契约与 Web 鉴权检查通过。
32
- - Node 要求与宿主统一为 `^22.19.0 || >=24.0.0`;更新中英文兼容性说明。
33
-
34
- ## 0.4.1
35
-
36
- - 修复中文正文分页:中英文标点都作为句子边界,无标题纯文本严格按「每 5 句一页」分页,不再把整段中文当一句而截断丢正文。
37
- - CLI `--content <path>` 与 `--content @<path>` 行为一致:路径存在即读取文件,README / SKILL.md 示例可直接复制运行。
38
- - 单节要点超过 8 条时自动续页(第二页起标题带「(续)」),不再静默丢弃第 9 条之后的要点。
39
- - manifest `version` 改从 `package.json` 读取,消除与发版号的漂移;测试同步改为动态断言。
40
- - PPTX 文本与备注 run 的语言跟随 `lang`(zh-CN / en-US),英文 deck 不再被 PowerPoint 标成中文。
41
-
42
- ## 0.4.0
43
-
44
- - **动效(motion,默认开)**:HTML 放映页间淡入 + 要点按序逐条入场(打印自动兜底为静态);PPTX 每页原生淡入转场,`bullets` 页按段落构建、放映时点击一次出现一条要点(PowerPoint「出现,按段落」标准时序)。
45
- - **`motion` 开关**:`ppt_create` 新增 `motion: 'on' | 'off'`,CLI 新增 `--motion on|off`;`off` 时产物不含任何动画代码,适合严肃/打印场景。manifest 记录该开关。
46
- - **技能文件瘦身**:SKILL.md 收敛为触发条件 + 执行纪律 + 六步流水线 + 按需装载索引 + 质量门禁;新增 `references/syntax.md`(Markdown 解析、表格/金句/备注语法、结构化 slides、motion)与 `references/troubleshooting.md`;写作规则去重归口 `references/copywriting.md`,hyperframes 视觉联动并入 `references/themes.md`。
47
- - 动效相关测试 8 例(转场/时序树/点击节点计数/静态开关/CLI/工具层),全套 42/42 通过。
48
-
49
- ## 0.3.0
50
-
51
- - **演讲者备注**:结构化 `slides` 的 `notes` 字段与 Markdown `<!-- 备注: ... -->` 注释都会成为该页备注;HTML 放映按 `S` 键(或右下角「备注」按钮)呼出备注面板;PPTX 生成原生 `notesSlide` + `notesMaster` 部件,PowerPoint 演示者视图直接可用。
52
- - **新增 `quote` 金句版式**:`>` 引用块自动识别,末行 `—— 出处` 识别为署名;HTML 与 PPTX 双端实现。
53
- - **新增 `table` 表格版式**:Markdown 表格(`| ... |`)自动识别,PPTX 用原生 `a:tbl` 图形帧(主题色表头 + 隔行着色),限 9 行 8 列。
54
- - 版式集合扩为 `cover | section | bullets | statement | quote | table | closing`;结构化 `slides` 增加 `rows` 字段。
55
- - 无表格数据的 `table` 页自动退化为要点页,避免空白版式。
56
- - 新特性测试 8 例(解析/规范化/HTML/PPTX 部件/端到端)。
57
-
58
- ## 0.2.1
59
-
60
- - 修复 PPTX zip 中央目录 local header 偏移恒为 0 导致 PowerPoint 提示修复的问题(issue #1/#3,社区 PR #2 同修法)。
61
-
62
- ## 0.2.0
63
-
64
- - 新增 `defaultTheme` / `defaultLang` 配置,作为 `ppt_create` 未显式传参时的默认值。
65
- - 配置校验:`defaultLang` 仅接受 `zh` / `en` / `bilingual`。
66
- - 更新测试覆盖与双语文档。
67
-
68
- ## 0.1.0
69
-
70
- - 首发:`dsh-ppt` 技能 + 工具插件。
71
- - `ppt_create`:Markdown / 结构化 slides → HTML 网页放映 + PPTX 导出 + manifest。
72
- - `ppt_themes`:5 套内置视觉主题(Swiss Pulse / Velvet Standard / Data Drift / Soft Signal / Maximalist Type)。
73
- - 中英双语界面(zh / en / bilingual)。
74
- - 裸 SKILL.md + `build-deck.mjs` CLI,跨 Claude Code / Cursor / Gemini CLI / Codex / DSH。
75
- - 零运行时依赖:OOXML 与 zip 由 `node:zlib` 手写生成。
20
+ - 包含新的演讲者预览、缩略图和计时控件。浏览器不支持或拒绝全屏时显示操作提示,不再无声失败。
21
+
22
+ - **演讲者视图升级**:独立窗口内显示真实当前页与下一页预览(复用幻灯片渲染)、全片缩略图条(点击跳页)、wall clock + 计时(P 暂停 / T 重置)、备注字号 +/-、黑屏 / 白屏(B / W)、结束放映一键退出。
23
+ - **通信更稳**:演讲者窗口改用 Blob URL + postMessage 同步,不再依赖同源 document 直连,file:// 打开的 deck 也能正常联动;窗口被直接关闭后 0.8 秒内自动恢复普通模式。
24
+ - **观众端**:黑屏 / 白屏时隐藏 HUD;观众端备注与 HUD 默认隐藏逻辑保持不变。
25
+ - 播放器保留 0.4.5 的全部修复,70 项测试通过。
26
+ ## 0.4.5(2026-09-23)
27
+
28
+ - **播放器交互修复(由合成用户复测驱动)**:备注面板不再遮挡页脚 HUD,新增关闭按钮并支持 Esc;无备注页显示「本页无备注」占位;`G` 改为缩略图网格总览(当前页高亮、页码同步、点击跳页、Esc 退出、页码角标);`?` 打开快捷键帮助;表格页补页面标题、数字列右对齐、表格边界与内容列对齐、表头对比度达标;窄屏字号下限 14px、HUD 按钮 44px;新增环绕提示、ArrowUp/Down 翻页、数字 1-9 跳页、focus-visible 与 reduced-motion 处理。
29
+ - **演讲者视图(V)**:独立窗口显示当前页 / 下一页 / 备注 / 计时 / 进度,支持 +/- 字号、T 重置计时、P 暂停、方向键翻页、Esc 关闭;打开后主窗口隐藏备注与 HUD,观众端不泄露备注,关闭后状态自动恢复。
30
+ - **主题预览**:`ppt_themes { preview: true, outputDir: "..." }` 生成 `themes-preview.html`(5 套主题并排对比)与每套主题一张 `theme-<id>.svg` 色板卡,可直接用于 README / npm 首屏。
31
+ - 测试 70 项通过;三个合成用户(非技术运营 / 键盘党 / 培训讲师)真实浏览器复测通过,无 P0/P1。
32
+
33
+ ## 0.4.4(2026-09-21)
34
+
35
+ - Markdown 与结构化长表格自动按每页 8 行数据分页,续页重复表头,备注仅放第一页;修复无小标题、首个 H1 下表格被丢弃。
36
+ - 不再静默裁掉中间幻灯片、额外列或长单元格:总页数超过 maxSlides、超过 8 列或单元格超过 60 字符时,生成前提示调整。短行补空白,HTML 与 PPTX 保留同一份数据。
37
+ - 续页标题跟随中文、英文或双语设置。新增 7 项回归,67 项测试通过;生成产物检查覆盖全部 17 行数据。
38
+
39
+ ## 0.4.3(2026-09-18)
40
+
41
+ - 修复:中文分句导致正文丢内容;`--content deck.md` 不读文件;>8 条要点静默丢弃;`deck.json` 版本写死;英文 deck 被标 zh-CN。
42
+ - 稳健性:三件套改为 tmp + rename 原子提交(失败回滚);过滤 Windows 保留名;文件名探测改一次目录快照。
43
+ - 测试 48 → 60 项。
44
+ ## 0.4.2(2026-09-11)
45
+
46
+ - 适配并验证官方 Harness 0.1.5-rc.1:整套同载、工具/技能契约与 Web 鉴权检查通过。
47
+ - Node 要求与宿主统一为 `^22.19.0 || >=24.0.0`;更新中英文兼容性说明。
48
+
49
+ ## 0.4.1
50
+
51
+ - 修复中文正文分页:中英文标点都作为句子边界,无标题纯文本严格按「每 5 句一页」分页,不再把整段中文当一句而截断丢正文。
52
+ - CLI `--content <path>` 与 `--content @<path>` 行为一致:路径存在即读取文件,README / SKILL.md 示例可直接复制运行。
53
+ - 单节要点超过 8 条时自动续页(第二页起标题带「(续)」),不再静默丢弃第 9 条之后的要点。
54
+ - manifest `version` 改从 `package.json` 读取,消除与发版号的漂移;测试同步改为动态断言。
55
+ - PPTX 文本与备注 run 的语言跟随 `lang`(zh-CN / en-US),英文 deck 不再被 PowerPoint 标成中文。
56
+
57
+ ## 0.4.0
58
+
59
+ - **动效(motion,默认开)**:HTML 放映页间淡入 + 要点按序逐条入场(打印自动兜底为静态);PPTX 每页原生淡入转场,`bullets` 页按段落构建、放映时点击一次出现一条要点(PowerPoint「出现,按段落」标准时序)。
60
+ - **`motion` 开关**:`ppt_create` 新增 `motion: 'on' | 'off'`,CLI 新增 `--motion on|off`;`off` 时产物不含任何动画代码,适合严肃/打印场景。manifest 记录该开关。
61
+ - **技能文件瘦身**:SKILL.md 收敛为触发条件 + 执行纪律 + 六步流水线 + 按需装载索引 + 质量门禁;新增 `references/syntax.md`(Markdown 解析、表格/金句/备注语法、结构化 slides、motion)与 `references/troubleshooting.md`;写作规则去重归口 `references/copywriting.md`,hyperframes 视觉联动并入 `references/themes.md`。
62
+ - 动效相关测试 8 例(转场/时序树/点击节点计数/静态开关/CLI/工具层),全套 42/42 通过。
63
+
64
+ ## 0.3.0
65
+
66
+ - **演讲者备注**:结构化 `slides` 的 `notes` 字段与 Markdown `<!-- 备注: ... -->` 注释都会成为该页备注;HTML 放映按 `S` 键(或右下角「备注」按钮)呼出备注面板;PPTX 生成原生 `notesSlide` + `notesMaster` 部件,PowerPoint 演示者视图直接可用。
67
+ - **新增 `quote` 金句版式**:`>` 引用块自动识别,末行 `—— 出处` 识别为署名;HTML 与 PPTX 双端实现。
68
+ - **新增 `table` 表格版式**:Markdown 表格(`| ... |`)自动识别,PPTX 用原生 `a:tbl` 图形帧(主题色表头 + 隔行着色),限 9 行 8 列。
69
+ - 版式集合扩为 `cover | section | bullets | statement | quote | table | closing`;结构化 `slides` 增加 `rows` 字段。
70
+ - 无表格数据的 `table` 页自动退化为要点页,避免空白版式。
71
+ - 新特性测试 8 例(解析/规范化/HTML/PPTX 部件/端到端)。
72
+
73
+ ## 0.2.1
74
+
75
+ - 修复 PPTX zip 中央目录 local header 偏移恒为 0 导致 PowerPoint 提示修复的问题(issue #1/#3,社区 PR #2 同修法)。
76
+
77
+ ## 0.2.0
78
+
79
+ - 新增 `defaultTheme` / `defaultLang` 配置,作为 `ppt_create` 未显式传参时的默认值。
80
+ - 配置校验:`defaultLang` 仅接受 `zh` / `en` / `bilingual`。
81
+ - 更新测试覆盖与双语文档。
82
+
83
+ ## 0.1.0
84
+
85
+ - 首发:`dsh-ppt` 技能 + 工具插件。
86
+ - `ppt_create`:Markdown / 结构化 slides → HTML 网页放映 + PPTX 导出 + manifest。
87
+ - `ppt_themes`:5 套内置视觉主题(Swiss Pulse / Velvet Standard / Data Drift / Soft Signal / Maximalist Type)。
88
+ - 中英双语界面(zh / en / bilingual)。
89
+ - 裸 SKILL.md + `build-deck.mjs` CLI,跨 Claude Code / Cursor / Gemini CLI / Codex / DSH。
90
+ - 零运行时依赖:OOXML 与 zip 由 `node:zlib` 手写生成。
package/README.en.md CHANGED
@@ -1,174 +1,213 @@
1
- # dsh-ppt
1
+ # dsh-ppt
2
+
3
+ ## 0.6.0 (2026-10-01)
4
+
5
+ Adds image/text layouts, four native editable chart types, selected-page edits and undo, page-specific quality reports, four scenario outlines and shared branding. Optional official LibreOffice Kit rendering reads the final PPTX to produce PNG/PDF with font diagnostics. Fixes overlapping overview thumbnails, undersized table titles, image-caption spacing and chart labels.
6
+
7
+ The goal remains a usable finished deck. The agent prepares actual facts and content; the deterministic generator does not research or invent missing facts. Template-only output is explicitly an unfilled **draft** and must not be delivered as a finished presentation.
8
+
9
+ Default PPTX fonts use platform fallbacks and explicit East Asian families separately from HTML's CSS font stacks. Replace missing fonts, regenerate and review the pages; unresolved font problems must be disclosed instead of claiming acceptance.
10
+
11
+ Validation: Windows / Node 24.16.0, 100 passing tests; 18 components mount together on official-source Harness 0.2.0-rc.2 (639ed01539) with 104 tools and 35 skills. Fifteen default-theme pages without brand overrides passed native PNG/PDF rendering and individual visual review; an eleven-page image/chart/brand sample was checked in the browser, Microsoft PowerPoint and the official Kit. This covers those samples, not automatic acceptance of arbitrary decks.
2
12
 
3
13
  ## 0.5.0 update (2026-09-27)
4
14
 
5
15
  Includes presenter previews, thumbnails and timer controls. Unsupported or rejected fullscreen requests now show an actionable message instead of silently failing.
6
16
 
7
- Validation host: Harness 0.1.7-rc.2 built from official sources, retaining the local tool-scheduler fix. Build and automated checks pass; interactive coverage and external-service limits are recorded in this release round.
8
-
9
- ![npm](https://img.shields.io/npm/v/dsh-ppt) ![downloads](https://img.shields.io/npm/dm/dsh-ppt) ![license](https://img.shields.io/github/license/STARDUSTLC666/dsh-ppt) ![stars](https://img.shields.io/github/stars/STARDUSTLC666/dsh-ppt?style=social)
10
-
11
- [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
12
-
13
- > **One sentence or one document → a complete presentation**: HTML web slideshow + PPTX export, 5 visual themes, slide transitions + bullet entrance animations, bilingual Chinese/English.
14
-
15
- DeepSeek Harness (DSH) presentation skill + tool plugin: turns a sentence, a paragraph, or a Markdown document into a ready-to-present **HTML slideshow** and an editable **PPTX**. Pure Node, **zero runtime dependencies**, one codebase for Windows / macOS / Linux.
16
-
17
- ## Capabilities
18
-
19
- | Capability | Description |
20
- | --- | --- |
21
- | `ppt_create` tool | Markdown / structured slides → `*.html` + `*.pptx` + `*.json` |
22
- | `ppt_themes` tool | Lists the 5 built-in themes and their best use cases; pass `preview: true` with `outputDir` to write a side-by-side gallery plus one SVG palette card per theme |
23
- | 7 layouts | cover / section / bullets / statement / **quote** / **table** / closing |
24
- | Speaker notes | `<!-- note: ... -->` comments or the `notes` field: press `S` in the HTML player; native PPTX notes slides (presenter view) |
25
- | Motion | On by default: HTML slide-in transitions + staggered bullet entrances; native PPTX fade transitions + click-to-reveal bullets. `motion: 'off'` / `--motion off` for a fully static deck |
26
- | Markdown extras | Tables (`\| ... \|`), blockquotes (`>`), and note comments are auto-detected into matching layouts |
27
- | `dsh-ppt` skill | A complete six-step SOP registered into DSH |
28
- | Standalone SKILL.md | Copy `skills/dsh-ppt/` into Claude Code / Cursor / Gemini CLI / Codex for cross-harness use |
29
- | Visual engine | Reuses the hyperframes visual style library; HTML and PPTX share the same theme source |
30
-
31
- Example:
32
-
33
- > Turn this sentence into a deck: "AI support cuts first response time to 8 seconds", with a dark tech theme.
34
- >
35
- > Turn `docs/quarterly-review.md` into a bilingual presentation and export PPTX.
36
-
37
- ## Compatibility
38
-
39
- 2026-09-21: the current release package was installed through the official CLI in an isolated profile and co-loaded with the other two most-downloaded plugins on source-built Harness `0.1.6-alpha.2`. All 18 plugin tools registered; calendar/email configuration checks, PPT theme listing and 17-row table generation passed. The host is based on the official alpha.2 release plus the tool-scheduler `Symbol.for` fix (`93badd88`). This run did not connect to live mail or calendar services.
40
-
41
- Verified with official `@deepseek-ai/dsh@0.1.5-rc.1` and Node `24.16.0` on 2026-09-11: all 18 components load alongside Modlens, with passing tool-schema, skill-registration and offline read-only invocation checks. Uses the `cordis.patch.yml` + `dsh.bundle.patch` bundle model. Node requirements match this Harness release: 22.19 or later within 22.x, or 24 or later. Live external-service workflows require separate configuration and validation.
42
-
43
- ## Installation
44
-
45
- ```bash
46
- dsh plugin --profile web add dsh-ppt
47
- ```
48
-
49
- After restart, the `ppt_create` / `ppt_themes` tools and the `dsh-ppt` skill are available. The plugin ships with an empty config and **won't crash startup**.
50
-
51
- ## Uninstall
52
-
53
- ```bash
54
- dsh plugin --profile web remove dsh-ppt
55
- ```
56
-
57
- Then restart the web service. To clean up fully, also remove the plugin entry from your profile `cordis.patch.yml` if you overrode it.
58
-
59
-
60
- ## Quick start
61
-
62
- ### Inside DSH (recommended)
63
-
64
- ```
65
- 1. ppt_themes { preview: true, outputDir: "dist" } # themes + gallery
66
- 2. ppt_create {
67
- title: "Fewer Meetings",
68
- content: "# Problem\n- Too many meetings\n\n# Solution\n- Async decisions",
69
- theme: "data",
70
- lang: "en"
71
- }
72
- 3. Open the returned HTML path in a browser; edit the PPTX in PowerPoint / WPS / Keynote
73
- ```
74
-
75
- ### Any harness (standalone SKILL.md)
76
-
77
- Copy `skills/dsh-ppt/` to any Agent Skills directory, then:
78
-
79
- ```bash
80
- node <skill-dir>/scripts/build-deck.mjs \
81
- --title "Product Launch" \
82
- --content deck.md \
83
- --theme data \
84
- --lang en \
85
- --out dist/deck
86
- ```
87
-
88
- Artifacts:
89
-
90
- Existing artifacts are not overwritten by default: if any member of the trio already exists, the whole set receives a shared `-1`, `-2`, ... suffix. Replacement requires explicit `overwrite: true` (or `--overwrite` in the CLI).
91
-
92
- | File | Purpose |
93
- | --- | --- |
94
- | `*.html` | Standalone slideshow: arrow keys, V presenter view (separate window with real current/next previews, thumbnail strip, notes, timer, progress, pause, font size, blank screen), S notes, G thumbnail overview, F fullscreen, P print, ? shortcuts, Esc close |
95
- | `*.pptx` | Editable 16:9 presentation (hand-written OOXML, zip via `node:zlib`, no third-party deps) |
96
- | `*.json` | Structured manifest (version, theme, language, slides) |
97
-
98
- ## Built-in themes
99
-
100
- | ID | Name | Mood | Best for |
101
- | --- | --- | --- | --- |
102
- | `data` | Data Drift (default) | Futuristic / immersive | AI, tech launches, research |
103
- | `swiss` | Swiss Pulse | Precise / rational | Data, SaaS, developer tools |
104
- | `velvet` | Velvet Standard | Premium / restrained | Executive decks, brand, investor pitches |
105
- | `soft` | Soft Signal | Warm / human | Brand stories, training, personal talks |
106
- | `bold` | Maximalist Type | Loud / kinetic | Product launches, events, big moments |
107
-
108
- Themes are derived from [dsh-hyperframes](https://github.com/STARDUSTLC666/dsh-hyperframes) `visual-styles.md`. Full palettes: `skills/dsh-ppt/references/themes.md`. Run `ppt_themes { preview: true, outputDir: "dist" }` for a side-by-side gallery and SVG palette cards.
109
-
110
- ## Markdown input rules
111
-
112
- - The first `# heading` becomes the cover title; its first paragraph becomes the cover subtitle.
113
- - Each `## section` becomes one slide: lists produce `bullets` slides; empty sections produce `section` dividers.
114
- - Plain text without headings: the first paragraph is the cover, then every 5 sentences become one slide.
115
- - A single sentence automatically produces a complete 3-slide structure: cover → core idea → closing.
116
- - Long tables paginate automatically with repeated headers and up to 8 data rows per page. Notes stay on the first page. Tables support 8 columns and 60 characters per cell; oversized input returns an actionable error. Short rows are padded consistently in all artifacts.
117
- - `maxSlides` counts pages after expansion. Exceeding it fails before writing files; raise the limit (up to 120) or split the deck. Middle slides are never silently discarded.
118
- - For precise control, use structured `slides` (`cover | section | bullets | statement | quote | table | closing`), with `rows` for tables and `notes` for speaker notes.
119
-
120
- ## Configuration
121
-
122
- No required configuration. Optional:
123
-
124
- ```yaml
125
- - id: dsh-ppt
126
- config:
127
- outputDir: E:\decks # optional; defaults to the session working directory
128
- maxSlides: 40 # optional; default 60 (3–120)
129
- defaultTheme: data # optional; used when ppt_create has no theme
130
- defaultLang: en # optional; used when ppt_create has no lang (zh/en/bilingual)
131
- ```
132
-
133
- The `DSH_PPT_OUTPUT_DIR` env var can also set the default output directory; the `ppt_create` `outputDir`/`theme`/`lang` arguments have the highest priority.
134
-
135
- Output paths resolve against each tool call's `exec.agent.session.header.cwd`: omitted paths use the session directory, relative paths (including plugin configuration) resolve within it, and absolute paths keep their meaning. Direct calls without a session fall back to the process working directory; concurrent sessions never change process cwd. Tools check `exec.signal` before and after loading the engine, so cancelled calls do not proceed to generation. Rendering and writing are synchronous and finish the artifact trio once started.
136
-
137
- ## Bilingual support
138
-
139
- - `lang` argument: `zh` (default) / `en` / `bilingual` controls the player UI, page numbers, and closing defaults.
140
- - Content language is up to the author: for a bilingual deck, prefer "Chinese title + English subtitle" or generate two decks from the same outline.
141
- - Plugin docs come in Chinese (README.md) and English (this file); CLI and skill error messages are in Chinese.
142
-
143
- ## Engineering quality
144
-
145
- - Pure Node, zero runtime dependencies: HTML template, OOXML, and zip are hand-written using only `node:fs` / `node:path` / `node:zlib`.
146
- - The skill and tools share one engine (`skills/dsh-ppt/scripts/deck-core.mjs`), so DSH and bare-skill output are identical.
147
- - Unit tests cover registration contracts, JSON Schema, theme resolution, Markdown parsing, artifact generation, PPTX part integrity, and the CLI.
148
- - No `eval` / `child_process` / secrets; artifacts are only written to the user-specified local directory.
149
-
150
- ## Development
151
-
152
- ```sh
153
- pnpm install
154
- pnpm run build # tsc → lib/
155
- pnpm test # build + node --test (registration/config/engine/CLI)
156
- pnpm run smoke:cli # bare CLI smoke test, generates .smoke-deck
157
- ```
158
-
159
- ## Known limitations
160
-
161
- - The PPTX uses a blank layout plus text boxes: text is editable in PowerPoint / WPS, but no smart master placeholders yet.
162
- - A one-sentence input produces a minimal 3-slide structure; for richer decks, expand the content into a Markdown outline first.
163
- - `bilingual` only localizes the player UI; it does not translate content.
164
- - Charts and images are not supported yet; speaker notes and HTML/PPTX motion are already supported.
165
-
166
- ## License
167
-
168
- MIT. Community plugin, not affiliated with DeepSeek; `@deepseek-ai/*` is an officially reserved namespace.
169
-
170
- ## Related projects
171
-
172
- - [dsh-hyperframes](https://github.com/STARDUSTLC666/dsh-hyperframes) — HTML video skills (source of this plugin's visual styles)
173
- - [dsh-remotion](https://github.com/STARDUSTLC666/dsh-remotion) — React programmatic video skills
174
- - [dsh-email](https://github.com/STARDUSTLC666/dsh-email) — Email toolset
17
+ Validation host: Harness `0.2.0-rc.1` built from official sources (commit `407e65c8`) with Node `24.16.0` on 2026-09-28. All 70 plugin tests pass in an isolated environment; all 18 plugins mount together in one host registering 1 skills and 2 tools, with tool schemas and health-check contracts passing. No live ports or external services were exercised in this round.
18
+
19
+ ![npm](https://img.shields.io/npm/v/dsh-ppt) ![downloads](https://img.shields.io/npm/dm/dsh-ppt) ![license](https://img.shields.io/github/license/STARDUSTLC666/dsh-ppt) ![stars](https://img.shields.io/github/stars/STARDUSTLC666/dsh-ppt?style=social)
20
+
21
+ [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
22
+
23
+ > **One sentence or one document → a complete presentation**: HTML web slideshow + PPTX export, 5 visual themes, slide transitions + bullet entrance animations, bilingual Chinese/English.
24
+
25
+ DeepSeek Harness (DSH) presentation skill and tools: the agent prepares content, then generates an offline **HTML slideshow**, editable **PPTX** and **JSON project**. Images/charts use exact-version `@office-kit/pptx@0.21.0`; the shared Node generator supports Windows/macOS/Linux.
26
+
27
+ ## Capabilities
28
+
29
+ | Capability | Description |
30
+ | --- | --- |
31
+ | `ppt_create` tool | Markdown / structured slides → `*.html` + `*.pptx` + `*.json` |
32
+ | `ppt_themes` tool | Lists the 5 built-in themes and their best use cases; pass `preview: true` with `outputDir` to write a side-by-side gallery plus one SVG palette card per theme |
33
+ | 11 layouts | cover / section / bullets / statement / quote / table / closing / image / image-left / image-right / chart |
34
+ | Speaker notes | `<!-- note: ... -->` comments or the `notes` field: press `S` in the HTML player; native PPTX notes slides (presenter view) |
35
+ | Motion | On by default: HTML slide-in transitions + staggered bullet entrances; native PPTX fade transitions + click-to-reveal bullets. `motion: 'off'` / `--motion off` for a fully static deck |
36
+ | Markdown extras | Tables (`\| ... \|`), blockquotes (`>`), and note comments are auto-detected into matching layouts |
37
+ | `dsh-ppt` skill | A complete six-step SOP registered into DSH |
38
+ | Standalone SKILL.md | Copy `skills/dsh-ppt/` into Claude Code / Cursor / Gemini CLI / Codex for cross-harness use |
39
+ | Visual engine | Reuses the hyperframes visual style library; HTML and PPTX share the same theme source |
40
+
41
+ Example:
42
+
43
+ > Turn this sentence into a deck: "AI support cuts first response time to 8 seconds", with a dark tech theme.
44
+ >
45
+ > Turn `docs/quarterly-review.md` into a bilingual presentation and export PPTX.
46
+
47
+ ## Compatibility
48
+
49
+ Plugin and standalone skill require Node `^22.19.0 || >=24.0.0`. No API key or mandatory configuration. The optional renderer is loaded on demand and its absence does not prevent startup or ordinary creation. Windows samples have been exercised in the browser, opened/exported in Microsoft PowerPoint, and rendered using the official Kit; review the actual pages for each new deck.
50
+
51
+ ## Installation
52
+
53
+ ```bash
54
+ dsh plugin --profile web add dsh-ppt
55
+ ```
56
+
57
+ On desktop, install `dsh-ppt` through plugin management. Restart the host after updating to load seven tools and the skill. Ask naturally to include screenshots/charts, edit only slide three, or undo the last edit; users do not need to write JSON.
58
+
59
+ ## Uninstall
60
+
61
+ ```bash
62
+ dsh plugin --profile web remove dsh-ppt
63
+ ```
64
+
65
+ Then restart the web service. To clean up fully, also remove the plugin entry from your profile `cordis.patch.yml` if you overrode it.
66
+
67
+
68
+ ## Quick start
69
+
70
+ ### Inside DSH (recommended)
71
+
72
+ ```
73
+ 1. ppt_themes { preview: true, outputDir: "dist" } # themes + gallery
74
+ 2. ppt_create {
75
+ title: "Fewer Meetings",
76
+ content: "# Problem\n- Too many meetings\n\n# Solution\n- Async decisions",
77
+ theme: "data",
78
+ lang: "en"
79
+ }
80
+ 3. Open the returned HTML path in a browser; edit the PPTX in PowerPoint / WPS / Keynote
81
+ ```
82
+
83
+ ### Any harness (standalone SKILL.md)
84
+
85
+ Copy `skills/dsh-ppt/` to any Agent Skills directory, then:
86
+
87
+ ```bash
88
+ node <skill-dir>/scripts/build-deck.mjs \
89
+ --title "Product Launch" \
90
+ --content deck.md \
91
+ --theme data \
92
+ --lang en \
93
+ --out dist/deck
94
+ ```
95
+
96
+ Artifacts:
97
+
98
+ Existing artifacts are not overwritten by default: if any member of the trio already exists, the whole set receives a shared `-1`, `-2`, ... suffix. Replacement requires explicit `overwrite: true` (or `--overwrite` in the CLI).
99
+
100
+ | File | Purpose |
101
+ | --- | --- |
102
+ | `*.html` | Standalone slideshow: arrow keys, V presenter view (separate window with real current/next previews, thumbnail strip, notes, timer, progress, pause, font size, blank screen), S notes, G thumbnail overview, F fullscreen, P print, ? shortcuts, Esc close |
103
+ | `*.pptx` | Editable 16:9 presentation (hand-written OOXML, zip via `node:zlib`, no third-party deps) |
104
+ | `*.json` | Structured manifest (version, theme, language, slides) |
105
+
106
+ ## Images, charts, editing and review
107
+
108
+ The additional tools are `ppt_templates`, `ppt_edit`, `ppt_undo`, `ppt_check`, and `ppt_render`. New layouts are `image`, `image-left`, `image-right` and `chart`, alongside the seven existing layouts.
109
+
110
+ An image slide accepts `image: {src, alt, fit: "contain"|"cover", caption}`. Use local PNG/JPEG paths relative to session cwd or matching data URIs. Assets are embedded in all outputs and undo works after original files move. Limits: 5 MiB / 32 megapixels per image, 32 MiB total project assets. Remote links and SVG are not automatically downloaded or converted.
111
+
112
+ A chart accepts `chart: {kind:"column"|"bar"|"line"|"pie", categories, series:[{name,values}], unit, caption}` or `rows` with a category/series header. Values must be finite with matching lengths. Pie requires one nonnegative series with a positive total. HTML uses accessible SVG and data tables; PPTX contains native charts and embedded editable workbooks.
113
+
114
+ `brand` supports `name`, `primaryColor`, `backgroundColor`, `textColor`, `fontFamily`, `logo` and `footer`. Colors are `#RRGGBB`; select a font available on the recipient computer. `template` is `weekly|defense|project|pitch` and does not overwrite a supplied narrative.
115
+
116
+ Edit example: `{deckPath:"report.json",expectedRevision:0,edits:[{slide:3,patch:{title:"A clearer conclusion",bullets:["Evidence","Next action"]}}]}`. Use `ppt_check` to obtain stable IDs and the revision; `ppt_undo` restores the latest edit including assets/brand. Keeps up to 20 edits and rejects stale revisions. The artifact trio is regenerated atomically with rollback on commit failure.
117
+
118
+ `deliveryStatus: draft` means unfilled slots; `ready-for-review` means review can start. Static estimates, rendering and visual inspection are recorded separately. Generation/rendering never automatically certifies visual quality. Inspect HTML and every page image before delivery.
119
+
120
+ ## Optional PNG/PDF renderer
121
+
122
+ Install in the plugin's project or standalone skill directory:
123
+
124
+ ```bash
125
+ npm install --ignore-scripts @deepseek-ai/libreoffice-kit@0.1.3
126
+ ```
127
+
128
+ The exact optional peer is not a mandatory engine download for ordinary consumers. Windows also needs the Microsoft Visual C++ v14 runtime matching Node's architecture. Missing dependency/engine returns `unavailable` with guidance.
129
+
130
+ `ppt_render {pptxPath:"report.pptx",format:"both"}` reads the final PPTX without resaving it and returns page PNGs, PDF and `receiptPath`. Pass that path as `renderReceipt` to `ppt_check` to recheck the current PPTX and every output's digest. Editing the source or outputs invalidates the receipt. Static artifacts do not retain animation. LibreOffice/PowerPoint/WPS may lay out files differently; font diagnostics do not guarantee every glyph or install fonts. See [integration details](docs/LIBREOFFICE-INTEGRATION-2026-10-01.md).
131
+
132
+ CLI supports `--slides @slides.json`, `--brand @brand.json`, `--template weekly`, `--edit report.json --edits @edits.json --revision 0`, `--undo report.json --revision 1`, `--check report.json`, and `--render report.pptx --format both`. Explicit receipt validation uses `--check report.json --render-receipt path/to/render-receipt.json`; failure returns a nonzero exit code.
133
+
134
+ For standalone usage copy the entire skill directory and run `npm install --ignore-scripts` there. Plain text remains usable without Office Kit; image/chart/logo/footer PPTX export needs Office Kit 0.21.0. `dsh-ppt/deck-advanced` exports `buildDeckAsync`, `editDeck`, `undoDeck`, `checkDeckAsync` and `renderDeck`. The legacy synchronous `deck-core` API supports plain text and explicitly rejects unsupported media inputs.
135
+
136
+ ## Theme palette
137
+
138
+ | ID | Name | Mood | Best for |
139
+ | --- | --- | --- | --- |
140
+ | `data` | Data Drift (default) | Futuristic / immersive | AI, tech launches, research |
141
+ | `swiss` | Swiss Pulse | Precise / rational | Data, SaaS, developer tools |
142
+ | `velvet` | Velvet Standard | Premium / restrained | Executive decks, brand, investor pitches |
143
+ | `soft` | Soft Signal | Warm / human | Brand stories, training, personal talks |
144
+ | `bold` | Maximalist Type | Loud / kinetic | Product launches, events, big moments |
145
+
146
+ Themes are derived from [dsh-hyperframes](https://github.com/STARDUSTLC666/dsh-hyperframes) `visual-styles.md`. Full palettes: `skills/dsh-ppt/references/themes.md`. Run `ppt_themes { preview: true, outputDir: "dist" }` for a side-by-side gallery and SVG palette cards.
147
+
148
+ ## Markdown input rules
149
+
150
+ - The first `# heading` becomes the cover title; its first paragraph becomes the cover subtitle.
151
+ - Each `## section` becomes one slide: lists produce `bullets` slides; empty sections produce `section` dividers.
152
+ - Plain text without headings: the first paragraph is the cover, then every 5 sentences become one slide.
153
+ - A single sentence automatically produces a complete 3-slide structure: cover → core idea → closing.
154
+ - Long tables paginate automatically with repeated headers and up to 8 data rows per page. Notes stay on the first page. Tables support 8 columns and 60 characters per cell; oversized input returns an actionable error. Short rows are padded consistently in all artifacts.
155
+ - `maxSlides` counts pages after expansion. Exceeding it fails before writing files; raise the limit (up to 120) or split the deck. Middle slides are never silently discarded.
156
+ - For precise control, use structured `slides` (`cover | section | bullets | statement | quote | table | closing`), with `rows` for tables and `notes` for speaker notes.
157
+
158
+ ## Configuration
159
+
160
+ No required configuration. Optional:
161
+
162
+ ```yaml
163
+ - id: dsh-ppt
164
+ config:
165
+ outputDir: E:\decks # optional; defaults to the session working directory
166
+ maxSlides: 40 # optional; default 60 (3–120)
167
+ defaultTheme: data # optional; used when ppt_create has no theme
168
+ defaultLang: en # optional; used when ppt_create has no lang (zh/en/bilingual)
169
+ ```
170
+
171
+ The `DSH_PPT_OUTPUT_DIR` env var can also set the default output directory; the `ppt_create` `outputDir`/`theme`/`lang` arguments have the highest priority.
172
+
173
+ Relative paths and configured output directories resolve per session cwd without changing process cwd. Cancellation is checked during generation and before atomic commit of the trio. Optional rendering defaults to a unique `<deck>-render` directory beside the PPTX.
174
+
175
+ ## Bilingual support
176
+
177
+ - `lang` argument: `zh` (default) / `en` / `bilingual` controls the player UI, page numbers, and closing defaults.
178
+ - Content language is up to the author: for a bilingual deck, prefer "Chinese title + English subtitle" or generate two decks from the same outline.
179
+ - Plugin docs come in Chinese (README.md) and English (this file); CLI and skill error messages are in Chinese.
180
+
181
+ ## Engineering quality
182
+
183
+ - Tools and the skill share an asynchronous generator. The legacy synchronous plain-text API remains available.
184
+ - Images and native charts use MIT-licensed `@office-kit/pptx@0.21.0`; optional rendering is loaded on demand.
185
+ - Unit tests cover registration contracts, JSON Schema, theme resolution, Markdown parsing, artifact generation, PPTX part integrity, and the CLI.
186
+ - No `eval` / `child_process` / secrets; artifacts are only written to the user-specified local directory.
187
+
188
+ ## Development
189
+
190
+ ```sh
191
+ pnpm install
192
+ pnpm run build # tsc → lib/
193
+ pnpm test # build + node --test (registration/config/engine/CLI)
194
+ pnpm run smoke:cli # bare CLI smoke test, generates .smoke-deck
195
+ ```
196
+
197
+ ## Known limitations
198
+
199
+ - The PPTX uses a blank layout plus text boxes: text is editable in PowerPoint / WPS, but no smart master placeholders yet.
200
+ - A one-sentence input produces a minimal 3-slide structure; for richer decks, expand the content into a Markdown outline first.
201
+ - `bilingual` only localizes the player UI; it does not translate content.
202
+ - Selected-page editing supports this plugin's JSON project, not arbitrary external PPTX editing.
203
+ - Text fit checks are static estimates; inspect actual rendered output for clipping and font substitution.
204
+
205
+ ## License
206
+
207
+ Plugin: MIT. Office Kit: MIT. Optional official LibreOffice Kit and its engine retain their own source/license/third-party notices. This community plugin is not officially maintained by DeepSeek.
208
+
209
+ ## Related projects
210
+
211
+ - [dsh-hyperframes](https://github.com/STARDUSTLC666/dsh-hyperframes) — HTML video skills (source of this plugin's visual styles)
212
+ - [dsh-remotion](https://github.com/STARDUSTLC666/dsh-remotion) — React programmatic video skills
213
+ - [dsh-email](https://github.com/STARDUSTLC666/dsh-email) — Email toolset