diff --git a/.agent/skills/impeccable/scripts/VERSION b/.agent/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.agent/skills/impeccable/scripts/VERSION +++ b/.agent/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.agent/skills/impeccable/scripts/live-browser.js b/.agent/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.agent/skills/impeccable/scripts/live-browser.js +++ b/.agent/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.agents/skills/impeccable/scripts/VERSION b/.agents/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.agents/skills/impeccable/scripts/VERSION +++ b/.agents/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.agents/skills/impeccable/scripts/live-browser.js b/.agents/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.agents/skills/impeccable/scripts/live-browser.js +++ b/.agents/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.claude/skills/impeccable/scripts/VERSION b/.claude/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.claude/skills/impeccable/scripts/VERSION +++ b/.claude/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.claude/skills/impeccable/scripts/live-browser.js b/.claude/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.claude/skills/impeccable/scripts/live-browser.js +++ b/.claude/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.cursor/skills/impeccable/scripts/VERSION b/.cursor/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.cursor/skills/impeccable/scripts/VERSION +++ b/.cursor/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.cursor/skills/impeccable/scripts/live-browser.js b/.cursor/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.cursor/skills/impeccable/scripts/live-browser.js +++ b/.cursor/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.gemini/skills/impeccable/scripts/VERSION b/.gemini/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.gemini/skills/impeccable/scripts/VERSION +++ b/.gemini/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.gemini/skills/impeccable/scripts/live-browser.js b/.gemini/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.gemini/skills/impeccable/scripts/live-browser.js +++ b/.gemini/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.github/skills/impeccable/scripts/VERSION b/.github/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.github/skills/impeccable/scripts/VERSION +++ b/.github/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.github/skills/impeccable/scripts/live-browser.js b/.github/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.github/skills/impeccable/scripts/live-browser.js +++ b/.github/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.grok/skills/impeccable/scripts/VERSION b/.grok/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.grok/skills/impeccable/scripts/VERSION +++ b/.grok/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.grok/skills/impeccable/scripts/live-browser.js b/.grok/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.grok/skills/impeccable/scripts/live-browser.js +++ b/.grok/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.hermes/skills/impeccable/scripts/VERSION b/.hermes/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.hermes/skills/impeccable/scripts/VERSION +++ b/.hermes/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.hermes/skills/impeccable/scripts/live-browser.js b/.hermes/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.hermes/skills/impeccable/scripts/live-browser.js +++ b/.hermes/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.kiro/skills/impeccable/scripts/VERSION b/.kiro/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.kiro/skills/impeccable/scripts/VERSION +++ b/.kiro/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.kiro/skills/impeccable/scripts/live-browser.js b/.kiro/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.kiro/skills/impeccable/scripts/live-browser.js +++ b/.kiro/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.opencode/skills/impeccable/scripts/VERSION b/.opencode/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.opencode/skills/impeccable/scripts/VERSION +++ b/.opencode/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.opencode/skills/impeccable/scripts/live-browser.js b/.opencode/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.opencode/skills/impeccable/scripts/live-browser.js +++ b/.opencode/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.pi/skills/impeccable/scripts/VERSION b/.pi/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.pi/skills/impeccable/scripts/VERSION +++ b/.pi/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.pi/skills/impeccable/scripts/live-browser.js b/.pi/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.pi/skills/impeccable/scripts/live-browser.js +++ b/.pi/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.qoder/skills/impeccable/scripts/VERSION b/.qoder/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.qoder/skills/impeccable/scripts/VERSION +++ b/.qoder/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.qoder/skills/impeccable/scripts/live-browser.js b/.qoder/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.qoder/skills/impeccable/scripts/live-browser.js +++ b/.qoder/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.rovodev/skills/impeccable/scripts/VERSION b/.rovodev/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.rovodev/skills/impeccable/scripts/VERSION +++ b/.rovodev/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.rovodev/skills/impeccable/scripts/live-browser.js b/.rovodev/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.rovodev/skills/impeccable/scripts/live-browser.js +++ b/.rovodev/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.trae-cn/skills/impeccable/scripts/VERSION b/.trae-cn/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.trae-cn/skills/impeccable/scripts/VERSION +++ b/.trae-cn/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.trae-cn/skills/impeccable/scripts/live-browser.js b/.trae-cn/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.trae-cn/skills/impeccable/scripts/live-browser.js +++ b/.trae-cn/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.trae/skills/impeccable/scripts/VERSION b/.trae/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.trae/skills/impeccable/scripts/VERSION +++ b/.trae/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.trae/skills/impeccable/scripts/live-browser.js b/.trae/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.trae/skills/impeccable/scripts/live-browser.js +++ b/.trae/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.veto/skills/impeccable/scripts/VERSION b/.veto/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.veto/skills/impeccable/scripts/VERSION +++ b/.veto/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.veto/skills/impeccable/scripts/live-browser.js b/.veto/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.veto/skills/impeccable/scripts/live-browser.js +++ b/.veto/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/.vibe/skills/impeccable/scripts/VERSION b/.vibe/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/.vibe/skills/impeccable/scripts/VERSION +++ b/.vibe/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/.vibe/skills/impeccable/scripts/live-browser.js b/.vibe/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/.vibe/skills/impeccable/scripts/live-browser.js +++ b/.vibe/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } } diff --git a/plugin/skills/impeccable/scripts/VERSION b/plugin/skills/impeccable/scripts/VERSION index 6e8bf73aa..17e51c385 100644 --- a/plugin/skills/impeccable/scripts/VERSION +++ b/plugin/skills/impeccable/scripts/VERSION @@ -1 +1 @@ -0.1.0 +0.1.1 diff --git a/plugin/skills/impeccable/scripts/live-browser.js b/plugin/skills/impeccable/scripts/live-browser.js index 277c60e2c..ac6f18586 100644 --- a/plugin/skills/impeccable/scripts/live-browser.js +++ b/plugin/skills/impeccable/scripts/live-browser.js @@ -7834,7 +7834,6 @@ if (editBadgeEl && editBadgeEl.style.display !== 'none') renderEditBadge('idle-disabled'); showBar('generating'); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -7916,7 +7915,6 @@ showBar('generating'); startScrollTracking(); saveSession(); - sendCheckpoint('generate_started'); writeScrollY(window.scrollY); if (variantObserver) variantObserver.disconnect(); variantObserver = startVariantObserver(currentSessionId); @@ -8238,7 +8236,8 @@ // rasterization from delaying the fetch itself. if (!hasAnnotations) { basePayload.clientSentAt = Date.now(); - await sendEvent(basePayload); + const created = await sendEvent(basePayload); + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } let screenshotPath; @@ -8279,7 +8278,10 @@ // is semantic input. Plain requests were already dispatched above. if (hasAnnotations) { basePayload.clientSentAt = Date.now(); - sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + const created = await sendEvent(screenshotPath ? { ...basePayload, screenshotPath } : basePayload); + // Capture/upload can take seconds. Progress before this acknowledgment + // refers to an unknown session and would clear our own active work. + if (created?.ok && currentSessionId === basePayload.id) sendCheckpoint('generate_started'); } }