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.