Skip to content

Commit de92770

Browse files
authored
fix: eliminate volume spikes on song transitions (#109)
1 parent 0b2519e commit de92770

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

Views/macOS/MiniPlayerWebView.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,17 @@ final class SingletonPlayerWebView {
438438
video.volume = \(savedVolume);
439439
}
440440
441+
// Sync YouTube's internal player APIs to prevent overrides
442+
const ytVolume = Math.round(\(savedVolume) * 100);
443+
const player = document.querySelector('ytmusic-player');
444+
if (player && player.playerApi) {
445+
player.playerApi.setVolume(ytVolume);
446+
}
447+
const moviePlayer = document.getElementById('movie_player');
448+
if (moviePlayer && moviePlayer.setVolume) {
449+
moviePlayer.setVolume(ytVolume);
450+
}
451+
441452
// Clear flag after a moment
442453
setTimeout(() => { window.__kasetIsSettingVolume = false; }, 100);
443454

Views/macOS/SingletonPlayerWebView+ObserverScript.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ extension SingletonPlayerWebView {
5858
5959
video.addEventListener('play', startPolling);
6060
video.addEventListener('playing', startPolling);
61+
// Enforce volume on playing event to catch all track changes
62+
// (auto-advance, SPA navigation, button clicks)
63+
video.addEventListener('playing', () => enforceVolumeNow());
6164
video.addEventListener('pause', stopPolling);
6265
video.addEventListener('ended', stopPolling);
6366
video.addEventListener('waiting', () => sendUpdate()); // Buffer state

0 commit comments

Comments
 (0)