Skip to content

Commit ed91a74

Browse files
committed
chore(release): bump version to 2.71.1
1 parent 81c03ec commit ed91a74

6 files changed

Lines changed: 47 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,48 @@
22

33
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.
44

5+
## What's New in v2.71.1
6+
7+
`Timeline.DeleteClips` can lie about whether it worked. #111 recorded four
8+
behaviours from a live edit session; #114 mitigates the first of them. Both by
9+
@billcarroll.
10+
11+
### DeleteClips readback-and-retry
12+
13+
`Timeline.DeleteClips` can return `False` on a first call even when every item
14+
passed is a valid, present `TimelineItem`, with an identical retry succeeding.
15+
`_timeline_delete_clips_verified` reads the tracks back on a `False` and retries
16+
once if the items are still there. All four timeline call sites route through
17+
it: the `delete_clips` action, `lift_range`, `duplicate_clips` and `copy_range`.
18+
19+
The readback is deliberately **tri-state**. A walk that raised, enumerated no
20+
track at all, or covered items whose unique ID cannot be read is `unknown`, not
21+
`absent` — so an unverifiable delete is never reported as success, and never
22+
spends a second destructive call buying information it cannot read. An earlier
23+
draft collapsed unknown into absent, which turned a failed delete into a
24+
reported success; that is the exact silent-lie class this series exists to
25+
remove, so it is worth naming.
26+
27+
The `ripple=True` non-idempotence of a retry is recorded in the docstring rather
28+
than claimed to be solved: if the first call deleted some items and left others,
29+
the retry passes the original list back in, stale handles included. It could not
30+
be made to misbehave against a fake.
31+
32+
### Four edit-session behaviours recorded
33+
34+
- **`DeleteClips` flaky first attempt.** The entry states plainly that the cause
35+
is **unknown**, and specifically that this is *not* the
36+
`ProjectManager.DeleteProject` shape — that one has an identified mechanism
37+
which retrying does not clear, whereas a single retry cleared this in the one
38+
instance seen. One observation is not a mechanism.
39+
- **`DeleteClips` leaves linked audio.** The API deletes exactly the items
40+
passed; the UI's linked-selection behaviour does not apply, so orphaned audio
41+
collides with later appends.
42+
- **`AppendToTimeline` mixed-fps duration floor.** Source-to-timeline frame
43+
conversion rounds down, landing a planned range one frame short.
44+
- **`ImportMedia` current-folder only.** No destination parameter; imports land
45+
in the current bin.
46+
547
## What's New in v2.71.0
648

749
Keyed metadata getters honor a list of keys, and `delete_timelines` names the

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# DaVinci Resolve MCP Server
22

3-
[![Version](https://img.shields.io/badge/version-2.71.0-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
3+
[![Version](https://img.shields.io/badge/version-2.71.1-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
44
[![npm](https://img.shields.io/npm/v/davinci-resolve-mcp.svg?label=npm&color=CB3837)](https://www.npmjs.com/package/davinci-resolve-mcp)
55
[![API Coverage](https://img.shields.io/badge/API%20Coverage-100%25-brightgreen.svg)](docs/reference/api-coverage.md)
66
[![Tools](https://img.shields.io/badge/MCP%20Tools-34%20(341%20full)-blue.svg)](#server-modes)

install.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# ─── Version ──────────────────────────────────────────────────────────────────
3838

39-
VERSION = "2.71.0"
39+
VERSION = "2.71.1"
4040
# Only hard floor: mcp[cli] requires Python 3.10+. There is no upper bound —
4141
# Resolve's scripting bridge loads into newer interpreters on recent builds
4242
# (Python 3.14 verified against Resolve Studio 20.3.2). Older Resolve builds

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "davinci-resolve-mcp",
3-
"version": "2.71.0",
3+
"version": "2.71.1",
44
"description": "NPM bootstrapper for the DaVinci Resolve MCP Server.",
55
"license": "MIT",
66
"author": "Samuel Gursky <samgursky@gmail.com>",

src/granular/common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
handlers=[logging.StreamHandler()],
8686
)
8787

88-
VERSION = "2.71.0"
88+
VERSION = "2.71.1"
8989
logger = logging.getLogger("davinci-resolve-mcp")
9090
logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION}")
9191
logger.info(f"Detected platform: {get_platform()}")

src/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
python src/server.py --full # Start the 341-tool granular server instead
1212
"""
1313

14-
VERSION = "2.71.0"
14+
VERSION = "2.71.1"
1515

1616
import base64
1717
import os

0 commit comments

Comments
 (0)