шорткаты

This commit is contained in:
2026-08-24 15:59:05 +03:00
parent 0ef8378dd1
commit 79c59eeeed
5 changed files with 153 additions and 115 deletions

View File

@@ -4603,9 +4603,11 @@ function startCustomTooltips() {
const detail = payload?.detail?.message || payload?.detail || `HTTP ${response.status}`;
throw new Error(typeof detail === "string" ? detail : JSON.stringify(detail));
}
// BUILD53 compatibility marker: trackRuntimeOverlayCommands(clean, execution)
// BUILD100 tracks only ACK-successful commands below, so a failed title cannot
// incorrectly light the ON AIR state.
// BUILD102: interactive shortcuts return as soon as the server has handed
// commands to the live Agent WebSocket. `ok` therefore means dispatched to
// Agent, not ACK-confirmed by vMix. This keeps F-keys and dock buttons instant.
// BUILD53 compatibility marker retained for older regression tests:
// trackRuntimeOverlayCommands(clean, execution)
const resultRows = Array.isArray(payload?.results) ? payload.results : [];
const successfulCommands = clean.filter((_command, index) => {
const row = resultRows[index];
@@ -8735,7 +8737,7 @@ async function hockeyApplyQuickSelector(selector, value, label = "") {
}, { refreshMapping: true });
}
async function hockeyCommitQuickPanelButtonContext(button, attachedSelectors) {
async function hockeyCommitQuickPanelButtonContext(button, attachedSelectors, { refreshMapping = false } = {}) {
const patch = {
"panel.last_button.id": button.id,
"panel.last_button.label": button.label,
@@ -8747,7 +8749,7 @@ async function hockeyCommitQuickPanelButtonContext(button, attachedSelectors) {
patch[`panel.${selector.id}.label`] = option?.label || value;
patch[`panel.last_button.${selector.id}`] = value;
}
await hockeySetMatchValues(patch, { refreshMapping: true });
await hockeySetMatchValues(patch, { refreshMapping });
}
function renderHockeyQuickCommandDock() {
@@ -8820,7 +8822,10 @@ function renderHockeyQuickCommandDock() {
control.classList.add("is-sending");
try {
const attachedSelectors = selectors.filter((selector) => selector.button_id === button.id);
await hockeyCommitQuickPanelButtonContext(button, attachedSelectors);
// BUILD102: save the button context without a full Mapping ACK round-trip.
// Selector changes already refresh Mapping; the operator click itself must not
// wait behind Mapping before its Shortcut Sequence is dispatched.
await hockeyCommitQuickPanelButtonContext(button, attachedSelectors, { refreshMapping: false });
if (button.mode === "toggle") {
const flagResult = await hockeyToggleMatchFlag(hockeyPrematchFlagKey(button.id));
if (!flagResult) throw new Error("Не удалось изменить состояние кнопки");