Skip to content

v1.3.5

Latest

Choose a tag to compare

@github-actions github-actions released this 30 May 12:16

v1.3.5 — 2026-05-30

  • Use orhun/git-cliff-action@v4 instead of v3

  • Use git-cliff on github release to generate changelog.md and release notes

  • Code style

  • Add comment for startup sequence: four cases, do not simplify without reading CLAUDE.md

  • Fix content script not injecting on direct page load

Switch run_at from document_idle to document_start so the script injects before YouTube's SPA initialisation fires yt-navigate-finish and yt-page-data-updated. Add a DOMContentLoaded fallback for the document_start case where the DOM is not yet ready, falling back to a direct call on re-injection into a live page.

Previously, temporary extension installs would race the tab opening and lose, leaving the script uninjected until the popup was clicked.

  • Fix AudioContext not starting until popup opened

AudioContext created on autoplay was left suspended due to browser autoplay policy. Add immediate resume attempt after construction plus click/keydown gesture listeners as fallback, so processing starts on first user interaction with the page rather than requiring the popup.

  • Coding style fixes

remove unused pollInterval variable
wrap long line
naked if clauses have curly brackets and new lines

  • Fix: add timeout and error reporting to waitForVideo

Previously waitForVideo polled indefinitely with no exit condition, so if YouTube's DOM never produced a

Add a 10s timeout that rejects with a descriptive error, and add a catch in onNewVideo to surface it via console.warn rather than swallowing it.

  • Fix: replace URL-guard navigation detection with maybeStartForCurrentPage

The previous approach used a shared currentUrl variable updated by both
yt-navigate-finish and yt-page-data-updated handlers. When yt-navigate-finish fired before location.href had updated (a known YouTube SPA race), it set currentUrl to the stale home URL, then the subsequent yt-page-data-updated guard suppressed onNewVideo() because the URL appeared unchanged.

Replace with a dedicated lastInitiatedUrl flag and a single
maybeStartForCurrentPage() function shared by both listeners. This checks
location.pathname directly so onNewVideo() only fires on watch/shorts pages,
and the dedup guard only blocks true double-fires for the same URL. Removes
the now-redundant currentUrl variable.

Fixes autostart failure when navigating to a video from the YouTube home page in a new tab.

  • Manifest to 1.3.5

  • Document files for llm usage

  • Exclude markdown docs from build - not needed at runtime

  • Fix intermittent startup on direct page load and Shorts

yt-navigate-finish can fire before document_idle injection on a direct page load, causing the content script to miss the initial navigation event. Add a yt-page-data-updated listener as a fallback; it fires later in the page lifecycle and is caught reliably. The existing href guard prevents double-initialisation if both events fire.

Also extend the initial pathname check to cover /shorts/ in addition to /watch.