keyshot-mcp 0.13.0 → 0.13.5

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
@@ -4,6 +4,88 @@ All notable changes to KeyShot MCP are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.13.5] - 2026-10-20
8
+
9
+ ### Installation and Diagnostics / 安装与诊断
10
+
11
+ - Isolate each bridge request in a private temporary subdirectory, clean it after execution, and return structured failures for local filesystem errors. Preserve completed diagnostic checks when startup throws; check temporary storage before launching KeyShot.
12
+ - 每次桥接请求使用独立临时子目录并在执行后清理;本地文件系统出错时返回结构化结果。启动抛异常时保留已完成的诊断,并在启动 KeyShot 前检查临时目录。
13
+
14
+ - Store bridge request/result files in the system temporary directory instead of the installed package, avoiding Windows path-length failures in nested installations.
15
+ - 将桥接请求与结果文件移到系统临时目录,避免 Windows 嵌套安装路径过长导致 KeyShot 无法写回结果。
16
+
17
+ ### Publication Privacy / 发布隐私
18
+
19
+ - Add a redacted public-content check to CI and publication, including credential
20
+ patterns, private paths, file names and PNG metadata. Reject unreviewed binary
21
+ assets; extend ignore rules for local environment, credential, scene and license files.
22
+ - 为 CI 与发布流程增加脱敏的公开内容检查,覆盖疑似凭据、私人路径、文件名及 PNG 元数据;
23
+ 拦截未经复核的二进制素材,补全本地环境、凭据、场景和许可证文件忽略规则。
24
+ - Bound preview file reads before allocation and while reading, reject special-file
25
+ output destinations, and check case variants and malformed PNG metadata containers.
26
+ - 预览读取在分配内存前和读取过程中均限制大小,拒绝特殊文件输出目标,并补查文件名
27
+ 大小写变体及损坏的 PNG 元数据容器。
28
+
29
+ ### Output Safety / 输出安全
30
+
31
+ - Apply default no-overwrite protection to single renders, queued jobs, imports,
32
+ scene edits and saves. Add optional `overwrite` to low-level writing tools without
33
+ renaming tools or removing inputs. Declared input files and linked aliases remain
34
+ protected even with overwrite enabled; scene and image outputs must be distinct.
35
+ - 将默认不覆盖保护统一到单张渲染、队列、导入、场景编辑与保存。底层写入工具增加可选
36
+ `overwrite`,不改工具名称或删除参数;即使允许覆盖,也不能替换本次声明的输入文件及其
37
+ 链接别名,场景与图片不能写入同一文件。
38
+ - Recheck every generated camera output inside the bridge, protect every queue input,
39
+ disambiguate selected-camera filenames and avoid deleting rejected preview outputs.
40
+ - bridge 在逐相机写入前重新检查路径,保护整个队列的输入场景,为清理后同名的指定相机
41
+ 生成不同文件名,并避免误删被拒绝的预览输出。
42
+
43
+ ### Documentation / 文档
44
+
45
+ - Clarify the roles of the MCP client's Agent, client configuration and model provider in privacy notices; distinguish client-managed transmission from the local KeyShot MCP service.
46
+ - 明确隐私提示中 MCP 客户端 Agent、客户端配置与模型服务的职责,区分客户端处理的数据传输与本机 KeyShot MCP 服务。
47
+
48
+ ## [0.13.1] - 2026-10-15
49
+
50
+ ### Release Safety / 发布安全
51
+
52
+ - Validate bilingual release notes, built runtime version and current comparison links before npm publication. Block the release workflow while documentation still marks the version as pending. Add a bilingual 1.0 readiness checklist; external client and user validation remain pending.
53
+ - 在 npm 发布前校验双语更新说明、构建版本和当前比较链接;文档仍标记待发布时阻止正式发布。增加双语 1.0 验收清单,客户端及外部用户验证仍待完成。
54
+ - Add an opt-in material smoke test using generated geometry, an unsupported Wavefront MTL fixture, preset assignments, saved-scene reinspection, invalid-name rejection and source-file hashes. A native KeyShot material file can be tested locally without bundling it.
55
+ - 增加可选材质实机测试,覆盖生成模型、不支持的 Wavefront MTL、预设赋值、保存后复查、错误名称拒绝及源文件哈希保护。可在本地验证 KeyShot 原生材质文件,不随包分发。
56
+ - Classify empty/unsupported material-file loads as `MATERIAL_FILE_INVALID` and explain the difference between KeyShot native MTL and Wavefront companion files.
57
+ - 将空加载或不支持的材质文件归类为 `MATERIAL_FILE_INVALID`,解释 KeyShot 原生 MTL 与 OBJ 配套 Wavefront 文件的区别。
58
+
59
+ ### Documentation / 文档
60
+
61
+ - Restore TypeScript and M8ven header badges, preset guidance, import-only and lens/environment examples, task serialization and early privacy reminders after auditing the README redesign.
62
+ - 核对改版前后内容,补回 TypeScript、M8ven 徽章,预设说明、仅导入及镜头/环境示例、任务串行说明,并前置隐私提醒。
63
+
64
+ - Add a bilingual request-to-render diagram with desktop and mobile layouts, using an object-level material change as the example.
65
+ - 增加中英文“一句话到出图”流程图,适配桌面和手机,以指定对象的材质替换说明预览、确认和输出流程。
66
+
67
+ ### Changed / 变更
68
+
69
+ - Reorganize the bilingual README around designer setup, saved-scene workflows and
70
+ a real component-material comparison. Replace the cube showcase with credited
71
+ local renders of a Poly Haven CC0 lantern, retain the cube as a test fixture,
72
+ and document reproduction and GUI boundaries separately. Add documentation,
73
+ navigation, installation JSON and demo-image checks.
74
+ 围绕设计师安装、已保存场景流程与真实材质对比重整双语 README;展示改用注明来源的
75
+ Poly Haven CC0 灯具实测图,立方体仅保留为测试夹具。独立补充复现与 GUI 边界说明,
76
+ 增加文档链接、导航、安装 JSON 和演示图片检查。
77
+
78
+ ### Fixed / 修复
79
+
80
+ - Verify material names and actual object assignments before reporting success.
81
+ Load single-material MTL files with KeyShot's in-project `loadMaterials` API;
82
+ reject empty or ambiguous loads instead of treating file paths as material names.
83
+ Correct the default clear-glass and matte-black-plastic library references while
84
+ retaining existing preset labels. Add structured material error guidance.
85
+ 返回成功前校验材质名称与对象的实际材质;通过 KeyShot 的 `loadMaterials` 在场景内
86
+ 加载单材质 MTL 文件,空加载或多材质文件明确报错,不再把路径当成材质名称。
87
+ 保留预设名称,修正默认透明玻璃与哑光黑色塑料的材质库引用,并补充结构化修复建议。
88
+
7
89
  ## [0.13.0] - 2026-09-30
8
90
 
9
91
  ### Added / 新增
@@ -102,7 +184,10 @@ All notable changes to KeyShot MCP are documented in this file.
102
184
 
103
185
  - Documented that scene metadata and preview images may be sent by an MCP client to its configured model provider.
104
186
 
105
- [Unreleased]: https://github.com/truman-t3/keyshot-mcp/compare/v0.12.1...HEAD
187
+ [Unreleased]: https://github.com/truman-t3/keyshot-mcp/compare/v0.13.5...HEAD
188
+ [0.13.5]: https://github.com/truman-t3/keyshot-mcp/compare/v0.13.1...v0.13.5
189
+ [0.13.1]: https://github.com/truman-t3/keyshot-mcp/compare/v0.13.0...v0.13.1
190
+ [0.13.0]: https://github.com/truman-t3/keyshot-mcp/compare/v0.12.1...v0.13.0
106
191
  [0.12.1]: https://github.com/truman-t3/keyshot-mcp/compare/v0.12.0...v0.12.1
107
192
  [0.12.0]: https://github.com/truman-t3/keyshot-mcp/compare/v0.11.0...v0.12.0
108
193
  [0.11.0]: https://github.com/truman-t3/keyshot-mcp/compare/v0.10.0...v0.11.0
package/CONTRIBUTING.md CHANGED
@@ -22,6 +22,7 @@ Requirements: Node.js 20 or newer, pnpm 10, and Python 3.11 or newer.
22
22
  ```bash
23
23
  pnpm install --frozen-lockfile
24
24
  pnpm run check
25
+ pnpm run check:public-safety
25
26
  pnpm test
26
27
  python -m unittest discover -s tests -p "test_*.py"
27
28
  pnpm run format:check
@@ -33,6 +34,15 @@ npm pack --dry-run
33
34
 
34
35
  Run `pnpm run smoke:keyshot` only on a computer with a supported, licensed KeyShot
35
36
  installation. Record the KeyShot version and operating system in the pull request.
37
+ Run `pnpm run smoke:keyshot:materials` to verify preset assignments, saved-scene
38
+ reinspection, invalid-name rejection and an unsupported Wavefront MTL fixture.
39
+ Optionally pass `--material-file "<native KeyShot MTL>"` to test a trusted local
40
+ single-material file. The native file is read only, never copied into the repository.
41
+ Tests use generated geometry and a new output subfolder, not user scenes.
42
+ Run `pnpm run smoke:keyshot:outputs` to check existing-file rejection, source hashes,
43
+ explicit replacement of a distinct copy and PNG output in a new test subfolder.
44
+ Use a fresh `KEYSHOT_OUTPUT_DIR` when repeating the full smoke test, which uses fixed names.
45
+ `pnpm docs:tools` also synchronizes the platform manifest's input schemas.
36
46
  CI on Linux validates the MCP and bridge logic; it does not verify KeyShot itself.
37
47
 
38
48
  ### Pull requests
@@ -49,6 +59,9 @@ Never include proprietary KeyShot scenes, license data, customer assets, credent
49
59
  private paths, or unpublished renders in Issues, Discussions, commits, or pull requests.
50
60
  Report vulnerabilities through GitHub's private security reporting form.
51
61
 
62
+ Use a GitHub no-reply commit email. Check filenames and image metadata as well as
63
+ visible content; new public images require review in `scripts/check-public-safety.mjs`.
64
+
52
65
  ## 中文
53
66
 
54
67
  欢迎设计师、开发者、技术美术和测试人员参与。比较有价值的贡献包括:
@@ -69,6 +82,7 @@ Report vulnerabilities through GitHub's private security reporting form.
69
82
  ```bash
70
83
  pnpm install --frozen-lockfile
71
84
  pnpm run check
85
+ pnpm run check:public-safety
72
86
  pnpm test
73
87
  python -m unittest discover -s tests -p "test_*.py"
74
88
  pnpm run format:check
@@ -81,6 +95,12 @@ npm pack --dry-run
81
95
  只有在本机已安装并合法授权 KeyShot 时才运行 `pnpm run smoke:keyshot`,并在 PR 中
82
96
  注明操作系统和 KeyShot 版本。Linux CI 只验证 MCP 与 Bridge 逻辑,不代表已经实测
83
97
  KeyShot。
98
+ 运行 `pnpm run smoke:keyshot:materials` 可验证材质预设、保存后复查、无效名称及不支持的
99
+ Wavefront MTL 拒绝;可选传入 `--material-file "<KeyShot 原生 MTL>"` 检查可信本地单材质文件。
100
+ 原生文件只读,不复制进仓库;测试仅使用生成模型和新输出子目录,不覆盖用户场景。
101
+ 运行 `pnpm run smoke:keyshot:outputs` 可验证重名拒绝、源文件哈希、明确覆盖另一份副本及
102
+ PNG 输出,文件保存在新测试子目录。完整 smoke 使用固定文件名,重复运行时请设置新的
103
+ `KEYSHOT_OUTPUT_DIR`。`pnpm docs:tools` 同时同步平台清单中的输入 Schema。
84
104
 
85
105
  ### Pull Request
86
106
 
@@ -92,3 +112,6 @@ KeyShot。
92
112
 
93
113
  不要在 Issue、Discussion、提交或 PR 中包含专有 KeyShot 场景、许可证数据、客户资产、
94
114
  账号凭据、私人路径或未公开渲染图。安全漏洞请通过 GitHub 私密安全报告提交。
115
+
116
+ 提交使用 GitHub no-reply 邮箱;除可见内容外,也检查文件名和图片元数据。
117
+ 新增公开图片需要在 `scripts/check-public-safety.mjs` 中完成复核登记。