Due to server slowness, downtime, and other issues, guests can no longer search the forum or view user accounts. At some point in the future Eclipse will be moving to a more stable and efficient platform that should result in much better stability and the lifting of these restrictions. There is no timeline for this yet, just want you to know what's happening with all the downtime and I have a plan to fix it.
Today's Pet Peeve
-
The-10-Pen
- Posts: 639
- Joined: 16 Feb 2025, 08:43
- OS: Win10 2016 LTSB
- Has thanked: 9 times
- Been thanked: 101 times

Today's Pet Peeve
Today's Pet Peeve:
LOUD music intended to be "background" music but is so d@mn loud that you have to "raise your voice" to talk to somebody sitting TWO FEET AWAY.
Today's lunch was at Outback Steakhouse.
A place I have avoided in the past ON ACCOUNT OF "loud background music".
Today was actually so PERFECT that I requested the manager to visit our table.
I complimented him on the volume setting of the BACKGROUND music.
He went on to probably tell the whole table more than he was quote-unquote "supposed to".
He's been managing for only a week and informed us that the background music system has TWO settings.
One nice and quiet and soft for the LUNCH (noon) crowd and one a bit louder for EVENING when there are 50/80 people dining instead of 10/20.
And told us that the previous manager was "let go" because she kept it at the EVENING setting ALL THE TIME.
Even the wait staff was complaining that they were getting orders wrong because they couldn't hear over the D@MN "background" music.
LOUD music intended to be "background" music but is so d@mn loud that you have to "raise your voice" to talk to somebody sitting TWO FEET AWAY.
Today's lunch was at Outback Steakhouse.
A place I have avoided in the past ON ACCOUNT OF "loud background music".
Today was actually so PERFECT that I requested the manager to visit our table.
I complimented him on the volume setting of the BACKGROUND music.
He went on to probably tell the whole table more than he was quote-unquote "supposed to".
He's been managing for only a week and informed us that the background music system has TWO settings.
One nice and quiet and soft for the LUNCH (noon) crowd and one a bit louder for EVENING when there are 50/80 people dining instead of 10/20.
And told us that the previous manager was "let go" because she kept it at the EVENING setting ALL THE TIME.
Even the wait staff was complaining that they were getting orders wrong because they couldn't hear over the D@MN "background" music.
-
The-10-Pen
- Posts: 639
- Joined: 16 Feb 2025, 08:43
- OS: Win10 2016 LTSB
- Has thanked: 9 times
- Been thanked: 101 times

-
The-10-Pen
- Posts: 639
- Joined: 16 Feb 2025, 08:43
- OS: Win10 2016 LTSB
- Has thanked: 9 times
- Been thanked: 101 times

Today's Pet Peeve
Today's Outrage -- cookie banner notifications.
What a nuisance!
One of the most annoying "mandates" to ever come out of the EU.
Adopted in 2002, amended in 2009, enacted in 2011/2012.
Enough already! It's 14/15 **YEARS** later and we are still being PUNCHED IN THE FACE by these D@MN *nuisances*!
uBO's filters lists DO NOT block ALL of them !!!
I Still Don't Care About Cookies extension does NOT block ALL of them !!!
Everything I have tried in the past 14/15 years seems to do okay for the most part, but you still encounter these PIECES OF SH#T.
Enough already!
So it's time for a more generic approach and one FULLY controlled and editable by me, no more waiting for uBO filter lists not catching these to be updated but never updated to catch them ALL, no more waiting for extensions to be updated but never updated to catch them ALL.
Working so far!
// ==UserScript==
// @name - Auto Hide Cookie Banners
// @version 1.0.1
// @match *://*/*
// @grant none
// @run-at document-idle
// ==/UserScript==
(function () {
'use strict';
// Common CSS selectors for cookie banners and consent popups
const selectors = [
'[id*="cookie"]',
'[class*="cookie"]',
'[id*="consent"]',
'[class*="consent"]',
'[aria-label*="cookie"]',
'[aria-label*="consent"]',
'div[role="dialog"]'
];
// Try to click reject/decline buttons if found
const rejectButtonTexts = [
'reject', 'decline', 'no thanks', 'opt out', 'refuse'
];
function removeCookieBanners() {
selectors.forEach(sel => {
document.querySelectorAll(sel).forEach(el => {
// Try to find and click reject buttons inside the banner
const btn = Array.from(el.querySelectorAll('button, a'))
.find(b => rejectButtonTexts.some(txt =>
b.textContent.trim().toLowerCase().includes(txt)
));
if (btn) {
btn.click();
console.log('[CookieBlocker] Clicked reject button:', btn.textContent.trim());
}
// Remove the banner from DOM
el.remove();
console.log('[CookieBlocker] Removed element:', sel);
});
});
}
// Run immediately and also observe for dynamically loaded banners
removeCookieBanners();
const observer = new MutationObserver(removeCookieBanners);
observer.observe(document.body, { childList: true, subtree: true });
})();
What a nuisance!
One of the most annoying "mandates" to ever come out of the EU.
Adopted in 2002, amended in 2009, enacted in 2011/2012.
Enough already! It's 14/15 **YEARS** later and we are still being PUNCHED IN THE FACE by these D@MN *nuisances*!
uBO's filters lists DO NOT block ALL of them !!!
I Still Don't Care About Cookies extension does NOT block ALL of them !!!
Everything I have tried in the past 14/15 years seems to do okay for the most part, but you still encounter these PIECES OF SH#T.
Enough already!
So it's time for a more generic approach and one FULLY controlled and editable by me, no more waiting for uBO filter lists not catching these to be updated but never updated to catch them ALL, no more waiting for extensions to be updated but never updated to catch them ALL.
Working so far!
// ==UserScript==
// @name - Auto Hide Cookie Banners
// @version 1.0.1
// @match *://*/*
// @grant none
// @run-at document-idle
// ==/UserScript==
(function () {
'use strict';
// Common CSS selectors for cookie banners and consent popups
const selectors = [
'[id*="cookie"]',
'[class*="cookie"]',
'[id*="consent"]',
'[class*="consent"]',
'[aria-label*="cookie"]',
'[aria-label*="consent"]',
'div[role="dialog"]'
];
// Try to click reject/decline buttons if found
const rejectButtonTexts = [
'reject', 'decline', 'no thanks', 'opt out', 'refuse'
];
function removeCookieBanners() {
selectors.forEach(sel => {
document.querySelectorAll(sel).forEach(el => {
// Try to find and click reject buttons inside the banner
const btn = Array.from(el.querySelectorAll('button, a'))
.find(b => rejectButtonTexts.some(txt =>
b.textContent.trim().toLowerCase().includes(txt)
));
if (btn) {
btn.click();
console.log('[CookieBlocker] Clicked reject button:', btn.textContent.trim());
}
// Remove the banner from DOM
el.remove();
console.log('[CookieBlocker] Removed element:', sel);
});
});
}
// Run immediately and also observe for dynamically loaded banners
removeCookieBanners();
const observer = new MutationObserver(removeCookieBanners);
observer.observe(document.body, { childList: true, subtree: true });
})();
- Duke
- Full Moderator
- Posts: 761
- Joined: 16 Mar 2024, 13:32
- OS: Windows 8.1 x64
- Has thanked: 113 times
- Been thanked: 228 times
Today's Pet Peeve
In Firefox and forks (R3dfox, LibreWolf, etc) you can set:
Automatically refuse cookie banners disabled:
cookiebanners.service.mode = 0
cookiebanners.service.mode.privateBrowsing = 0
Automatically refuse cookie banners set to reject all:
cookiebanners.service.mode = 1
cookiebanners.service.mode.privateBrowsing = 1
A value of 2 means reject all or fallback to accept all. This is stupid, don't use 2.
-
The-10-Pen
- Posts: 639
- Joined: 16 Feb 2025, 08:43
- OS: Win10 2016 LTSB
- Has thanked: 9 times
- Been thanked: 101 times

Today's Pet Peeve
Agreed.
But as you already know, that is not enough for me to revert to Firefox and forks.
I *do* still hope that day will arrive, but it's simply not here yet.
But as you already know, that is not enough for me to revert to Firefox and forks.
I *do* still hope that day will arrive, but it's simply not here yet.
-
The-10-Pen
- Posts: 639
- Joined: 16 Feb 2025, 08:43
- OS: Win10 2016 LTSB
- Has thanked: 9 times
- Been thanked: 101 times

Today's Pet Peeve
Okay @Duke, how 'bout this one?
Pluto TV is a free streaming site that often times has an issue with the audio and video falling out of sync.
Here: https://pluto.tv/us/live-tv
ie, the lip movement no longer matches the timing of the speech.
One fix is to wait for a commercial break, switch to a different channel, then switch back so that everything is back in sync.
My long-term fix has become the below userscript.
It synchronizes the audio and video every two seconds and accounts for any dropped frames.
ie, by adjusting video playback speed so slightly that "humans" can't even detect the difference.
Basically think of "negative feedback" systems where the system "tunes itself" by speeding up or slowing down.
// ==UserScript==
// @name - Add Pluto TV Advanced A/V Sync Fix
// @version 2.0.1
// @match *://pluto.tv/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
// Configurable settings
const CHECK_INTERVAL_MS = 2000; // How often to check sync
const MAX_ALLOWED_DRIFT = 0.3; // Seconds before correction
const RATE_ADJUST_STEP = 0.02; // Small rate change for smooth correction
const MAX_RATE = 1.05; // Max playback rate allowed
const MIN_RATE = 0.95; // Min playback rate allowed
function findVideoElement() {
return document.querySelector('video');
}
function syncCheck() {
const video = findVideoElement();
if (!video || video.readyState < 2 || video.paused) return;
try {
// Drift detection
const now = performance.now();
if (!video._lastCheck) {
video._lastCheck = now;
video._lastTime = video.currentTime;
video._lastDropped = 0;
return;
}
const elapsedReal = (now - video._lastCheck) / 1000; // seconds
const elapsedVideo = video.currentTime - video._lastTime;
const drift = elapsedVideo - elapsedReal;
// Dropped frame detection (if supported)
let droppedFrames = 0;
if (typeof video.getVideoPlaybackQuality === 'function') {
const quality = video.getVideoPlaybackQuality();
droppedFrames = quality.droppedVideoFrames || 0;
}
const droppedSinceLast = droppedFrames - (video._lastDropped || 0);
// Log for debugging
console.log(`[PlutoTV Sync] Drift: ${drift.toFixed(3)}s, Dropped: ${droppedSinceLast}`);
// Correction logic
if (Math.abs(drift) > MAX_ALLOWED_DRIFT) {
// Large drift — jump to correct
console.warn(`[PlutoTV Sync] Large drift detected (${drift.toFixed(3)}s) — seeking`);
video.currentTime -= drift; // Jump back/forward
video.playbackRate = 1;
} else if (Math.abs(drift) > 0.05 || droppedSinceLast > 5) {
// Small drift or frame loss — adjust rate
if (drift > 0) {
// Video ahead of real time — slow down
video.playbackRate = Math.max(MIN_RATE, video.playbackRate - RATE_ADJUST_STEP);
} else {
// Video behind — speed up
video.playbackRate = Math.min(MAX_RATE, video.playbackRate + RATE_ADJUST_STEP);
}
} else {
// In sync — reset rate
if (video.playbackRate !== 1) {
video.playbackRate = 1;
}
}
// Save state for next check
video._lastCheck = now;
video._lastTime = video.currentTime;
video._lastDropped = droppedFrames;
} catch (err) {
console.error('[PlutoTV Sync] Error:', err);
}
}
// Wait for video to appear, then start checking
const observer = new MutationObserver(() => {
if (findVideoElement()) {
console.log('[PlutoTV Sync] Video element found — starting advanced sync checks');
clearInterval(window._plutoSyncInterval);
window._plutoSyncInterval = setInterval(syncCheck, CHECK_INTERVAL_MS);
observer.disconnect();
}
});
observer.observe(document.body, { childList: true, subtree: true });
})();
Pluto TV is a free streaming site that often times has an issue with the audio and video falling out of sync.
Here: https://pluto.tv/us/live-tv
ie, the lip movement no longer matches the timing of the speech.
One fix is to wait for a commercial break, switch to a different channel, then switch back so that everything is back in sync.
My long-term fix has become the below userscript.
It synchronizes the audio and video every two seconds and accounts for any dropped frames.
ie, by adjusting video playback speed so slightly that "humans" can't even detect the difference.
Basically think of "negative feedback" systems where the system "tunes itself" by speeding up or slowing down.
// ==UserScript==
// @name - Add Pluto TV Advanced A/V Sync Fix
// @version 2.0.1
// @match *://pluto.tv/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
// Configurable settings
const CHECK_INTERVAL_MS = 2000; // How often to check sync
const MAX_ALLOWED_DRIFT = 0.3; // Seconds before correction
const RATE_ADJUST_STEP = 0.02; // Small rate change for smooth correction
const MAX_RATE = 1.05; // Max playback rate allowed
const MIN_RATE = 0.95; // Min playback rate allowed
function findVideoElement() {
return document.querySelector('video');
}
function syncCheck() {
const video = findVideoElement();
if (!video || video.readyState < 2 || video.paused) return;
try {
// Drift detection
const now = performance.now();
if (!video._lastCheck) {
video._lastCheck = now;
video._lastTime = video.currentTime;
video._lastDropped = 0;
return;
}
const elapsedReal = (now - video._lastCheck) / 1000; // seconds
const elapsedVideo = video.currentTime - video._lastTime;
const drift = elapsedVideo - elapsedReal;
// Dropped frame detection (if supported)
let droppedFrames = 0;
if (typeof video.getVideoPlaybackQuality === 'function') {
const quality = video.getVideoPlaybackQuality();
droppedFrames = quality.droppedVideoFrames || 0;
}
const droppedSinceLast = droppedFrames - (video._lastDropped || 0);
// Log for debugging
console.log(`[PlutoTV Sync] Drift: ${drift.toFixed(3)}s, Dropped: ${droppedSinceLast}`);
// Correction logic
if (Math.abs(drift) > MAX_ALLOWED_DRIFT) {
// Large drift — jump to correct
console.warn(`[PlutoTV Sync] Large drift detected (${drift.toFixed(3)}s) — seeking`);
video.currentTime -= drift; // Jump back/forward
video.playbackRate = 1;
} else if (Math.abs(drift) > 0.05 || droppedSinceLast > 5) {
// Small drift or frame loss — adjust rate
if (drift > 0) {
// Video ahead of real time — slow down
video.playbackRate = Math.max(MIN_RATE, video.playbackRate - RATE_ADJUST_STEP);
} else {
// Video behind — speed up
video.playbackRate = Math.min(MAX_RATE, video.playbackRate + RATE_ADJUST_STEP);
}
} else {
// In sync — reset rate
if (video.playbackRate !== 1) {
video.playbackRate = 1;
}
}
// Save state for next check
video._lastCheck = now;
video._lastTime = video.currentTime;
video._lastDropped = droppedFrames;
} catch (err) {
console.error('[PlutoTV Sync] Error:', err);
}
}
// Wait for video to appear, then start checking
const observer = new MutationObserver(() => {
if (findVideoElement()) {
console.log('[PlutoTV Sync] Video element found — starting advanced sync checks');
clearInterval(window._plutoSyncInterval);
window._plutoSyncInterval = setInterval(syncCheck, CHECK_INTERVAL_MS);
observer.disconnect();
}
});
observer.observe(document.body, { childList: true, subtree: true });
})();
- Duke
- Full Moderator
- Posts: 761
- Joined: 16 Mar 2024, 13:32
- OS: Windows 8.1 x64
- Has thanked: 113 times
- Been thanked: 228 times
Today's Pet Peeve
I'm not using Pluto TV a lot but when I do I'm not experiencing audio/video sync issues.The-10-Pen wrote: ↑20 Jul 2026, 14:44 Okay @Duke, how 'bout this one?
Pluto TV is a free streaming site that often times has an issue with the audio and video falling out of sync.
- xperceniol_sal
- Posts: 643
- Joined: 03 Jan 2023, 19:32
- OS: XP_86
- Has thanked: 417 times
- Been thanked: 130 times
Today's Pet Peeve
I'm on Pluto TV now without any issues at all with Lun3r and Hydra!
"I wish I could tell you it gets better. It doesn't get better. YOU get better." -Joan Rivers
-
The-10-Pen
- Posts: 639
- Joined: 16 Feb 2025, 08:43
- OS: Win10 2016 LTSB
- Has thanked: 9 times
- Been thanked: 101 times

Today's Pet Peeve
The sync issues only occur if you do not change the channel for SIX HOURS.
Keep it on the same exact channel and watch non-stop for SIX HOURS.
Some channels will unsync if watched non-stop long enough.
I can't say that they "all" do.
Keep it on the same exact channel and watch non-stop for SIX HOURS.
Some channels will unsync if watched non-stop long enough.
I can't say that they "all" do.
Last edited by The-10-Pen on 20 Jul 2026, 23:05, edited 1 time in total.
-
The-10-Pen
- Posts: 639
- Joined: 16 Feb 2025, 08:43
- OS: Win10 2016 LTSB
- Has thanked: 9 times
- Been thanked: 101 times

Today's Pet Peeve
Although, granted, is it unsyncing for me at SIX HOURS ?
Or is it unyncing for me because I have THREE PLUS streams all going simultaneously ?
Regardless, my userscripts KEEPS EVERYTHING IN SYNC

Or is it unyncing for me because I have THREE PLUS streams all going simultaneously ?
Regardless, my userscripts KEEPS EVERYTHING IN SYNC
- Duke
- Full Moderator
- Posts: 761
- Joined: 16 Mar 2024, 13:32
- OS: Windows 8.1 x64
- Has thanked: 113 times
- Been thanked: 228 times
Today's Pet Peeve
I guess soThe-10-Pen wrote: ↑20 Jul 2026, 23:04 Or is it unyncing for me because I have THREE PLUS streams all going simultaneously ?
-
The-10-Pen
- Posts: 639
- Joined: 16 Feb 2025, 08:43
- OS: Win10 2016 LTSB
- Has thanked: 9 times
- Been thanked: 101 times

Today's Pet Peeve
Upon further compare/contrast, the unsync issue is only occurring on ONE of my many computers.
And it occurs in both Chrome-based *AND* in Mozilla-based.
This is also one of my last two computers still on Win10 *2016* despite 2019 or 21H2 being used on all other computers with *VAST IMPROVEMENTS*.
This one is set to be upgraded soon.
It's a Dell Latitude E5470 laptop with an Intel i5-6300U @ 2.4GHz with 8GB RAM.
Don't recall graphics card offhand.
And it occurs in both Chrome-based *AND* in Mozilla-based.
This is also one of my last two computers still on Win10 *2016* despite 2019 or 21H2 being used on all other computers with *VAST IMPROVEMENTS*.
This one is set to be upgraded soon.
It's a Dell Latitude E5470 laptop with an Intel i5-6300U @ 2.4GHz with 8GB RAM.
Don't recall graphics card offhand.
-
The-10-Pen
- Posts: 639
- Joined: 16 Feb 2025, 08:43
- OS: Win10 2016 LTSB
- Has thanked: 9 times
- Been thanked: 101 times

Today's Pet Peeve
This one has become a GODSEND for a totally different reason.The-10-Pen wrote: ↑19 Jul 2026, 10:24 Today's Outrage -- cookie banner notifications.
// ==UserScript==
// @name - Auto Hide Cookie Banners
I am now using it to block all of the d@mn "AI" popups/banners/mogals/modules/chatbots that keep showing up at every turn on the internet.
-
The-10-Pen
- Posts: 639
- Joined: 16 Feb 2025, 08:43
- OS: Win10 2016 LTSB
- Has thanked: 9 times
- Been thanked: 101 times

Today's Pet Peeve
Additional finding.The-10-Pen wrote: ↑21 Jul 2026, 07:04 Upon further compare/contrast, the unsync issue is only occurring on ONE of my many computers.
And it occurs in both Chrome-based *AND* in Mozilla-based.
It only unsyncs when MUTED for 1/2hr to an hour at a time and then only after five or six of those long-duration mutings.
Each muting seems to unsync a tiny teany bit and they add up over time.