Skip to content

Releases: AndyP2/yt-levelr

v1.3.5

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.

v1.3.4

Choose a tag to compare

@github-actions github-actions released this 24 May 17:20

fixed issue with popup not finding the current window on firefox
Full Changelog: v1.3.3...v1.3.4

v1.3.3

Choose a tag to compare

@github-actions github-actions released this 19 May 12:15

Full Changelog: v1.3.2...v1.3.3

v1.3.2

Choose a tag to compare

@github-actions github-actions released this 18 May 00:32

analyse the input of the gain adjustment stage, not the output, to avoid applying the correction twice

Full Changelog: v1.3.1...v1.3.2

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 16 May 23:09

Full Changelog: v1.3.0...v1.3.1

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 16 May 22:40

This release changes the strategy to gradually increase the permitted adjustment range as confidence builds, instead of doing it in steps.
Gain limits start narrow and widen linearly until full adjustment range is available at 30s, allowing the algorithm to make small initial corrections before committing to its final decision.
Full Changelog: v1.2.2...v1.3.0

v1.2.2

Choose a tag to compare

@github-actions github-actions released this 13 May 03:33

Full Changelog: v1.2.1...v1.2.2

v1.2.1

Choose a tag to compare

@github-actions github-actions released this 13 May 03:12

Full Changelog: v1.2.0...v1.2.1

v1.2.0

Choose a tag to compare

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

Now works for Chrome as well as Firefox

Full Changelog: v1.1.2...v1.2.0

v1.1.2

Choose a tag to compare

@github-actions github-actions released this 10 May 23:47

This release makes the gain calculation and display independent of the volume control, and treats mute or <5% volume as paused.
Some error handling and logging added, and polling reduced to ease load on the system.

Full Changelog: v1.1.1...v1.1.2