Repository navigation
feat: prepare QLab MCP 0.4.0 with gated workspace authoring - #18
Merged
Merged
Conversation
Replace generic edits with typed cue and workspace tools, add guarded native/document operations and optional bounded media analysis, and align regression coverage and public documentation. BREAKING CHANGE: replace qlab_edit_cues and qlab_edit_workspace_settings with typed family and scoped workspace editors.
MarcheKEN
marked this pull request as ready for review
October 15, 2026 18:47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The development branch expands from 48 to 79 MCP tools, replacing generic cue and workspace-settings edits with typed editors. It also adds guarded root Cue List/Cart operations, local workspace document operations, optional audio analysis and media discovery, font/Video FX catalogues, and fixed local native cue fields and Triggers.
Version 0.4.0
Final verification: GitHub Actions CI passed on
ae94bd8(locked installation, test suite, lockfile and wheel/sdist builds). The branch has no merge conflicts and the local checkout is clean.Commit
ae94bd8aligns package metadata, module version, MCP initialization, lockfile, packaging expectations, README, user guide, architecture, current state, roadmap and changelog at 0.4.0. Dependencies and all 79 tool definitions are unchanged. Wheel/sdist metadata and source MCP initialization report 0.4.0. Dated 0.3.0 records and historical filenames retain their original version; they are not current release instructions. No tag or GitHub Release is published by this PR update.Final documentation review and installed-MCP acceptance — 2026-10-17
Commit
067afedupdates documentation only. It fixes stale blanket exclusions of native MIDI/Wall Clock configuration and guarded activation, documents the FX page limit and Timecode string types, and links the latest evidence from current state, roadmap and development indexes. Historical observations and imported sources remain preserved.067afed(tests, locked environment, lockfile and release artifact builds).Runtime acceptance report · Final documentation review
Changes
Compatibility
qlab_edit_cuesandqlab_edit_workspace_settingsare removed. Callers must migrate to the corresponding cue-family editors and scoped workspace-settings tools. The oldQLAB_ALLOWED_FILE_ROOTSconfiguration is removed; local media access requires conversational consent. This PR prepares version 0.4.0 (unreleased).Validation
17aa6f2: 1,886 passed, 43 skipped, 61 subtests passed on Ubuntu/Python 3.11; locked installation, lockfile verification and release artifact builds all passed.devinstallation: 1,893 passed, 36 skipped, 61 subtests passed.uv lock --check, wheel/sdist builds and FastMCP CLI inspection passed. The actual registry exposes 79 tools: 49 reads and 30 gated writes.Remaining boundaries
The earlier precommit shell lacked FFmpeg/ffprobe, so those local integration tests were skipped. The later installed-MCP session below successfully analyzed an authorized MP3; it does not change the earlier test environment. Playback and physical output remain unvalidated. Later native field writes are recorded below; document Open/Save/Close events remain unexecuted. Cart Move execution, unattended root deletion and the documented Text/FX/native Trigger capability gates remain restricted as described in the tools and reports. No release or merge is requested.
Documentation refresh — 2026-10-17
Commit
11b3040reconciles canonical guidance with current source and all 79 tools: native document Open preflight, full-inventory privacy, scoped file consent, transport/deadline/cache behavior, typed writer limits and API migration. The current roadmap/workorders now distinguish remaining runtime cases from already recorded clock/fade/mute proof. Historical phase plans are archived and dated records link to current guidance.Adds setup/troubleshooting and research/runtime/review/plan indexes. Original reference/transcript/source bytes, captured JSON and image evidence remain unchanged. Python changes are instruction text and docstrings only; normalized executable AST matches the previous implementation.
Local verification: 1,894 tests and 61 subtests passed, 35 skipped; 79-tool inventory (49 reads/30 writes); 931 relative destinations and 99 current-guide section links resolve; lockfile and wheel/sdist builds pass. Independent documentation/source review found no blocker. No new live QLab events, playback or hardware acceptance is claimed.
Behavior-preserving cleanup — 2026-10-17
Commit
9a346bcreuses existing reader normalization and inherited cue fields, combines equivalent settings/creation branches and removes unreachable handling. Seven source modules lose 62 net lines; 48 regression cases preserve coercions, falsey values, metadata priority, errors and dispatch arguments. Security gates and OSC call ordering remain unchanged.Validation: 1,942 tests and 61 subtests passed, 35 skipped; exact parity of all 79 MCP tool definitions and eight affected model schemas/field definitions/order; lockfile and wheel/sdist builds passed. Independent final review found no blocker. The dated review records scope and limits. No new live QLab, playback or hardware validation is claimed.