dsh-ppt 0.2.0 → 0.2.1

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.en.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # dsh-ppt
2
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
+
3
5
  [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
4
6
 
5
7
  > **One sentence or one document → a complete presentation**: HTML web slideshow + PPTX export, 5 visual themes, bilingual Chinese/English.
@@ -22,6 +24,10 @@ Example:
22
24
  >
23
25
  > Turn `docs/quarterly-review.md` into a bilingual presentation and export PPTX.
24
26
 
27
+ ## Compatibility
28
+
29
+ Verified against `@deepseek-ai/dsh@0.1.2-alpha.2` on 2026-08-31. Built for the cordis patch-bundle plugin model (`cordis.patch.yml` + `dsh.bundle.patch`). No runtime imports of `@deepseek-ai/*` internals.
30
+
25
31
  ## Installation
26
32
 
27
33
  ```bash
@@ -30,6 +36,15 @@ dsh plugin --profile web add dsh-ppt
30
36
 
31
37
  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**.
32
38
 
39
+ ## Uninstall
40
+
41
+ ```bash
42
+ dsh plugin --profile web remove dsh-ppt
43
+ ```
44
+
45
+ Then restart the web service. To clean up fully, also remove the plugin entry from your profile `cordis.patch.yml` if you overrode it.
46
+
47
+
33
48
  ## Quick start
34
49
 
35
50
  ### Inside DSH (recommended)
package/README.md CHANGED
@@ -26,6 +26,10 @@ DSH(DeepSeek Harness)演示文稿技能 + 工具插件:把一句话、一
26
26
  >
27
27
  > 把 `docs/季度汇报.md` 做成双语演示文稿,导出 PPTX。
28
28
 
29
+ ## 兼容性
30
+
31
+ 在 `@deepseek-ai/dsh@0.1.2-alpha.2` 上验证(2026-08-31)。遵循 cordis 组合包补丁模型(`cordis.patch.yml` + `dsh.bundle.patch`),运行时不 import 任何 `@deepseek-ai/*` 内部模块。
32
+
29
33
  ## 安装
30
34
 
31
35
  ```bash
@@ -105,6 +109,15 @@ node <skill-dir>/scripts/build-deck.mjs \
105
109
 
106
110
  也可用环境变量 `DSH_PPT_OUTPUT_DIR` 指定默认输出目录;`ppt_create` 的 `outputDir`/`theme`/`lang` 参数优先级最高。
107
111
 
112
+
113
+ ## 卸载
114
+
115
+ ```bash
116
+ dsh plugin --profile web remove dsh-ppt
117
+ ```
118
+
119
+ 卸载后重启 Web 服务。如需彻底清理,可再手动删除自己 profile `cordis.patch.yml` 中的对应插件行。
120
+
108
121
  ## 中英双语
109
122
 
110
123
  - `lang` 参数:`zh`(默认)/ `en` / `bilingual`,控制播放器界面、页码与结束页默认文案。
@@ -142,4 +155,4 @@ MIT。社区插件,与 DeepSeek 官方无关;`@deepseek-ai/*` 为官方保
142
155
 
143
156
  - [dsh-hyperframes](https://github.com/STARDUSTLC666/dsh-hyperframes) — HTML 视频创作技能(本插件视觉风格来源)
144
157
  - [dsh-remotion](https://github.com/STARDUSTLC666/dsh-remotion) — React 编程式视频技能
145
- - [dsh-email](https://github.com/STARDUSTLC666/dsh-email) — 邮件六件套
158
+ - [dsh-email](https://github.com/STARDUSTLC666/dsh-email) — 邮件六件套
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-ppt",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "DSH 演示文稿技能 + 工具插件:一句话或一篇 Markdown 文档 → 完整演示文稿(独立 HTML 网页放映 + 可编辑 PPTX 导出),内置 5 套视觉主题,可配置默认主题/语言,中英双语,SKILL.md 双格式跨 harness。",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -27,7 +27,6 @@
27
27
  ],
28
28
  "scripts": {
29
29
  "build": "tsc -p tsconfig.json",
30
- "prepare": "tsc -p tsconfig.json",
31
30
  "typecheck": "tsc -p tsconfig.json --noEmit",
32
31
  "test": "pnpm run build && node --test \"test/*.test.mjs\"",
33
32
  "test:core": "node --test \"test/*.test.mjs\"",
@@ -52,7 +51,7 @@
52
51
  ],
53
52
  "license": "MIT",
54
53
  "engines": {
55
- "node": ">=20"
54
+ "node": ">=22"
56
55
  },
57
56
  "devDependencies": {
58
57
  "@types/node": "^24.0.0",
@@ -1121,6 +1121,7 @@ function buildZip(entries) {
1121
1121
  let offset = 0
1122
1122
 
1123
1123
  for (const entry of entries) {
1124
+ const entryOffset = offset
1124
1125
  const name = Buffer.from(entry.name, 'utf8')
1125
1126
  const data = Buffer.isBuffer(entry.data) ? entry.data : Buffer.from(String(entry.data), 'utf8')
1126
1127
  const crc = crc32(data)
@@ -1160,7 +1161,7 @@ function buildZip(entries) {
1160
1161
  centralHeader.writeUInt16LE(0, 34)
1161
1162
  centralHeader.writeUInt16LE(0, 36)
1162
1163
  centralHeader.writeUInt32LE(0, 38)
1163
- centralHeader.writeUInt32LE(0, 42)
1164
+ centralHeader.writeUInt32LE(entryOffset, 42)
1164
1165
  central.push(centralHeader, name)
1165
1166
  }
1166
1167