Skip to content

Releases

v0.18.0 — PyPI, MCP Registry, and startup update check

Choose a tag to compare

@2sem 2sem released this 24 Aug 13:02
56706f9

Release 0.18.0 — PyPI packaging, MCP Registry listing, and a brew/pod-style startup update check.

Patch note (changes since 0.17.0)

Added

  • PyPI packaging — pip install davinci-resolve-lite-mcp is now a real alternative to git clone. pyproject.toml (zero runtime deps, src-layout, version dynamically read from SERVER_VERSION) plus a davinci-mcp-install / davinci-mcp-uninstall console-script pair that ports install.sh/uninstall.sh's Lite-vs-Studio detection and copy-vs-symlink logic to pure Python. Publishing a GitHub release now auto-publishes to PyPI via Trusted Publishing (OIDC, no stored token) via .github/workflows/publish.yml.
  • MCP Registry listing — server.json lists this project as io.github.2sem/davinci-resolve-lite-mcp on the MCP Registry, for discoverability only. Deliberately metadata-only (no packages/remotes): this server can't be auto-spawned by an MCP client the way a typical registry server can — it must run inside Resolve's own embedded Python interpreter, started by hand from the Scripts menu — so a packages entry would just be a broken "install" button.
  • Startup update check — like brew/CocoaPods, each server launch checks PyPI in the background for a newer release and prints a one-line nudge to the Resolve Console if one exists. Best-effort by design: runs on its own thread so it never delays startup, and any failure (offline, PyPI down) is swallowed silently to the logfile only, never surfaced as an error. Opt out with DAVINCI_MCP_SKIP_UPDATE_CHECK=1.

Notes

  • SERVER_VERSION → 0.18.0. Single bump: release 0.18.0 commit on the release branch.
  • Constituent PRs: #55 (PyPI packaging), #56 (manual publish trigger), #57 (README polish), #58 (MCP Registry listing), #59 (README registry mention), #60 (startup update check), #61 (this release bump). Offline ALL TESTS PASSED (test_server.py, test_installer.py, test_update_check.py) on Python 3.9 and 3.12.
  • Prompted by issue #54 (PyPI + registry request).

v0.17.0 — Lite API gaps, pinned port config

Choose a tag to compare

@2sem 2sem released this 20 Aug 23:50
105b505

Release 0.17.0 — 6 new Lite-compatible Resolve 20.x/21.0 API tools, pinned port config.

Patch note (changes since 0.16.0)

Added

  • 6 new tools covering Resolve 20.x/21.0 scripting API additions that work on the free Lite edition: monitor_growing_file, reset_node_colors, get_fairlight_presets, apply_fairlight_preset, disable_background_tasks, set_timeline_item_name. create_project now takes an optional mediaLocationPath; render_current_timeline / add_render_job take optional exportSubtitle / subtitleFormat. Neural Engine / Studio-only API additions (transcription, audio classification, motion-blur removal, Intellisearch/slate analysis, speech generation, voice isolation) were deliberately left out — Lite can't run them. 157 → 163 tools.
  • Persistent port/host config — drop ~/Movies/davinci-resolve-lite-mcp.config.json ({"host": "...", "port": N}) to pin the listening port. ~/Movies is used because the sandboxed Lite app cannot read ~/.config (XDG path still honored for the non-sandboxed Studio build, plus a DAVINCI_MCP_CONFIG override). Resolution order: DAVINCI_MCP_PORT/DAVINCI_MCP_HOST env > config file > defaults.

Changed

  • A configured port is now pinned — the server binds exactly that port and no longer auto-increments to a neighbour, so a registered Claude URL never silently drifts (previously surfaced as HTTP 404 at …:8765/mcp on reconnect). Auto-increment still applies only to the bare default 8765. Startup banner shows pin status/source, or the exact steps to pin it.
  • Stop paths (stop.sh / stop_davinci_mcp_server.py) resolve the port through the same config, so a config-pinned port outside the default scan window is still reachable.

Notes

  • SERVER_VERSION → 0.17.0. Single bump: release 0.17.0 commit on the release branch.
  • Constituent PR #49 (Lite API gaps) merged; port-pin config landed earlier via #46. Offline ALL TESTS PASSED (163 tools). 4 of the 6 new tools live-verified against a real Resolve Lite 21.0.4.5 session and clip; apply_fairlight_preset / disable_background_tasks pending first live run.

🤖 Generated with Claude Code

v0.16.0 — clip transform animation, linked blade, timestamped log

Choose a tag to compare

@2sem 2sem released this 08 Jun 00:07
f406eb3

Release 0.16.0 — clip transform animation, linked-A/V blade, timestamped Console log.

Patch note (changes since 0.15.0)

Added

  • Clip transform animation — insert_clip_fusion_transform / edit_clip_fusion_transform / remove_clip_fusion_transform. The Edit-page transform can't be keyframed via the API (SetProperty is static), so these drive a Fusion Transform on the clip: zoom (Size), pan (Center), rotate (Angle) — static or keyframed (zoom_from/zoom_to etc. over frames). Fusion-native units: zoom = multiplier (1.0=100%), pan = normalized 0–1 (0.5=center), angle = degrees. 154 → 157 tools.

Changed

  • split_clip splits linked A/V together — blading a clip with linked audio now splits both tracks at the same frame and re-links the halves (like the UI razor). Pass linked=false for a single-track blade. cut_range blades single-track.
  • Console log lines are timestamped to match the logfile (the per-call [davinci-mcp] … -> ok (Nms) line); the one-time startup banner stays un-timestamped.

Notes

  • SERVER_VERSION → 0.16.0. Single bump: release 0.16.0 commit on this branch.
  • Constituent PRs #40 (transform CRUD), #41 (linked split), #42 (console timestamp) — each Codex-reviewed (transform CRUD took 3 rounds), all merged. Offline ALL TESTS PASSED (157 tools); split/cut/transform live tests pass on Resolve Lite.

🤖 Generated with Claude Code

v0.15.0 — cut_range + fixed ripple delete

Choose a tag to compare

@2sem 2sem released this 04 Jun 03:29
f8499a8

Release 0.15.0 — range cut + fixed ripple delete.

Patch note (changes since 0.14.0)

Added

  • cut_range — remove a timeline frame range [begin, end) on a track and close the gap (the "cut a section" / ripple-trim operation). Blades at begin and end (via split_clip), removes the clips inside, and shifts the downstream clips left by end − begin. begin/end are 0-based; trackType defaults to video, trackIndex to 1. 153 → 154 tools.
    • Limitations: video/audio only; bladed + shifted clips become fresh items (lose grade/Fusion/transform/retime); only the operated track shifts, so linked audio on other tracks can desync.

Fixed

  • Ripple delete was broken. Resolve Lite's DeleteClips(items, True) wipes the whole track, not just the gap — so delete_timeline_item(ripple=true) silently emptied the track. Both cut_range and delete_timeline_item now ripple by hand: non-ripple delete, then re-add the downstream clips shifted left (fallbacks/12).
  • Off-by-one on real media. split_clip / ripple derived the out-point from GetSourceEndFrame(), whose inclusive/exclusive convention varies, dropping the last frame on UI-added media. The out-point is now derived from the clip's timeline duration → frame-accurate cuts.

Notes

  • SERVER_VERSION → 0.15.0. Single bump: release 0.15.0 commit on this branch.
  • cut_range (PR #38) went through four Codex review rounds (tail boundaries, partial-edit preflight, negative begin, subtitle rejection), all resolved. Verified live and frame-accurate on a real timeline: [108000..116501] cut [110000,112000) → [108000..110000][110000..114501]. Offline ALL TESTS PASSED (154 tools); split/cut live tests pass.

🤖 Generated with Claude Code

v0.14.0 — split_clip (blade/razor)

Choose a tag to compare

@2sem 2sem released this 04 Jun 00:35
d14d9ae

Release 0.14.0 — adds the blade/razor primitive.

Patch note (changes since 0.13.1)

Added

  • split_clip — blade/razor a timeline clip into two contiguous clips, at the playhead by default (like the razor tool): set_timecode then split_clip auto-finds the clip under the playhead (trackType defaults to video, trackIndex to 1). Optional frame (0-based) and itemIndex overrides.
    • Resolve has no native split, so it deletes the clip and re-adds its two halves from the same media-pool source at the exact record frames — in place, no gap (verified on populated timelines).
    • To CUT a range: split_clip at both ends, then delete_timeline_item(ripple=true) on the middle clip (ripple closes the gap). No separate cut tool.
    • 152 → 153 tools.
    • Limitations: only media-backed clips can be bladed — titles, generators, compound clips and nested timelines have no media-pool source; and re-added halves are fresh items, so clip-level grade/Fusion/transform/retime and linked audio are not preserved.

Fixed

  • Playhead frame lookup handles two coordinate gotchas: 0-based TimelineItem frames vs absolute timecode/GetStartFrame (fallbacks/11), and drop-frame timecode (29.97/59.94).

Notes

  • SERVER_VERSION → 0.14.0. Single bump: release 0.14.0 commit on this branch.
  • split_clip (PR #36) was Codex-reviewed twice (frame-contract + drop-frame), both addressed. Offline ALL TESTS PASSED (153 tools); split_clip + split_clip_at_playhead pass live on Resolve Lite.

🤖 Generated with Claude Code

v0.13.1 — Fusion title styling, fonts, title-text editing

Choose a tag to compare

@2sem 2sem released this 03 Jun 06:45
f6d04ae

Release 0.13.1 — patch on top of 0.13.0.

Patch note (changes since 0.13.0)

Added

  • style_fusion_title font pre-validation — validates the requested style against the OS font database (same data as list_fonts). If the family is a known OS font but lacks the chosen style (e.g. Impact has no Bold), it errors up front instead of producing an uncatchable Fusion render error. Fonts absent from the OS DB (Fusion-bundled, e.g. the default "Open Sans") are not rejected.

Fixed

  • _load_system_fonts normalizes system_profiler timeout and parse failures to a clean error, so font-validation always degrades to "skip" rather than failing the call.
  • README install snippet uses the real clone URL.

Notes

  • SERVER_VERSION → 0.13.1. Single bump: release 0.13.1 commit on this branch.
  • Constituent PRs (#32 font-validation, #33 README) were Codex-reviewed and merged individually. Offline suite ALL TESTS PASSED (152 tools); style tests pass live on Resolve Lite.

🤖 Generated with Claude Code

v0.12.0

Choose a tag to compare

@2sem 2sem released this 02 Jun 00:47
f89a569

id-based addressing extended to multi-clip tools (delete/append/create-from/move/relink accept ids or names). 149 tools. See CHANGELOG.md.

v0.11.0

Choose a tag to compare

@2sem 2sem released this 02 Jun 00:24
a8af6fd

Adds get_timeline_markers (list timeline markers); registry auto-includes new tools with a fail-fast assert. 149 tools. See CHANGELOG.md.

v0.10.0

Choose a tag to compare

@2sem 2sem released this 01 Jun 23:47
65ed40a

id-based media-pool clip addressing (MVP): tools accept a stable clip id across bins; listings expose id. 148 tools. See CHANGELOG.md.

v0.9.0

Choose a tag to compare

@2sem 2sem released this 01 Jun 23:30
6fe395a

Server-side argument validation (required/type/enum) before dispatch + dead-import cleanup. 148 tools. See CHANGELOG.md.