dsh-ppt 0.4.4 → 0.5.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,60 +1,75 @@
1
- # Changelog
2
-
3
- ## 0.4.4(2026-09-21)
4
-
5
- - Markdown 与结构化长表格自动按每页 8 行数据分页,续页重复表头,备注仅放第一页;修复无小标题、首个 H1 下表格被丢弃。
6
- - 不再静默裁掉中间幻灯片、额外列或长单元格:总页数超过 maxSlides、超过 8 列或单元格超过 60 字符时,生成前提示调整。短行补空白,HTML 与 PPTX 保留同一份数据。
7
- - 续页标题跟随中文、英文或双语设置。新增 7 项回归,67 项测试通过;生成产物检查覆盖全部 17 行数据。
8
-
9
- ## 0.4.3(2026-09-18)
10
-
11
- - 修复:中文分句导致正文丢内容;`--content deck.md` 不读文件;>8 条要点静默丢弃;`deck.json` 版本写死;英文 deck 被标 zh-CN。
12
- - 稳健性:三件套改为 tmp + rename 原子提交(失败回滚);过滤 Windows 保留名;文件名探测改一次目录快照。
13
- - 测试 48 → 60 项。
14
- ## 0.4.2(2026-09-11)
15
-
16
- - 适配并验证官方 Harness 0.1.5-rc.1:整套同载、工具/技能契约与 Web 鉴权检查通过。
17
- - Node 要求与宿主统一为 `^22.19.0 || >=24.0.0`;更新中英文兼容性说明。
18
-
19
- ## 0.4.1
20
-
21
- - 修复中文正文分页:中英文标点都作为句子边界,无标题纯文本严格按「每 5 句一页」分页,不再把整段中文当一句而截断丢正文。
22
- - CLI `--content <path>` 与 `--content @<path>` 行为一致:路径存在即读取文件,README / SKILL.md 示例可直接复制运行。
23
- - 单节要点超过 8 条时自动续页(第二页起标题带「(续)」),不再静默丢弃第 9 条之后的要点。
24
- - manifest `version` 改从 `package.json` 读取,消除与发版号的漂移;测试同步改为动态断言。
25
- - PPTX 文本与备注 run 的语言跟随 `lang`(zh-CN / en-US),英文 deck 不再被 PowerPoint 标成中文。
26
-
27
- ## 0.4.0
28
-
29
- - **动效(motion,默认开)**:HTML 放映页间淡入 + 要点按序逐条入场(打印自动兜底为静态);PPTX 每页原生淡入转场,`bullets` 页按段落构建、放映时点击一次出现一条要点(PowerPoint「出现,按段落」标准时序)。
30
- - **`motion` 开关**:`ppt_create` 新增 `motion: 'on' | 'off'`,CLI 新增 `--motion on|off`;`off` 时产物不含任何动画代码,适合严肃/打印场景。manifest 记录该开关。
31
- - **技能文件瘦身**:SKILL.md 收敛为触发条件 + 执行纪律 + 六步流水线 + 按需装载索引 + 质量门禁;新增 `references/syntax.md`(Markdown 解析、表格/金句/备注语法、结构化 slides、motion)与 `references/troubleshooting.md`;写作规则去重归口 `references/copywriting.md`,hyperframes 视觉联动并入 `references/themes.md`。
32
- - 动效相关测试 8 例(转场/时序树/点击节点计数/静态开关/CLI/工具层),全套 42/42 通过。
33
-
34
- ## 0.3.0
35
-
36
- - **演讲者备注**:结构化 `slides` 的 `notes` 字段与 Markdown `<!-- 备注: ... -->` 注释都会成为该页备注;HTML 放映按 `S` 键(或右下角「备注」按钮)呼出备注面板;PPTX 生成原生 `notesSlide` + `notesMaster` 部件,PowerPoint 演示者视图直接可用。
37
- - **新增 `quote` 金句版式**:`>` 引用块自动识别,末行 `—— 出处` 识别为署名;HTML 与 PPTX 双端实现。
38
- - **新增 `table` 表格版式**:Markdown 表格(`| ... |`)自动识别,PPTX 用原生 `a:tbl` 图形帧(主题色表头 + 隔行着色),限 9 行 8 列。
39
- - 版式集合扩为 `cover | section | bullets | statement | quote | table | closing`;结构化 `slides` 增加 `rows` 字段。
40
- - 无表格数据的 `table` 页自动退化为要点页,避免空白版式。
41
- - 新特性测试 8 例(解析/规范化/HTML/PPTX 部件/端到端)。
42
-
43
- ## 0.2.1
44
-
45
- - 修复 PPTX zip 中央目录 local header 偏移恒为 0 导致 PowerPoint 提示修复的问题(issue #1/#3,社区 PR #2 同修法)。
46
-
47
- ## 0.2.0
48
-
49
- - 新增 `defaultTheme` / `defaultLang` 配置,作为 `ppt_create` 未显式传参时的默认值。
50
- - 配置校验:`defaultLang` 仅接受 `zh` / `en` / `bilingual`。
51
- - 更新测试覆盖与双语文档。
52
-
53
- ## 0.1.0
54
-
55
- - 首发:`dsh-ppt` 技能 + 工具插件。
56
- - `ppt_create`:Markdown / 结构化 slides → HTML 网页放映 + PPTX 导出 + manifest。
57
- - `ppt_themes`:5 套内置视觉主题(Swiss Pulse / Velvet Standard / Data Drift / Soft Signal / Maximalist Type)。
58
- - 中英双语界面(zh / en / bilingual)。
59
- - 裸 SKILL.md + `build-deck.mjs` CLI,跨 Claude Code / Cursor / Gemini CLI / Codex / DSH。
60
- - 零运行时依赖:OOXML 与 zip 由 `node:zlib` 手写生成。
1
+ # Changelog
2
+
3
+ ## 0.5.0(2026-09-27)
4
+
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` 手写生成。
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 stardustlc
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 stardustlc
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.en.md CHANGED
@@ -1,168 +1,174 @@
1
- # dsh-ppt
2
-
3
- ![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)
4
-
5
- [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
6
-
7
- > **One sentence or one document → a complete presentation**: HTML web slideshow + PPTX export, 5 visual themes, slide transitions + bullet entrance animations, bilingual Chinese/English.
8
-
9
- 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.
10
-
11
- ## Capabilities
12
-
13
- | Capability | Description |
14
- | --- | --- |
15
- | `ppt_create` tool | Markdown / structured slides → `*.html` + `*.pptx` + `*.json` |
16
- | `ppt_themes` tool | Lists the 5 built-in themes and their best use cases |
17
- | 7 layouts | cover / section / bullets / statement / **quote** / **table** / closing |
18
- | Speaker notes | `<!-- note: ... -->` comments or the `notes` field: press `S` in the HTML player; native PPTX notes slides (presenter view) |
19
- | 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 |
20
- | Markdown extras | Tables (`\| ... \|`), blockquotes (`>`), and note comments are auto-detected into matching layouts |
21
- | `dsh-ppt` skill | A complete six-step SOP registered into DSH |
22
- | Standalone SKILL.md | Copy `skills/dsh-ppt/` into Claude Code / Cursor / Gemini CLI / Codex for cross-harness use |
23
- | Visual engine | Reuses the hyperframes visual style library; HTML and PPTX share the same theme source |
24
-
25
- Example:
26
-
27
- > Turn this sentence into a deck: "AI support cuts first response time to 8 seconds", with a dark tech theme.
28
- >
29
- > Turn `docs/quarterly-review.md` into a bilingual presentation and export PPTX.
30
-
31
- ## Compatibility
32
-
33
- 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.
34
-
35
- 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.
36
-
37
- ## Installation
38
-
39
- ```bash
40
- dsh plugin --profile web add dsh-ppt
41
- ```
42
-
43
- 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**.
44
-
45
- ## Uninstall
46
-
47
- ```bash
48
- dsh plugin --profile web remove dsh-ppt
49
- ```
50
-
51
- Then restart the web service. To clean up fully, also remove the plugin entry from your profile `cordis.patch.yml` if you overrode it.
52
-
53
-
54
- ## Quick start
55
-
56
- ### Inside DSH (recommended)
57
-
58
- ```
59
- 1. ppt_themes # inspect the 5 themes
60
- 2. ppt_create {
61
- title: "Fewer Meetings",
62
- content: "# Problem\n- Too many meetings\n\n# Solution\n- Async decisions",
63
- theme: "data",
64
- lang: "en"
65
- }
66
- 3. Open the returned HTML path in a browser; edit the PPTX in PowerPoint / WPS / Keynote
67
- ```
68
-
69
- ### Any harness (standalone SKILL.md)
70
-
71
- Copy `skills/dsh-ppt/` to any Agent Skills directory, then:
72
-
73
- ```bash
74
- node <skill-dir>/scripts/build-deck.mjs \
75
- --title "Product Launch" \
76
- --content deck.md \
77
- --theme data \
78
- --lang en \
79
- --out dist/deck
80
- ```
81
-
82
- Artifacts:
83
-
84
- 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).
85
-
86
- | File | Purpose |
87
- | --- | --- |
88
- | `*.html` | Standalone web slideshow: arrow keys/wheel/touch navigation, F fullscreen, G overview, P print/save as PDF |
89
- | `*.pptx` | Editable 16:9 presentation (hand-written OOXML, zip via `node:zlib`, no third-party deps) |
90
- | `*.json` | Structured manifest (version, theme, language, slides) |
91
-
92
- ## Built-in themes
93
-
94
- | ID | Name | Mood | Best for |
95
- | --- | --- | --- | --- |
96
- | `data` | Data Drift (default) | Futuristic / immersive | AI, tech launches, research |
97
- | `swiss` | Swiss Pulse | Precise / rational | Data, SaaS, developer tools |
98
- | `velvet` | Velvet Standard | Premium / restrained | Executive decks, brand, investor pitches |
99
- | `soft` | Soft Signal | Warm / human | Brand stories, training, personal talks |
100
- | `bold` | Maximalist Type | Loud / kinetic | Product launches, events, big moments |
101
-
102
- Themes are derived from [dsh-hyperframes](https://github.com/STARDUSTLC666/dsh-hyperframes) `visual-styles.md`. Full palettes: `skills/dsh-ppt/references/themes.md`.
103
-
104
- ## Markdown input rules
105
-
106
- - The first `# heading` becomes the cover title; its first paragraph becomes the cover subtitle.
107
- - Each `## section` becomes one slide: lists produce `bullets` slides; empty sections produce `section` dividers.
108
- - Plain text without headings: the first paragraph is the cover, then every 5 sentences become one slide.
109
- - A single sentence automatically produces a complete 3-slide structure: cover → core idea → closing.
110
- - 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.
111
- - `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.
112
- - For precise control, use structured `slides` (`cover | section | bullets | statement | quote | table | closing`), with `rows` for tables and `notes` for speaker notes.
113
-
114
- ## Configuration
115
-
116
- No required configuration. Optional:
117
-
118
- ```yaml
119
- - id: dsh-ppt
120
- config:
121
- outputDir: E:\decks # optional; defaults to the session working directory
122
- maxSlides: 40 # optional; default 60 (3–120)
123
- defaultTheme: data # optional; used when ppt_create has no theme
124
- defaultLang: en # optional; used when ppt_create has no lang (zh/en/bilingual)
125
- ```
126
-
127
- 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.
128
-
129
- 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.
130
-
131
- ## Bilingual support
132
-
133
- - `lang` argument: `zh` (default) / `en` / `bilingual` controls the player UI, page numbers, and closing defaults.
134
- - Content language is up to the author: for a bilingual deck, prefer "Chinese title + English subtitle" or generate two decks from the same outline.
135
- - Plugin docs come in Chinese (README.md) and English (this file); CLI and skill error messages are in Chinese.
136
-
137
- ## Engineering quality
138
-
139
- - Pure Node, zero runtime dependencies: HTML template, OOXML, and zip are hand-written using only `node:fs` / `node:path` / `node:zlib`.
140
- - The skill and tools share one engine (`skills/dsh-ppt/scripts/deck-core.mjs`), so DSH and bare-skill output are identical.
141
- - Unit tests cover registration contracts, JSON Schema, theme resolution, Markdown parsing, artifact generation, PPTX part integrity, and the CLI.
142
- - No `eval` / `child_process` / secrets; artifacts are only written to the user-specified local directory.
143
-
144
- ## Development
145
-
146
- ```sh
147
- pnpm install
148
- pnpm run build # tsc → lib/
149
- pnpm test # build + node --test (registration/config/engine/CLI)
150
- pnpm run smoke:cli # bare CLI smoke test, generates .smoke-deck
151
- ```
152
-
153
- ## Known limitations
154
-
155
- - The PPTX uses a blank layout plus text boxes: text is editable in PowerPoint / WPS, but no smart master placeholders yet.
156
- - A one-sentence input produces a minimal 3-slide structure; for richer decks, expand the content into a Markdown outline first.
157
- - `bilingual` only localizes the player UI; it does not translate content.
158
- - Charts and images are not supported yet; speaker notes and HTML/PPTX motion are already supported.
159
-
160
- ## License
161
-
162
- MIT. Community plugin, not affiliated with DeepSeek; `@deepseek-ai/*` is an officially reserved namespace.
163
-
164
- ## Related projects
165
-
166
- - [dsh-hyperframes](https://github.com/STARDUSTLC666/dsh-hyperframes) — HTML video skills (source of this plugin's visual styles)
167
- - [dsh-remotion](https://github.com/STARDUSTLC666/dsh-remotion) — React programmatic video skills
168
- - [dsh-email](https://github.com/STARDUSTLC666/dsh-email) — Email toolset
1
+ # dsh-ppt
2
+
3
+ ## 0.5.0 update (2026-09-27)
4
+
5
+ Includes presenter previews, thumbnails and timer controls. Unsupported or rejected fullscreen requests now show an actionable message instead of silently failing.
6
+
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