davinci-resolve-mcp 2.216.0 → 2.216.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/CHANGELOG.md CHANGED
@@ -2,6 +2,30 @@
2
2
 
3
3
  Release history for the DaVinci Resolve MCP Server. The latest release is summarized in the root README; older entries live here to keep the README focused.
4
4
 
5
+ ## What's New in v2.216.1 — ValidateDCTL's layout sensitivity is in the API ledger
6
+
7
+ ### Documentation
8
+
9
+ - **`Resolve.ValidateDCTL` (21.1+) misreads a one-line function.** Reported
10
+ by @legionsound on #207 from Studio 21.1.0.14: a minimal identity transform
11
+ laid out across lines validates (`None`, the documented success), while the
12
+ same function on a single line consistently returns "main DCTL function does
13
+ not have return value" — false, the return is there — and a truly invalid
14
+ source returns "cannot find main DCTL function", so the validator does
15
+ discriminate; it is the single-line layout it misparses. An earlier
16
+ multi-line timeout did not reproduce after a restart. Recorded as a reported
17
+ entry (not reproduced here, no 21.1 install) with the rule for any future
18
+ wrapper: pass the native diagnostic through verbatim, never reflow the
19
+ user's source to dodge it, and keep the multi-line identity fixture as the
20
+ control. This server's own `dctl validate` is a static offline check and
21
+ does not call `ValidateDCTL`. `docs/reference/api-limitations.md`
22
+ regenerated (52 bugs / unreliable behaviors).
23
+
24
+ ### Validation
25
+
26
+ - Ledger and limitations-doc guards, full offline suite, drift guards and the
27
+ advanced Node suite. Documentation only; no Resolve behavior changed.
28
+
5
29
  ## What's New in v2.216.0 — twelve Resolve 21.1 read-only controls, in both server modes
6
30
 
7
31
  Contributed by @legionsound (#206), live-measured on Studio 21.1.0.14.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  English | [简体中文](README.zh-CN.md)
4
4
 
5
- [![Version](https://img.shields.io/badge/version-2.216.0-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
5
+ [![Version](https://img.shields.io/badge/version-2.216.1-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
6
6
  [![npm](https://img.shields.io/npm/v/davinci-resolve-mcp.svg?label=npm&color=CB3837)](https://www.npmjs.com/package/davinci-resolve-mcp)
7
7
  [![API Coverage](https://img.shields.io/badge/API%20Coverage-100%25-brightgreen.svg)](docs/reference/api-coverage.md)
8
8
  [![Tools](https://img.shields.io/badge/MCP%20Tools-36%20(365%20full)-blue.svg)](#server-modes)
package/README.zh-CN.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](README.md) | 简体中文
4
4
 
5
- [![Version](https://img.shields.io/badge/version-2.216.0-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
5
+ [![Version](https://img.shields.io/badge/version-2.216.1-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
6
6
  [![npm](https://img.shields.io/npm/v/davinci-resolve-mcp.svg?label=npm&color=CB3837)](https://www.npmjs.com/package/davinci-resolve-mcp)
7
7
  [![API Coverage](https://img.shields.io/badge/API%20Coverage-100%25-brightgreen.svg)](docs/reference/api-coverage.md)
8
8
  [![Tools](https://img.shields.io/badge/MCP%20Tools-36%20(365%20full)-blue.svg)](#服务器模式)
@@ -12,7 +12,7 @@
12
12
  [![Python](https://img.shields.io/badge/python-3.10+-green.svg)](https://www.python.org/downloads/)
13
13
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
14
14
 
15
- > 本翻译对应 v2.216.0 版 README。如与英文原版有出入,以 [英文原版](README.md) 为准。
15
+ > 本翻译对应 v2.216.1 版 README。如与英文原版有出入,以 [英文原版](README.md) 为准。
16
16
 
17
17
  一个 Model Context Protocol (MCP) 服务器,让 AI 助手通过官方脚本 API 控制 DaVinci Resolve Studio(达芬奇)。它提供完整的 API 覆盖,外加带护栏的工作流助手,涵盖剪辑、媒体池整理、渲染设置、审阅标记、调色、Fusion、Fairlight、项目生命周期任务、扩展开发,以及不碰源媒体的媒体分析。
18
18
 
@@ -12,7 +12,7 @@ that none exists).
12
12
 
13
13
  **Verified on:** DaVinci Resolve Studio 21.0.2
14
14
 
15
- **Totals:** 41 missing capabilities, 51 bugs / unreliable behaviors.
15
+ **Totals:** 41 missing capabilities, 52 bugs / unreliable behaviors.
16
16
 
17
17
  The authoritative source is the runtime-queryable `api_truth` ledger
18
18
  (`resolve_control api_truth "<query>"`); this document is generated from
@@ -760,3 +760,11 @@ values, or automation-hostile modal prompts.
760
760
  - **Behavior:** On Studio 19.1.3.7 the subtitle-delivery keys documented in the Resolve 21 API reference are accepted and fully inert: SetRenderSettings returns True for all three SubtitleFormat modes ('BurnIn', 'SeparateFile', 'EmbeddedCaptions'), and the renders carry no burned-in pixels (frame-extract verified), no sidecar subtitle file, and no embedded caption track (stream-probe verified) — with the subtitle cues readback-verified on the timeline and the subtitle track enabled. Quirk: ExportSubtitle alone returns False; the pair returns True. All three outputs are stream-identical to a no-subtitle render.
761
761
  - **Workaround / current handling:** Do not trust a True return for subtitle delivery on a pre-21 host — verify the output (extract a frame for burn-in, list the target directory for a sidecar, ffprobe streams for embedded captions). On 19.x subtitle export requires the UI render page. render.set_settings warns when these keys are set on a pre-21 host.
762
762
  - **Tags:** render, subtitle, burn-in, silent-failure, version-gated
763
+
764
+ ### Resolve.ValidateDCTL is sensitive to source layout
765
+
766
+ - **Object:** `Resolve`
767
+ - **Signature:** `(dctlSource) -> str | None (21.1+)`
768
+ - **Behavior:** Reported by @legionsound (issue #207) from Studio 21.1.0.14 on macOS; NOT reproduced here (no 21.1 install). The documented success result is None. A minimal identity transform written across several lines — `__DEVICE__ float3 transform(...)` with the body on its own lines — validates (None). The SAME function collapsed onto one line consistently returns 'DCTL Error: main DCTL function does not have return value.', which is false: the return statement is there. A genuinely invalid source returns 'cannot find main DCTL function.', so the validator does distinguish; it is the single-line layout it misreads. An earlier multi-line timeout did not reproduce after a Resolve restart with a 30-second limit. Nothing establishes a GPU compiler or render defect — this is the validator's parse, not the DCTL's execution. EncryptDCTL untested.
769
+ - **Workaround / current handling:** Any wrapper around ValidateDCTL must pass the native diagnostic through verbatim and must not reflow or rewrite the user's source to dodge it; ship the multi-line identity fixture as the known-good control. A 'no return value' error on a one-line function is this quirk, not a missing return — re-run the validation with the function laid out across lines before believing it. This server's own `dctl validate` is a static, offline check (entry point, brace balance, float suffixes) and does not call ValidateDCTL at all.
770
+ - **Tags:** dctl, validation, unreliable-return, version-gated, reported
package/install.py CHANGED
@@ -37,7 +37,7 @@ from src.utils.update_check import (
37
37
 
38
38
  # ─── Version ──────────────────────────────────────────────────────────────────
39
39
 
40
- VERSION = "2.216.0"
40
+ VERSION = "2.216.1"
41
41
  # Only hard floor: mcp[cli] requires Python 3.10+. There is no upper bound —
42
42
  # Resolve's scripting bridge loads into newer interpreters on recent builds
43
43
  # (Python 3.14 verified against Resolve Studio 20.3.2). Older Resolve builds
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "davinci-resolve-mcp",
3
- "version": "2.216.0",
3
+ "version": "2.216.1",
4
4
  "description": "NPM bootstrapper for the DaVinci Resolve MCP Server.",
5
5
  "license": "MIT",
6
6
  "author": "Samuel Gursky <samgursky@gmail.com>",
@@ -87,7 +87,7 @@ if not logging.getLogger().handlers:
87
87
  handlers=[logging.StreamHandler()],
88
88
  )
89
89
 
90
- VERSION = "2.216.0"
90
+ VERSION = "2.216.1"
91
91
  logger = logging.getLogger("davinci-resolve-mcp")
92
92
  logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION}")
93
93
  logger.info(f"Detected platform: {get_platform()}")
package/src/server.py CHANGED
@@ -11,7 +11,7 @@ Usage:
11
11
  python src/server.py --full # Start the 365-tool granular server instead
12
12
  """
13
13
 
14
- VERSION = "2.216.0"
14
+ VERSION = "2.216.1"
15
15
 
16
16
  import base64
17
17
  import os
@@ -3207,6 +3207,37 @@ API_TRUTH: List[Dict[str, Any]] = [
3207
3207
  "submit": "bug",
3208
3208
  "mitigation": ["render.set_settings warnings"],
3209
3209
  },
3210
+ {
3211
+ "symbol": "Resolve.ValidateDCTL is sensitive to source layout",
3212
+ "object": "Resolve",
3213
+ "signature": "(dctlSource) -> str | None (21.1+)",
3214
+ "reality": "Reported by @legionsound (issue #207) from Studio 21.1.0.14 on "
3215
+ "macOS; NOT reproduced here (no 21.1 install). The documented "
3216
+ "success result is None. A minimal identity transform written "
3217
+ "across several lines — `__DEVICE__ float3 transform(...)` with "
3218
+ "the body on its own lines — validates (None). The SAME function "
3219
+ "collapsed onto one line consistently returns 'DCTL Error: main "
3220
+ "DCTL function does not have return value.', which is false: the "
3221
+ "return statement is there. A genuinely invalid source returns "
3222
+ "'cannot find main DCTL function.', so the validator does "
3223
+ "distinguish; it is the single-line layout it misreads. An "
3224
+ "earlier multi-line timeout did not reproduce after a Resolve "
3225
+ "restart with a 30-second limit. Nothing establishes a GPU "
3226
+ "compiler or render defect — this is the validator's parse, not "
3227
+ "the DCTL's execution. EncryptDCTL untested.",
3228
+ "recommended": "Any wrapper around ValidateDCTL must pass the native "
3229
+ "diagnostic through verbatim and must not reflow or rewrite "
3230
+ "the user's source to dodge it; ship the multi-line identity "
3231
+ "fixture as the known-good control. A 'no return value' "
3232
+ "error on a one-line function is this quirk, not a missing "
3233
+ "return — re-run the validation with the function laid out "
3234
+ "across lines before believing it. This server's own "
3235
+ "`dctl validate` is a static, offline check (entry point, "
3236
+ "brace balance, float suffixes) and does not call "
3237
+ "ValidateDCTL at all.",
3238
+ "tags": ["dctl", "validation", "unreliable-return", "version-gated", "reported"],
3239
+ "submit": "bug",
3240
+ },
3210
3241
  ]
3211
3242
 
3212
3243