From beda924b65377f29d2cea6a63c07695896644c7f Mon Sep 17 00:00:00 2001 From: Timo <6156589+Shik3i@users.noreply.github.com> Date: Thu, 2 Jul 2026 12:57:58 +0200 Subject: [PATCH] Fix DEV_SIMULATE_REMOTE_SEEK targetTime routing in background.js and add build identifier --- extension/background.js | 14 ++++++++------ extension/popup.html | 4 ++++ scripts/build-extension.cjs | 6 ++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/extension/background.js b/extension/background.js index 0c22ffa..5f95b5d 100644 --- a/extension/background.js +++ b/extension/background.js @@ -1615,7 +1615,7 @@ async function getReadyTabVideoState(tabId) { return state; } -async function simulateRemoteSeek(delta) { +async function simulateRemoteSeek(delta, explicitTargetTime = null) { if (!currentTabId) return { status: 'no_tab' }; const tabId = parseInt(currentTabId); if (isNaN(tabId)) return { status: 'no_tab' }; @@ -1624,7 +1624,7 @@ async function simulateRemoteSeek(delta) { if (!state || state.error) return { status: 'error', message: state?.error || 'No video state' }; if (!state.found || !Number.isFinite(state.currentTime)) return { status: 'no_video' }; - let targetTime = Math.max(0, state.currentTime + delta); + let targetTime = explicitTargetTime !== null ? explicitTargetTime : Math.max(0, state.currentTime + (delta || 0)); if (Number.isFinite(state.duration) && state.duration > 0) { targetTime = Math.min(targetTime, Math.max(0, state.duration - 0.1)); } @@ -2143,12 +2143,14 @@ async function handleAsyncMessage(message, sender, sendResponse) { sendResponse({ status: 'forbidden' }); return; } - const delta = Number(message.delta); - if (!Number.isFinite(delta)) { - sendResponse({ status: 'invalid_delta' }); + const delta = message.delta !== null && message.delta !== undefined ? Number(message.delta) : null; + const targetTime = message.targetTime !== null && message.targetTime !== undefined ? Number(message.targetTime) : null; + + if (delta === null && targetTime === null) { + sendResponse({ status: 'invalid_params' }); return; } - simulateRemoteSeek(delta).then(sendResponse).catch(err => { + simulateRemoteSeek(delta, targetTime).then(sendResponse).catch(err => { addLog(`Remote seek simulation failed: ${err.message}`, 'warn'); sendResponse({ status: 'error', message: err.message }); }); diff --git a/extension/popup.html b/extension/popup.html index 5df9ef9..df2188c 100644 --- a/extension/popup.html +++ b/extension/popup.html @@ -699,6 +699,10 @@ + +
+ Build: __BUILD_TIMESTAMP__ +
diff --git a/scripts/build-extension.cjs b/scripts/build-extension.cjs index d7b8c2c..ec3568d 100644 --- a/scripts/build-extension.cjs +++ b/scripts/build-extension.cjs @@ -140,6 +140,12 @@ function copyExtensionFiles(targetDir, browserName) { fs.writeFileSync(destPath, content); console.log(`✓ Injected uninstall URL constants for ${browserName} into background.js`); + } else if (item === 'popup.html') { + let content = fs.readFileSync(srcPath, 'utf8'); + const timestamp = new Date().toISOString().replace('T', ' ').substring(0, 19) + ' UTC'; + content = content.replace(/__BUILD_TIMESTAMP__/g, timestamp); + fs.writeFileSync(destPath, content); + console.log(`✓ Injected build timestamp into popup.html: ${timestamp}`); } else { fs.copyFileSync(srcPath, destPath); }