Refuse every multi-track selected-tracks render, both scopes; make a failed mono collapse observable

This commit is contained in:
2026-08-01 22:40:54 -04:00
parent 6e6f4a6a15
commit f69c4bf6bf
14 changed files with 366 additions and 114 deletions
+6 -9
View File
@@ -184,17 +184,14 @@ CaptureResult renderOffline(CaptureScope scope,
{
// Refused BEFORE anything is touched, so the refusal path has nothing to
// restore. This is the seam BOTH a fresh capture and a recipe replay cross, so
// neither can land the multi-stem render the predicate names.
if (isMultiTrackRangedItemRender(scope, req.sourceMode,
static_cast<int>(sourceTracks.size())))
// neither can land the multi-stem render the predicate names — and both scopes
// reach it, so a track capture and a ranged item capture refuse alike.
if (isMultiTrackStemRender(req.sourceMode,
static_cast<int>(sourceTracks.size())))
{
CaptureResult refused;
refused.status = CaptureStatus::MultiTrackRange;
refused.message =
"This range is narrower than the selected items, so it renders through "
"their tracks -- and those items span more than one track, which this "
"shape cannot land as a single file. Capture one track's items at a "
"time, or make the range match the items' extent.";
refused.status = CaptureStatus::MultiTrackSelection;
refused.message = multiTrackRefusalMessage(scope);
return refused;
}