Add project-aware Coproducer and MCP server #1941

Open
bmatherly opened 5:32pm on October 19, 2026 wants to merge 4938 Δ into mltframework/shotcut master from
coproducer

Pull request #1941 quality checks

Code files and functions touched by this pull request are analyzed below.

Quality targets

How does this pull request compare to chosen code quality targets? Read more about code quality targets.

Target name Target value This PR
Maximum Diff Delta per PR 500 4938
Maximum comment count per PR 10 10
Pull request maximum business days between activity 3 19
Pull request maximum business days open 5 19

Coupled files

Are there any files from this commit that are always committed alongside another file? This often suggests that there exists code coupling to potentially remove. Read more about code coupling

Committed together % Code file
Coupled code file
Commits in PR with both
100 src/docks/coproducerdock.h
src/docks/coproducerdock.cpp
3
100 src/docks/coproducerdock.h
src/mainwindow.cpp
3
100 src/coproducer/llamaserverprovider.cpp
src/docks/coproducerdock.cpp
3
100 src/coproducer/llamaserverprovider.cpp
src/CMakeLists.txt
3
100 src/qmltypes/qmlextension.h
src/qmltypes/qmlextension.cpp
1
100 src/qmltypes/qmlextension.cpp
src/qmltypes/qmlextension.h
1
100 src/mainwindow.h
src/mainwindow.cpp
2
100 src/util.h
src/util.cpp
2
100 src/settings.h
src/settings.cpp
1
75 src/docks/coproducerdock.cpp
src/docks/coproducerdock.h
3
75 src/docks/coproducerdock.cpp
src/coproducer/llamaserverprovider.cpp
3
75 src/docks/coproducerdock.cpp
src/CMakeLists.txt
3
75 src/docks/coproducerdock.cpp
src/mainwindow.cpp
3
75 src/qmltypes/qmlextension.h
src/dialogs/filedownloaddialog.cpp
1
73 src/settings.cpp
src/settings.h
1

Biggest files changes in pull request

Path View whole file Lines removed Lines added Final line count
src/coproducer/projectinspector.cpp 0 0 ---
src/docks/coproducerdock.cpp 0 817 817
src/docks/coproducerdock.h 0 135 135
src/models/multitrackmodel.cpp 10 0 4839
src/models/playlistmodel.cpp 10 0 949
src/util.cpp 0 39 1430
src/mainwindow.cpp 0 54 7122
src/coproducer/projectinspector.h 0 0 ---
src/util.h 0 3 127
src/coproducer/localllamaserverprovider.cpp 0 280 280
src/coproducer/openaicompatibleprovider.cpp 0 254 254
src/coproducer/llamaserverprovider.cpp 0 0 ---
src/qml/extensions/llamamodel.qml 0 0 ---
src/mcp/shotcuttools.h 0 40 40
src/mcp/toolregistry.cpp 0 75 75
icons/light/32x32/go-up.png 0 0 ---
src/dialogs/coproducersettingsdialog.h 0 76 76
src/mcp/tooldefinition.h 0 41 41
src/coproducer/forumsearch.h 0 0 ---
icons/oxygen-dark/32x32/actions/go-up.png 0 0 ---
tests/test_mcpserver.cpp 0 273 273
icons/oxygen/32x32/actions/go-up.png 0 0 ---
src/coproducer/chatprovider.h 0 111 111
src/mcp/mcpserver.cpp 0 434 434
src/qml/views/coproducer/coproducer.qml 0 0 ---
src/mainwindow.h 0 9 434
src/CMakeLists.txt 0 20 455
src/settings.h 0 12 509
src/mcp/shotcuttools.cpp 0 140 140
src/coproducer/forumsearch.cpp 0 0 ---
src/coproducer/localllamaserverprovider.h 0 71 71
src/coproducer/openaicompatibleprovider.h 0 66 66
src/settings.cpp 0 50 2250
src/mcp/httpserver.cpp 0 275 275
src/mcp/toolregistry.h 0 53 53
scripts/build-shotcut.sh 0 49 2406
src/mcp/mcpclient.cpp 0 208 208
icons/light/32x32/view-conversation-balloon.png 0 0 ---
icons/dark/32x32/go-up.png 0 0 ---
src/dialogs/coproducersettingsdialog.cpp 0 581 581
icons/resources.qrc 0 0 ---
src/mcp/forumsearch.h 0 69 69
icons/oxygen-dark/32x32/actions/view-conversation-balloon.png 0 0 ---
src/mcp/mcpserver.h 0 62 62
src/mcp/mcpclient.h 0 66 66
icons/oxygen/32x32/actions/view-conversation-balloon.png 0 0 ---
.gitignore 0 5 63
src/coproducer/openaicompatibleclient.cpp 0 0 ---
src/coproducer/openaicompatibleclient.h 0 0 ---
src/coproducer/llamaserverprovider.h 0 0 ---
src/qmltypes/qmlextension.h 0 1 104
src/mcp/httpserver.h 0 106 106
src/mcp/projectinspector.cpp 0 309 309
src/mcp/projectinspector.h 0 31 31
src/mcp/forumsearch.cpp 0 189 189
src/qmltypes/qmlextension.cpp 0 1 194
src/dialogs/filedownloaddialog.cpp 0 4 146
icons/dark/32x32/view-conversation-balloon.png 0 0 ---
tests/CMakeLists.txt 0 17 60
CMakePresets.json 0 0 ---

️ Biggest functions grown or shrunk by pull request

Which functions had their line count change as part of this pull request?

Qualified function name View whole function Lines removed Lines added Final line count
MainWindow::setupAndConnectDocks 0 26 559
MultitrackModel::data 10 0 216
PlaylistModel::data 10 0 201
formatMltTimeMs::clipDisplayName::summarizeProducer::summarizePlaylistItems::summarizeClipEntry::summarizePlaylistClips::summarizeTimelineClips::inspectProject 0 3 123
ForumSearch::onFinished 0 6 62
formatMltTimeMs::clipDisplayName::summarizeProducer::summarizePlaylistItems::summarizeClipEntry::summarizePlaylistClips::summarizeTimelineClips 0 2 29
ForumSearch::search 0 6 26
Util::clipDisplayName 0 25 23
LocalLlamaServerProvider::onServerReady 0 6 22
ForumSearch::cancel 0 14 14
showFrameRateDialog::applyCustomProperties::offerSingleFileConversion::isDockerImageCurrentAsync 0 2 14
Util::isAllowedApiBaseUrl 0 14 12
ForumSearch::onTimeout 0 11 10
ForumSearch::cleanForumText 0 2 10
ForumSearch::search::url 0 2 10
ForumSearch::finishIfReady 0 3 9
MainWindow::onCoproducerDockTriggered 0 8 6
ForumSearch::search::QObject 0 3 6
ChatProvider 0 6 5
ShotcutSettings::coproducerProvider 0 5 3
ShotcutSettings::setCoproducerApiKey 0 4 3
ShotcutSettings::coproducerApiKey 0 4 3
ShotcutSettings::setCoproducerModelPath 0 4 3
ShotcutSettings::coproducerModelPath 0 4 3
ShotcutSettings::setCoproducerModel 0 4 3
ShotcutSettings::coproducerModel 0 4 3
ShotcutSettings::setCoproducerBaseUrl 0 4 3
ShotcutSettings::coproducerBaseUrl 0 4 3
ShotcutSettings::setCoproducerProvider 0 4 3
ShotcutSettings::coproducerApiKey::setCoproducerApiKey 0 1 ---
ShotcutSettings::setCoproducerModelPath::coproducerApiKey 0 1 ---
ShotcutSettings::coproducerModelPath::setCoproducerModelPath 0 1 ---
ShotcutSettings::setCoproducerModel::coproducerModelPath 0 1 ---
ShotcutSettings::coproducerModel::setCoproducerModel 0 1 ---
ShotcutSettings::setCoproducerBaseUrl::coproducerModel 0 1 ---
ShotcutSettings::coproducerBaseUrl::setCoproducerBaseUrl 0 1 ---
ShotcutSettings::setCoproducerProvider::coproducerBaseUrl 0 1 ---
ShotcutSettings::coproducerProvider::setCoproducerProvider 0 1 ---
ForumSearch::finishIfReady::onTimeout 0 1 ---