Skip to content

Releases: Poechant/davinci-resolve-cli

v0.3.0 — subtitle / config.toml / MCP HTTP / WI research

03 Jun 06:56

Choose a tag to compare

[0.3.0] - 2026-05-22

First minor since v0.2; four new capability areas, no breaking changes for v0.2 users.

Added

  • subtitle command domaindvr 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, …) return validation_error with the
    supported list. Pure-function parsers / serializers in src/dvr/subtitle.py.
  • config command domain + ~/.dvr/config.toml / <cwd>/.dvr/config.toml
    TOML-driven defaults merged with precedence CLI flag > project > user > built-in. dvr config show returns effective values with a per-field source
    map; dvr config init drops a commented sample. First default fields:
    output_format / bin / preset / marker_color / marker_duration. dvr render submit now accepts a missing --preset when defaults.preset is set in
    config. dvr doctor reports the config layer's path & existence.
  • MCP HTTP/SSE transportdvr 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 carry Authorization: Bearer <token>; missing / wrong → 401. Binding to a non-loopback host emits a
    SECURITY WARNING on stderr. stdio MCP path is unchanged (v0.2 users keep
    working).
  • New MCP toolssubtitle.import, subtitle.export, config.show
    (23 tools total).

Documentation

  • README "Configuration" section between Cookbook and Troubleshooting.
  • Capabilities at a glance table extended with subtitle and config rows.
  • 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 cut and
    timeline move remain 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 move actual 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

21 May 06:36

Choose a tag to compare

[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-found
    • media tag --color <bad> → suggests close colors
    • timeline marker add --color <bad> → suggests close colors
      Implemented via difflib.get_close_matches (n=3, cutoff=0.4).
      NotFound gained an optional hint= 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 / -q flag — suppress successful stdout for CI
    scripts that only care about exit codes. Errors still go to stderr.
  • Global --verbose flag — equivalent to setting DVR_DEBUG=1; show
    Python tracebacks on internal errors (the regular structured-error path
    is unchanged).

Tests

  • 203 (was 197). Six new tests cover project open fuzzy hint, both color
    fuzzy hints (media + timeline), emit() quiet behavior, and is_quiet
    / set_quiet API. 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

19 May 01:31

Choose a tag to compare

[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 --shell to override detection.
  • dvr render submit fuzzy 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 with dvr --version,
      Resolve version+edition, OS, dvr doctor --format json paste.
    • 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)

16 May 10:17

Choose a tag to compare

[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 duplicated CONTRIBUTING.md.
    The contributor-facing checklist now lives in CONTRIBUTING.md and
    explicitly addresses both human and AI contributors.

Doc-only patch.

v0.2.6 — remove broken demo.gif link (doc-only)

16 May 10:17

Choose a tag to compare

[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.tape is unchanged — the moment vhs becomes installable
    on macOS 15 stable, vhs docs/demo.tape will regenerate the GIF and
    the README can re-embed it.

Doc-only patch.

v0.2.5 — CONTRIBUTING.md + actionable marker hints + repo hygiene

16 May 09:45

Choose a tag to compare

[0.2.5] - 2026-05-16

Added

  • CONTRIBUTING.md — human-friendly contributor entry point pairing
    with AGENTS.md (the AI-agent rules). 60-second checklist, what we
    welcome / push back on, security-issue reporting.
  • timeline marker add error hints are now actionable. When AddMarker
    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."
  • ApiCallFailed now accepts a hint= keyword argument so domain code can
    attach situation-specific guidance without forking the error class.

Removed

  • test-cases.md at 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 under versions/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)

16 May 09:43

Choose a tag to compare

[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 +
    inline vhs recipe for generating docs/demo.gif (brew install vhs && vhs docs/demo.tape).
    GIF placeholder embedded; drop the rendered file in docs/demo.gif and 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

15 May 18:11

Choose a tag to compare

[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 delete happy 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+)

15 May 17:53

Choose a tag to compare

[0.2.1] - 2026-05-16

Fixed

  • Drop Python 3.9 support. The mcp runtime dependency (introduced for the
    dvr mcp server in v0.2.0) requires Python 3.10+, so pipx install on a 3.9
    interpreter failed with No matching distribution found for mcp>=1.0.
    requires-python is 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.ImportProject and tests/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

15 May 17:13

Choose a tag to compare

0.2.0 - 2026-05-15

Added

  • PyPI distributionpipx install davinci-resolve-cli now 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 across doctor / project.* / media.* / render.* / timeline.* namespaces. Each tool's inputSchema is a valid JSON Schema; DvrError surfaces as structured {errorCode, message, hint} content. Drop-in .mcp.json config shown in README.
  • Workflow Integrations bridge — bundled wi-plugin/ (manifest + index.html + server.js) and dvr install-wi command for one-shot deployment to Resolve's plugin folder (macOS / Windows / Linux paths supported).
  • dvr timeline cut --at <TC> and dvr 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 (true SplitClip deferred 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.