Lịch sử phiên bản Simple Sound Control - 2 phiên bản
Simple Sound Control bởi nrek
Lịch sử phiên bản Simple Sound Control - 2 phiên bản
Hãy cẩn thận với các phiên bản cũ! Các phiên bản này được hiển thị cho mục đích thử nghiệm và tham khảo.Bạn luôn luôn phải sử dụng phiên bản mới nhất của một tiện ích.
Phiên bản mới nhất
Phiên bản 0.2.3
Đã phát hành 12 Thg 05 2026 - 168,06 KBHoạt động với firefox 140.0 và lớn hơnFixed
Reddit (and other no-CORS MSE players) no longer go silent at non-100% SSC. Reddit's video element loads media via MSE (blob: URL) without crossorigin="anonymous". Per the Web Audio spec, calling createMediaElementSource on a cross-origin element that hasn't opted into CORS taints the source — the call succeeds but the node outputs silence for the rest of the element's life. The content script now gates Web Audio routing on a canRouteViaWebAudio(el) check: elements that would taint (cross-origin without crossorigin, or blob: / data: URLs without crossorigin) skip createMediaElementSource entirely and run on the el.volume fallback path with the existing volumechange enforcer. YouTube (crossorigin="anonymous" set) is unaffected and still uses the gain-node path. Audio is audible and attenuated at SSC < 100% on Reddit instead of vanishing.
InvalidStateError from createMediaElementSource falls back to el.volume instead of going inert. Previously, if the page's own player attached its MediaElementSource to a media element before SSC (Chrome throws InvalidStateError on the second attach for the same element), SSC marked the element routeFailed and gave up — the slider became a no-op for that element. Now we promote the element into the volume-fallback path on InvalidStateError, so SSC still attenuates against page-driven el.volume writes via the enforcer.
Fallback elements are no longer pinned at SSC's last attenuation when SSC returns to 100%. Previously, applyVolumeFallback short-circuited at 100% — so an element that had el.volume = 0.2 written for SSC=20% stayed at 0.2 until the page next wrote the property (which, on Reddit, only happens if the user moves Reddit's own slider). The content script now snapshots el.volume on entry to the fallback path and refreshes the snapshot whenever the enforcer detects a page-driven write. On the SSC → 100% transition (and on passthrough entry — see below) we write the snapshot back, so the element ends up at the page's most recent intent rather than at SSC's last value.
Tab Capture mode no longer double-attenuates fallback-path elements. Previously, engaging Tab Capture while SSC was non-100% on a fallback site (Reddit, Meet, etc.) left a residual el.volume = SSC% written by the content script; the captured stream was then re-attenuated by the offscreen GainNode, so 0.2 × offscreen_gain came out instead of the user-set level. Entering passthrough now releases each fallback element's el.volume back to its snapshot before the offscreen chain takes over, restoring the documented Tab Capture composition (page_intent × offscreen_gain) regardless of whether the element was routed via Web Audio or via the fallback path. The enforcer continues to record page-driven el.volume writes during passthrough (without re-asserting) so per-participant volume changes in Meet etc. are captured for the next release.Mã nguồn được phát hành dưới dạng Giấy phép MIT
Phiên bản cũ hơn
Phiên bản 0.2.0
Đã phát hành 1 Thg 05 2026 - 163,99 KBHoạt động với firefox 140.0 và lớn hơntap into GainNode rather than volume adjustments to help mute or louden; rather than attempt to set the volume for the tab directly (philosophical adjustment, functionally better)Mã nguồn được phát hành dưới dạng Giấy phép MIT