191 build - поправлены старые падения, проверены 3 матча и 6 агентов одновременных

This commit is contained in:
2026-10-21 13:41:47 +03:00
parent 787f880c0e
commit bf5e0d3101
52 changed files with 4024 additions and 730 deletions

View File

@@ -5010,7 +5010,7 @@ function startCustomTooltips() {
const rawCommands = typeof commands === "function" ? commands() : commands;
const clean = (rawCommands || []).map(compactVmixCommand).filter((command) => command.Function);
if (!clean.length) return Promise.resolve({ ok: true, applied: 0, requested: 0, results: [] });
const deviceId = currentRuntimeVmixDeviceId();
const penaltyInputs = new Set(clean.map((command) => String(command.Input || "")));
const penaltyAssignments = Array.from(state.vmixPenaltyTargetAssignments.entries())
.filter(([, value]) => penaltyInputs.has(String(value.input || "")));
@@ -5021,6 +5021,13 @@ function startCustomTooltips() {
}
};
// An empty selection must not use an old session Agent or confirm an unsent penalty target.
if (!deviceId) {
forgetFailedPenaltyAssignments();
console.warn("vMix timer sync skipped: select an Agent in this browser");
return Promise.resolve({ ok: false, skipped: true, reason: "device_selection_required", applied: 0, requested: clean.length, results: [], error: "Выберите Agent в этом браузере" });
}
const request = fetch("/api/hockey/vmix/sequence", {
method: "POST",
cache: "no-store",
@@ -5031,7 +5038,7 @@ function startCustomTooltips() {
// but BUILD106 uses ordered single WebSocket frames rather than vmix.batch.
body: JSON.stringify({
commands: clean,
device_id: currentRuntimeVmixDeviceId(),
device_id: deviceId,
session_token: currentRuntimeHockeySessionToken(),
delivery_mode: "timer-fast-ordered",
}),