Releases: Poechant/davinci-resolve-cli
Releases · Poechant/davinci-resolve-cli
v0.3.0 — subtitle / config.toml / MCP HTTP / WI research
[0.3.0] - 2026-05-22
First minor since v0.2; four new capability areas, no breaking changes for v0.2 users.
Added
subtitlecommand domain —dvr subtitle import <path.srt|.vtt>writes
subtitle cues to the active timeline's subtitle track;dvr subtitle export --output <path>reads them back. Format inferred from the suffix; unsupported
extensions (.ass,.ssa,.fcpxml, …) returnvalidation_errorwith the
supported list. Pure-function parsers / serializers insrc/dvr/subtitle.py.configcommand domain +~/.dvr/config.toml/<cwd>/.dvr/config.toml—
TOML-driven defaults merged with precedenceCLI flag > project > user > built-in.dvr config showreturns effective values with a per-field source
map;dvr config initdrops a commented sample. First default fields:
output_format / bin / preset / marker_color / marker_duration.dvr render submitnow accepts a missing--presetwhendefaults.presetis set in
config.dvr doctorreports the config layer's path & existence.- MCP HTTP/SSE transport —
dvr mcp --http [--port 50421] [--host 127.0.0.1]
starts a Starlette ASGI app over uvicorn, with a per-process bearer token
printed once to stdout. All requests must carryAuthorization: Bearer <token>; missing / wrong → 401. Binding to a non-loopback host emits a
SECURITY WARNINGon stderr. stdio MCP path is unchanged (v0.2 users keep
working). - New MCP tools —
subtitle.import,subtitle.export,config.show
(23 tools total).
Documentation
- README "Configuration" section between Cookbook and Troubleshooting.
- Capabilities at a glance table extended with
subtitleandconfigrows. examples/with-config.sh— sixth runnable recipe demonstrating a
project-local config.toml pinning defaults.docs/wi-research.md— full audit of Resolve's scripting surface for a
razor-cut / clip-move primitive. Conclusion: none exists;timeline cutand
timeline moveremain honest placeholders until Resolve ships a public API.
WI plumbing stays in place so the eventual landing is a small server.js change.
Tests
- 267 unit tests (was 203 at v0.2.9). +40 subtitle parser/serializer/command,
+12 config, +11 mcp-http, +1 doctor config section.
Deferred to v0.4+
timeline cut/timeline moveactual razor-cut and clip-move behavior
(gated on Resolve exposing the primitives).- Subtitle export of richer item metadata (currently emits one cue per
subtitle-track item). - mTLS for MCP HTTP transport.
v0.2.9 — examples/ + fuzzy hints + architecture docs + --quiet/--verbose
[0.2.9] - 2026-05-19
Added
examples/directory — five runnable end-to-end shell scripts that
encode the README cookbook recipes.examples/render-current-timeline.sh,
examples/import-by-date.sh,examples/tag-bin-for-review.sh,
examples/markers-from-csv.sh,examples/wait-and-notify.sh. POSIX
shell +jq; ~15-30 lines each; copy-and-modify for your own workflow.- Project-wide fuzzy hints. Following v0.2.8's render-preset fuzzy
hint, the same pattern now applies to:project open <name>→ suggests close-name projects on not-foundmedia tag --color <bad>→ suggests close colorstimeline marker add --color <bad>→ suggests close colors
Implemented viadifflib.get_close_matches(n=3, cutoff=0.4).
NotFoundgained an optionalhint=keyword to support this.
docs/architecture.md+ Mermaid diagram in README. Single-page
walkthrough of the layering: two entry points (dvr+dvr mcp) over
one engine, the DaVinciResolveScript bridge, the Workflow Integration
escape hatch (with its inverted "CLI is server, plugin polls" topology),
the async render store, the structured-error/output IO discipline. The
README now embeds the architecture diagram between Cookbook and
Compatibility.- Global
--quiet/-qflag — suppress successful stdout for CI
scripts that only care about exit codes. Errors still go to stderr. - Global
--verboseflag — equivalent to settingDVR_DEBUG=1; show
Python tracebacks on internal errors (the regular structured-error path
is unchanged).
Tests
- 203 (was 197). Six new tests cover
project openfuzzy hint, both color
fuzzy hints (media + timeline),emit()quiet behavior, andis_quiet
/set_quietAPI. The output-test module gained an autouse fixture that
resets the module-level quiet flag around each test.
No code-breaking changes.
v0.2.8 — completion install + fuzzy preset hint + troubleshooting + templates
[0.2.8] - 2026-05-17
Added
dvr completion install— friendlier wrapper around Typer's built-in
--install-completion. Auto-detects the shell from$SHELL(zsh / bash /
fish), runs the install, prints a clear "open a new shell" next-step.
Pass--shellto override detection.dvr render submitfuzzy preset hint — when the preset name doesn't
match exactly, the error now includes up to five close-match suggestions
(difflib.get_close_matches, cutoff 0.4). e.g.H264 Master→ hint
Did you mean one of: 'H.264 Master'?- README Troubleshooting — five expand/collapse Q&As covering the
most common installation and bridge pitfalls (Resolve-not-running,
Free vs Studio, Python 3.9 incompat, Windows custom install path,
WI plugin not showing in Workspace menu). - GitHub issue & PR templates under
.github/:ISSUE_TEMPLATE/bug_report.yml— structured form withdvr --version,
Resolve version+edition, OS,dvr doctor --format jsonpaste.ISSUE_TEMPLATE/feature_request.yml— problem / proposed CLI shape /
alternatives / scope dropdown.ISSUE_TEMPLATE/config.yml— blank issues disabled, directs general
questions to Discussions.PULL_REQUEST_TEMPLATE.md— TDD/schemas/MCP-mirror checklist.
Tests
- 197 (was 186). Eleven new tests cover shell detection, the three
completion failure modes, and the fuzzy preset hint.
No code-breaking changes.
v0.2.7 — remove AGENTS.md (doc-only)
[0.2.7] - 2026-05-16
Removed
AGENTS.md— turned out to be premature given the project has no real
contributors yet, and the rules it encoded duplicatedCONTRIBUTING.md.
The contributor-facing checklist now lives inCONTRIBUTING.mdand
explicitly addresses both human and AI contributors.
Doc-only patch.
v0.2.6 — remove broken demo.gif link (doc-only)
[0.2.6] - 2026-05-16
Fixed
- README Demo section no longer references a missing
docs/demo.gif.
Homebrew on macOS 15 (still pre-release) errors out installing vhs
(Error: unknown or unsupported macOS version: :dunno), so the GIF
can't be regenerated yet. The text snapshot now leads the section
unconditionally, with a brief note about the future GIF. docs/demo.tapeis unchanged — the moment vhs becomes installable
on macOS 15 stable,vhs docs/demo.tapewill regenerate the GIF and
the README can re-embed it.
Doc-only patch.
v0.2.5 — CONTRIBUTING.md + actionable marker hints + repo hygiene
[0.2.5] - 2026-05-16
Added
CONTRIBUTING.md— human-friendly contributor entry point pairing
withAGENTS.md(the AI-agent rules). 60-second checklist, what we
welcome / push back on, security-issue reporting.timeline marker adderror hints are now actionable. WhenAddMarker
returns false, the CLI now inspects the timeline state and emits one of
two specific hints instead of the generic "confirm preconditions" line:- timeline has zero clips → "Timeline 'X' has no clips. Resolve markers must anchor to a clip — import or append at least one clip before placing a marker. …"
- timeline has clips → "AddMarker returned false. Common causes: marker already exists at this frame, frame outside the timeline's clip range, or the color string is misspelled."
ApiCallFailednow accepts ahint=keyword argument so domain code can
attach situation-specific guidance without forking the error class.
Removed
test-cases.mdat the repo root. It was internal AC↔pytest mapping
scaffolding that leaked into the public repo from v0.1; AC are tracked
in the milestone files underversions/v*/milestones/and the test
files themselves.
Tests
- 186 (was 184). Two new tests cover the marker-add hint branches.
No public API behavior changes besides the richer hints — no breaking changes.
v0.2.4 — AGENTS.md, Demo section, two badges (doc-only)
[0.2.4] - 2026-05-16
Added
AGENTS.md— contributor-facing guide for AI coding agents (Cursor /
Codex / Aider / Continue / …) helping with PRs. Encodes the TDD rules,
pure-function-+-thin-Typer split, error model, dry-run requirement, MCP
registry mirroring, cross-platform constraints, and the "don't touch
without discussion" list.- README Demo section — text snapshot of five canonical commands +
inlinevhsrecipe for generatingdocs/demo.gif(brew install vhs && vhs docs/demo.tape).
GIF placeholder embedded; drop the rendered file indocs/demo.gifand it
shows up. docs/demo.tape— vhs script that produces a < 2 MB demo gif from a
fresh terminal in ~10 seconds.- Two new README badges — Tests workflow status + monthly PyPI downloads.
No code or behavior changes; documentation + contributor tooling only.
v0.2.2 — timeline delete + README cookbook
[0.2.2] - 2026-05-16
Added
dvr timeline delete <name>— delete a timeline by name. Supports--dry-run.
Auto-promotes another timeline to "current" if the deleted one was active.- README Cookbook — five copy-paste end-to-end recipes covering render,
batch import per date, bulk tag, CSV-driven markers, and MCP-agent dispatch.
Tests
- 6 new unit tests covering
timeline deletehappy path, missing name, empty
name, dry-run, current-timeline promotion, and last-timeline removal. - 184 unit tests total (was 178).
v0.2.1 — drop Python 3.9 (mcp transitive requires 3.10+)
[0.2.1] - 2026-05-16
Fixed
- Drop Python 3.9 support. The
mcpruntime dependency (introduced for the
dvr mcpserver in v0.2.0) requires Python 3.10+, sopipx installon a 3.9
interpreter failed withNo matching distribution found for mcp>=1.0.
requires-pythonis now>=3.10; classifiers, ruff target, and the CI
matrix have been aligned. v0.2.0 has been yanked from PyPI. - Cross-platform test fixtures:
FakeMediaPool.ImportMedia/
FakeProjectManager.ImportProjectandtests/unit/test_bootstrap_cross_platform.py
no longer assume POSIX path separators, fixing 5 spurious Windows-only CI
failures. Production code unchanged.
v0.2.0 — PyPI release + MCP server + cross-platform CI + WI bridge
0.2.0 - 2026-05-15
Added
- PyPI distribution —
pipx install davinci-resolve-clinow works directly from PyPI; OIDC Trusted Publishing via GitHub Actions (.github/workflows/publish.yml). - Cross-platform CI — matrix [macOS, Windows, Linux] × py [3.9–3.12] running unit tests on every PR and main push (
.github/workflows/test.yml). - MCP server (
dvr mcp) — stdio Model Context Protocol server exposing 20 tools acrossdoctor/project.*/media.*/render.*/timeline.*namespaces. Each tool'sinputSchemais a valid JSON Schema; DvrError surfaces as structured{errorCode, message, hint}content. Drop-in.mcp.jsonconfig shown in README. - Workflow Integrations bridge — bundled
wi-plugin/(manifest + index.html + server.js) anddvr install-wicommand for one-shot deployment to Resolve's plugin folder (macOS / Windows / Linux paths supported). dvr timeline cut --at <TC>anddvr timeline move --clip <id> --to <TC>— dispatched through the WI bridge over localhost HTTP (port 50420). v0.2 cut is implemented in the WI plugin as a placeholder marker (trueSplitClipdeferred to v0.3 pending Resolve API surface); move returns a structured deferred response.- New error codes:
wi_unavailable,wi_error. - 38 new unit tests (total 178 ≥ 140 baseline).
Changed
- Compatibility matrix in README: Windows and Linux promoted from "🚧 planned" to ✅ (unit + CI verified; community real-Resolve feedback welcome).
- README restructured to document both Skill (
SKILL.md) and MCP (dvr mcp) integration paths.
Deferred
- True razor-cut and clip-move via Workflow Integrations require a JS surface Resolve has not yet exposed — tracked for v0.3.
- TestPyPI dry-run workflow lives behind
workflow_dispatch: target=testpypi.