davinci-resolve-mcp 2.32.0 → 2.32.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 +19 -0
- package/README.md +1 -1
- package/install.py +1 -1
- package/package.json +1 -1
- package/src/granular/common.py +1 -1
- package/src/server.py +12 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
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.32.1
|
|
6
|
+
|
|
7
|
+
Fixes `fusion_comp(action="add_keyframe")` so it actually **animates** the input.
|
|
8
|
+
|
|
9
|
+
Previously the handler did `inp[time] = value` on the input directly. On an input
|
|
10
|
+
with no animation spline, that only assigns a **static** value (last write wins) —
|
|
11
|
+
no keyframe is created. Symptoms: `get_keyframes` returned `[]`, `get_input` at
|
|
12
|
+
different times returned the same value, and the clip never animated.
|
|
13
|
+
|
|
14
|
+
The handler now attaches a `BezierSpline` modifier the first time an input is
|
|
15
|
+
animated, then sets the keyframe. A new optional `modifier` param lets callers
|
|
16
|
+
pass e.g. `"Path"` for Point inputs such as `Center`. Behavior is unchanged for
|
|
17
|
+
inputs that are already animated or otherwise connected.
|
|
18
|
+
|
|
19
|
+
- **Fixed** `add_keyframe` now creates real, editable keyframes (live-validated on
|
|
20
|
+
DaVinci Resolve Studio 21.0.0).
|
|
21
|
+
- **Added** optional `modifier` param to `add_keyframe`.
|
|
22
|
+
- Thanks to @sandypoli-boop for the diagnosis and fix ([#56](https://github.com/samuelgursky/davinci-resolve-mcp/pull/56)).
|
|
23
|
+
|
|
5
24
|
## What's New in v2.32.0
|
|
6
25
|
|
|
7
26
|
Adds **governance tiers** for the media-creating Resolve 21 AI ops (Phase 3, the
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# DaVinci Resolve MCP Server
|
|
2
2
|
|
|
3
|
-
[](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
|
|
4
4
|
[](https://www.npmjs.com/package/davinci-resolve-mcp)
|
|
5
5
|
[](docs/reference/api-coverage.md)
|
|
6
6
|
[-blue.svg)](#server-modes)
|
package/install.py
CHANGED
|
@@ -35,7 +35,7 @@ from src.utils.update_check import (
|
|
|
35
35
|
|
|
36
36
|
# ─── Version ──────────────────────────────────────────────────────────────────
|
|
37
37
|
|
|
38
|
-
VERSION = "2.32.
|
|
38
|
+
VERSION = "2.32.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
package/src/granular/common.py
CHANGED
|
@@ -80,7 +80,7 @@ if not logging.getLogger().handlers:
|
|
|
80
80
|
handlers=[logging.StreamHandler()],
|
|
81
81
|
)
|
|
82
82
|
|
|
83
|
-
VERSION = "2.32.
|
|
83
|
+
VERSION = "2.32.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.32.
|
|
14
|
+
VERSION = "2.32.1"
|
|
15
15
|
|
|
16
16
|
import base64
|
|
17
17
|
import os
|
|
@@ -18663,7 +18663,17 @@ def fusion_comp(action: str, params: Optional[Dict[str, Any]] = None) -> Dict[st
|
|
|
18663
18663
|
inp = tool[p["input_name"]]
|
|
18664
18664
|
if not inp:
|
|
18665
18665
|
return _err(f"Input '{p['input_name']}' not found on tool '{p['tool_name']}'")
|
|
18666
|
-
|
|
18666
|
+
# Attach a BezierSpline modifier the first time this input is animated.
|
|
18667
|
+
# Without a spline, `inp[time] = value` only sets a STATIC value (the last
|
|
18668
|
+
# write wins) and never creates a keyframe. See the Fusion Scripting Guide.
|
|
18669
|
+
# Optional `modifier` lets callers pass e.g. "Path" for Point inputs.
|
|
18670
|
+
try:
|
|
18671
|
+
_already_animated = inp.GetConnectedOutput() is not None
|
|
18672
|
+
except Exception:
|
|
18673
|
+
_already_animated = False
|
|
18674
|
+
if not _already_animated:
|
|
18675
|
+
tool.AddModifier(p["input_name"], p.get("modifier", "BezierSpline"))
|
|
18676
|
+
tool[p["input_name"]][p["time"]] = p["value"]
|
|
18667
18677
|
return _ok()
|
|
18668
18678
|
finally:
|
|
18669
18679
|
comp.Unlock()
|