Skip to content

Commit 9e04d4f

Browse files
committed
chore(release): bump version to 2.24.0
V2 trust-by-default media analysis: host-chat vision protocol with commit_vision, control panel review surface (Phase B), correction tools, and analysis memory layer. See CHANGELOG.md for the full summary.
1 parent 6c4f9bb commit 9e04d4f

26 files changed

Lines changed: 15900 additions & 2916 deletions

AGENTS.md

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,35 @@ kernel-action counts, release notes, or long reference tables here.
99
Never modify, transcode, convert, proxy, relink, replace, or create derivatives
1010
of source media unless the user explicitly asks for that exact operation.
1111

12-
Analysis workflows may read source media, but outputs must go to sidecar files,
13-
session scratch space, or the configured `davinci-resolve-mcp-analysis` project
14-
root. Preserve the chain from camera original to final delivery.
12+
Analysis workflows may read source media, but file outputs must go to sidecar
13+
files, session scratch space, or the configured
14+
`davinci-resolve-mcp-analysis` project root. Resolve-target analysis should run
15+
visual analysis, transcription, metadata writeback, and Media Pool marker
16+
writeback by default unless the user opts out; those writes are Resolve project
17+
database changes, not source-media changes. Preserve the chain from camera
18+
original to final delivery.
1519

1620
See `docs/guides/media-analysis-guide.md` for the full source-safe workflow.
1721

22+
## Media Analysis Defaults Are Mandatory
23+
24+
Do not translate source-safe into underpowered, read-only, no-writeback analysis.
25+
When the user asks to analyze Resolve media, run the requested analysis directly
26+
with visual analysis, transcription, persisted artifacts, metadata writeback, and
27+
Media Pool marker writeback enabled by default. Do not add
28+
`include_visuals=false`, `include_transcription=false`,
29+
`publish_metadata=false`, `timed_markers=no`, `session_only=true`, or
30+
`dry_run=true` unless the user explicitly asks for that opt-out, the target is a
31+
raw file path that cannot receive Resolve project writeback. Vision uses
32+
`host_chat_paths` by default — analyze actions return a deferred payload with
33+
absolute `frame_paths` and a JSON schema; the host chat must read those frames
34+
as local images, produce JSON per the schema, and call
35+
`media_analysis(action="commit_vision", params={clip_id, visual, vision_token})`
36+
to merge the result and trigger metadata + Media Pool clip-marker writeback.
37+
Not completing `commit_vision` leaves the analysis in
38+
`pending_host_vision_analysis` — that is a failure mode, not a success. Users
39+
must explicitly opt out with `include_visuals=false` for a technical-only run.
40+
1841
## Frame-Referenced Color Work
1942

2043
Before applying a grade, look, shot match, LUT, CDL, DRX, or copied grade to an

CHANGELOG.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,105 @@
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.24.0
6+
7+
**Host-chat vision protocol (V2)**`analyze_*` actions now use
8+
`vision.provider="host_chat_paths"` by default. The analyze response is a
9+
deferred payload with absolute `frame_paths`, a per-shot `shot_table`, and a
10+
JSON schema; the host chat reads each frame as a local image, produces JSON per
11+
the schema, and calls `media_analysis(action="commit_vision", params={clip_id,
12+
visual, vision_token})` to finalize. `commit_vision` merges the visual report,
13+
rebuilds Media Pool clip markers, publishes metadata to Resolve, and preserves
14+
human corrections via `corrections.json`. Skipping the commit leaves the run in
15+
`pending_host_vision_analysis` — surfaced explicitly rather than silently
16+
downgraded. The legacy `chat_context`/`mcp_sampling` providers still resolve to
17+
the same host-chat path.
18+
19+
**Trust-by-default analysis defaults**`analyze_media` defaults to
20+
`include_transcription=true`, `persist=true`, `publish_metadata=true`, and
21+
`timed_markers="ask"` so source-safe no longer means underpowered. Agents that
22+
need a technical-only or read-only run must explicitly pass
23+
`include_visuals=false`, `include_transcription=false`, `publish_metadata=false`,
24+
`timed_markers="no"`, `session_only=true`, or `dry_run=true`. The
25+
`analyze_media` prompt and SKILL.md spell out the anti-regression rule.
26+
27+
**Control panel: Review surface (Phase B)** — The local browser control panel
28+
gains a Review tab backed by new endpoints: `/api/clips`, `/api/clips/<id>`,
29+
`/api/clips/<id>/shots`, `/api/clips/<id>/shots/<index>`,
30+
`/api/clips/<id>/frames/<n>`, `/api/clips/<id>/transcript`,
31+
`/api/clips/<id>/corrections`, `/api/clips/combined`, `/api/clips/export`,
32+
`/api/panel_state`, `/api/update/status`, `/api/update/apply`, and
33+
`/api/resolve/open_clip`. The UI ships a bin grid with thumbnails, a clip
34+
detail with shot strip, a shot detail with grouped V2 fields + frame grid,
35+
inline correction editors per subjective field, transcript correction +
36+
regeneration, an Open-in-Resolve bridge, and 2-second chat ↔ panel state
37+
polling.
38+
39+
**Control panel MCP actions**`resolve_control.open_control_panel`,
40+
`control_panel_status`, and `close_control_panel` manage the local panel
41+
subprocess via a pidfile. `save_state` / `restore_state` snapshot and restore
42+
Resolve playhead + selection state. `get_panel_state`, `set_panel_state`, and
43+
`session_start_context` share panel focus between chat and the UI through
44+
`panel_state.json`.
45+
46+
**Correction tools** — New `media_analysis` actions for editing analysis
47+
without re-running it: `update_shot_field`, `update_clip_field`,
48+
`get_field_history`, `revert_field`, `list_corrections`. Writes land in
49+
`{clip_dir}/corrections.json` with append-only changelog + provenance
50+
(mirrors the V2 DB schema). `commit_vision` merges corrections on top of the
51+
fresh visual report so human edits survive re-analysis.
52+
53+
**Media Pool item open-in-viewer**`media_pool_item.open_in_viewer` selects
54+
a clip on the Media page and loads it into the source viewer, optionally
55+
setting mark in/out and bringing Resolve to the foreground via OS-level
56+
window activation. Useful for chat → Resolve hand-off.
57+
58+
**Source-trust prompt grading**`source_trust` parameter
59+
(`auto`/`filename`/`low`/`medium`/`high`) on analyze actions tunes the vision
60+
prompt to hedge identity/intent/value for archival or thin-evidence clips.
61+
62+
**Analysis memory layer** — New `src/utils/analysis_memory.py` introduces
63+
per-project memory + heartbeat + bin summary + soul scaffolding under the
64+
analysis root. `regenerate_bin_summary_from_manifest` aggregates per-clip
65+
fields (primary use, select potential, style, energy arc, top tags/locations)
66+
into a bin briefing. Auto-initialized on analyze.
67+
68+
**Control-panel polish** — Diagnostics + Overview restyled with a status-pill
69+
design system, navbar dropdowns fixed so top-level buttons no longer navigate
70+
on their own, Preferences consolidated (Dashboard Convenience + Storage pages
71+
removed), summary-style enum renamed to `full`/`concise`/`creative`/
72+
`technical` with backwards compat, navbar version badge + update modal,
73+
source-trust dropdown wired through.
74+
75+
**Server-side bug fixes**`commit_vision` auto-publish now reflects per-row
76+
status correctly (no silent-lie pending), compact analyze responses by default
77+
(`verbose: true` for the full manifest), `resolve_output_root` skips slug
78+
append when the configured base already terminates in the slug, frame sampler
79+
reserves per-shot budget so shot starts aren't starved by flash candidates,
80+
and machine markers are no longer written to Resolve (V2 architecture).
81+
82+
**Path hardening for GUI launches**`media_analysis` now augments `PATH`
83+
with the standard tool dirs (`/opt/homebrew/bin`, `/usr/local/bin`, etc.) so
84+
ffprobe/ffmpeg resolve even when the MCP server is launched by a GUI app
85+
(Claude.app, Dock/Spotlight) that inherits launchd's bare PATH.
86+
87+
**Documentation**`AGENTS.md` adds the "Media Analysis Defaults Are
88+
Mandatory" section. `docs/SKILL.md` rewrites the `analyze_media` prompt
89+
guidance for the host-chat-paths protocol and adds the anti-regression rule.
90+
`docs/guides/media-analysis-guide.md` covers the deferred vision payload and
91+
commit step. New design docs under `docs/design/`:
92+
`v2-control-panel-design.md`, `v2-db-schema.sql`,
93+
`v2-implementation-gameplan.md`, `v2-shot-schema-spec.md`,
94+
`control-panel-polish-gameplan.md`.
95+
96+
**Validation**: static import checks, API parity audit, focused
97+
media-analysis + marker/range/v232/v233 unit tests, npm CLI smoke,
98+
`npm pack --dry-run`, and `git diff --check` all passed. No source media was
99+
modified. Resolve scripting behavior is additive (new actions; existing
100+
actions unchanged); live Resolve validation covered the control-panel +
101+
open_in_viewer + commit_vision auto-publish + corrections-merge paths during
102+
the V2 push sessions logged in MEMORY.md.
103+
5104
## What's New in v2.23.1
6105

7106
**Control panel navigation fixes** — The local browser control panel now keeps

README.md

Lines changed: 3 additions & 3 deletions
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.23.1-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
3+
[![Version](https://img.shields.io/badge/version-2.24.0-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-32%20(329%20full)-blue.svg)](#server-modes)
@@ -74,7 +74,7 @@ The compound server is recommended unless you specifically need the granular one
7474
|------|-----------------------------------|
7575
| App and project control | Launch/reconnect, page switching, project CRUD, project folders, databases, cloud project wrappers, settings, presets, archives |
7676
| Media pool and ingest | Safe import, image sequences, multicam prep timelines, bin organization, metadata normalization, metadata field inventory, marks, annotations, relink/proxy/full-resolution guards |
77-
| Media analysis | Source-safe file/clip/bin/project analysis, 2-pop/slate-clap sync-event detection, confirmed Resolve metadata publishing, session-only defaults, existing-report reuse, chat-context visual analysis by default in `analyze_media` with opt-out, optional transcription |
77+
| Media analysis | Source-safe file/clip/bin/project analysis, 2-pop/slate-clap sync-event detection, default Resolve metadata and Media Pool marker writeback, persisted analysis artifacts, existing-report reuse, host_chat_paths visual analysis (finalized per clip with `commit_vision`, works with any vision-capable MCP client) with opt-out, transcription with opt-out |
7878
| Timeline editing and conform | Track/item probing, title text key scans/writes, copy/move/duplicate helpers, range operations, gaps/overlaps, source ranges, checked interchange exports/imports |
7979
| Review annotations | Timeline/item/clip markers, custom data, flags, clip color, copy/move/sync cleanup, review reports, marker thumbnail review |
8080
| Color and grading | Node graph probing, CDL validation, grade copy, DRX/LUT helpers, versions, Gallery stills, color groups |
@@ -104,7 +104,7 @@ The default server is a local stdio process launched by your MCP client; it does
104104

105105
For method-by-method status, see [API Coverage and Test Results](docs/reference/api-coverage.md). For current workflow support, see [Kernel Action Coverage](docs/kernels/README.md).
106106

107-
`analyze_media` uses in-chat visual analysis by default when the MCP client supports sampling/image messages. Pass `include_visuals=false` for technical-only or privacy-sensitive runs. If in-chat vision is unavailable, analysis continues with local technical/motion evidence and reports the skipped visual layer. `media_analysis.publish_clip_metadata` can publish confirmed analysis summaries, comments, keywords, people, and high-confidence slate fields back to Resolve clip metadata while preserving existing human-entered fields by default.
107+
`analyze_media` executes directly by default, persists inspectable reports/artifacts under the analysis root, requests host-chat visual analysis via the `host_chat_paths` protocol (analyze returns absolute frame paths + a JSON schema; the host chat reads each frame as an image and calls `media_analysis(action="commit_vision", ...)` to finalize), runs transcription through the configured local backend, and writes analysis summaries plus source-time Media Pool clip markers back to the Resolve project. Pass `include_visuals=false`, `include_transcription=false`, `publish_metadata=false`, `timed_markers=no`, or `dry_run=true` only when you want to opt out of those default behaviors. Skipping `commit_vision` leaves the run in `pending_host_vision_analysis` — surfaced as a failure mode, not silently downgraded.
108108

109109
## Documentation
110110

0 commit comments

Comments
 (0)