davinci-resolve-mcp 2.57.0 → 2.57.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,23 @@
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.57.1
6
+
7
+ Investigation outcome for community feature request #74 — no behavior change.
8
+
9
+ - **Note** (issue #74) the DaVinci Resolve scripting API does not expose the
10
+ Source/Auto Track Selector, so there is no way to choose the destination track
11
+ when inserting Text+/titles/generators. Verified live on Resolve Studio 21.0.0:
12
+ no get/set for the selector exists; the `Insert*IntoTimeline` family takes no
13
+ `trackIndex` and always lands on V1; locking lower tracks makes the insert fail
14
+ rather than redirect; and titles/generators can't be relocated afterward (no
15
+ `MediaPoolItem`). Closed as won't-fix (API limitation).
16
+ - **Documentation** recorded the limitation in the verified `api_truth` ledger
17
+ (query at runtime with `resolve_control api_truth "track"`) and in
18
+ `docs/reference/api-coverage.md`, with the supported alternative for
19
+ media-backed clips (`MediaPool.AppendToTimeline` clipInfo `trackIndex`, exposed
20
+ as `media_pool.append_to_timeline` `clip_infos`). Added a regression test.
21
+
5
22
  ## What's New in v2.57.0
6
23
 
7
24
  Community feature requests #72 and #73.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # DaVinci Resolve MCP Server
2
2
 
3
- [![Version](https://img.shields.io/badge/version-2.57.0-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
3
+ [![Version](https://img.shields.io/badge/version-2.57.1-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
4
4
  [![npm](https://img.shields.io/npm/v/davinci-resolve-mcp.svg?label=npm&color=CB3837)](https://www.npmjs.com/package/davinci-resolve-mcp)
5
5
  [![API Coverage](https://img.shields.io/badge/API%20Coverage-100%25-brightgreen.svg)](docs/reference/api-coverage.md)
6
6
  [![Tools](https://img.shields.io/badge/MCP%20Tools-34%20(341%20full)-blue.svg)](#server-modes)
@@ -168,3 +168,6 @@ Samuel Gursky (samgursky@gmail.com)
168
168
 
169
169
  - [@rgxdev](https://github.com/rgxdev) — configurable Media Pool inventory walk
170
170
  (exclude bins + inventory limit), [#69](https://github.com/samuelgursky/davinci-resolve-mcp/pull/69) (v2.53.0)
171
+ - [@swayll](https://github.com/swayll) — Source Track Selector investigation
172
+ ([#74](https://github.com/samuelgursky/davinci-resolve-mcp/issues/74)); confirmed
173
+ + documented API limitation (v2.57.1)
@@ -86,6 +86,17 @@ env RESOLVE_SCRIPT_API="/Library/Application Support/Blackmagic Design/DaVinci R
86
86
  venv/bin/python tests/live_v233_validation.py
87
87
  ```
88
88
 
89
+ For Fusion comp changes (masks, Text+/title text), run the issue #73 harness,
90
+ which creates a disposable Fusion-title project, exercises `add_fusion_mask` and
91
+ `set_text_plus` / `get_text_plus`, and deletes the project:
92
+
93
+ ```bash
94
+ env RESOLVE_SCRIPT_API="/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting" \
95
+ RESOLVE_SCRIPT_LIB="/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/fusionscript.so" \
96
+ PYTHONPATH="/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules" \
97
+ venv/bin/python tests/live_fusion_mask_title_validation.py
98
+ ```
99
+
89
100
  One-off live harnesses are acceptable during review, but reusable coverage
90
101
  should live under `tests/`. Do not commit generated media or disposable project
91
102
  artifacts.
@@ -44,6 +44,19 @@ maps `shot_descriptions[shot_index]` onto Media Pool shot markers, and triggers
44
44
  metadata writeback for that clip. Works with any MCP client whose chat model
45
45
  is vision-capable; no `sampling/createMessage` support required.
46
46
 
47
+ Some Edit-page behavior is simply not reachable through public scripting. The
48
+ **Source/Auto Track Selector** (the patch panel that chooses which video track a
49
+ clip lands on) has no get/set in the API, and the `Insert*IntoTimeline` family
50
+ (titles, generators, OFX, Fusion comps) takes no `trackIndex` — they always drop
51
+ onto the selector's current target (V1 in practice). Locking lower tracks does
52
+ not redirect the insert; it just makes the insert fail. Titles and generators
53
+ can't be relocated afterward either, since they have no `MediaPoolItem` for
54
+ `AppendToTimeline`/`MoveClips` to act on. For media-backed clips you *can* target
55
+ a track via `MediaPool.AppendToTimeline`'s clipInfo `trackIndex` (exposed as
56
+ `media_pool.append_to_timeline` with `clip_infos`). This limitation is recorded
57
+ in the verified `api_truth` ledger (query `resolve_control api_truth "track"`);
58
+ see issue #74.
59
+
47
60
  | Class | Methods | Tools | Description |
48
61
  |-------|---------|-------|-------------|
49
62
  | Resolve | 22 | 22 | App control, pages, layout presets, render/burn-in presets, keyframe mode |
package/install.py CHANGED
@@ -35,7 +35,7 @@ from src.utils.update_check import (
35
35
 
36
36
  # ─── Version ──────────────────────────────────────────────────────────────────
37
37
 
38
- VERSION = "2.57.0"
38
+ VERSION = "2.57.1"
39
39
  # Only hard floor: mcp[cli] requires Python 3.10+. There is no upper bound —
40
40
  # Resolve's scripting bridge loads into newer interpreters on recent builds
41
41
  # (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.57.0",
3
+ "version": "2.57.1",
4
4
  "description": "NPM bootstrapper for the DaVinci Resolve MCP Server.",
5
5
  "license": "MIT",
6
6
  "author": "Samuel Gursky <samgursky@gmail.com>",
@@ -80,7 +80,7 @@ if not logging.getLogger().handlers:
80
80
  handlers=[logging.StreamHandler()],
81
81
  )
82
82
 
83
- VERSION = "2.57.0"
83
+ VERSION = "2.57.1"
84
84
  logger = logging.getLogger("davinci-resolve-mcp")
85
85
  logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION}")
86
86
  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 341-tool granular server instead
12
12
  """
13
13
 
14
- VERSION = "2.57.0"
14
+ VERSION = "2.57.1"
15
15
 
16
16
  import base64
17
17
  import os
@@ -158,6 +158,28 @@ API_TRUTH: List[Dict[str, Any]] = [
158
158
  "need a comp to operate on.",
159
159
  "tags": ["fusion", "timeline"],
160
160
  },
161
+ {
162
+ "symbol": "Source Track Selector / destination track for Insert*IntoTimeline",
163
+ "object": "Timeline",
164
+ "reality": "There is no API to read or set the Source/Auto Track Selector "
165
+ "(the Edit-page patch panel that picks the destination track). "
166
+ "InsertTitleIntoTimeline, InsertFusionTitleIntoTimeline, "
167
+ "InsertGeneratorIntoTimeline, InsertFusionGeneratorIntoTimeline, "
168
+ "InsertOFXGeneratorIntoTimeline and "
169
+ "InsertFusionCompositionIntoTimeline take no trackIndex and "
170
+ "always drop the clip on the selector's current target (V1 in "
171
+ "practice). Locking lower video tracks does NOT redirect the "
172
+ "insert — verified live on 21.0.0: locking V1 makes the insert "
173
+ "FAIL rather than land on V2. Titles/generators also can't be "
174
+ "moved afterward (no MediaPoolItem, so AppendToTimeline clipInfo "
175
+ "and MoveClips don't apply).",
176
+ "recommended": "Accept the limitation for titles/generators (insert lands "
177
+ "on V1). For clips that DO have a MediaPoolItem, target a "
178
+ "track with MediaPool.AppendToTimeline's clipInfo 'trackIndex' "
179
+ "instead (exposed as media_pool append_to_timeline clip_infos). "
180
+ "See issue #74.",
181
+ "tags": ["missing-method", "timeline", "title", "generator", "track"],
182
+ },
161
183
  {
162
184
  "symbol": "subprocess inheriting stdin under the MCP stdio server",
163
185
  "object": "(server runtime)",