diff --git a/public/s/css/f0ckm.css b/public/s/css/f0ckm.css index 677dd6f..83da45d 100644 --- a/public/s/css/f0ckm.css +++ b/public/s/css/f0ckm.css @@ -3732,8 +3732,8 @@ html[theme='f0ck95d'] { html[theme="f0ck95d"] .item_title { background: black; - border-left: inset 2px silver; - border-right: outset 2px silver; + border-left: inset 3px silver; + border-right: outset 3px silver; } html[theme="f0ck95d"] .err { @@ -3816,11 +3816,6 @@ html[theme="f0ck95d"] .metadata { color: var(--accent); } -html[theme="f0ck95d"] .media-object { - border-left: inset 1px silver; - border-right: outset 1px silver; -} - html[theme="f0ck95d"] span.placeholder { border-left: 1px solid var(--gray); opacity: 0.5; diff --git a/public/s/js/sidebar-activity.js b/public/s/js/sidebar-activity.js index 07e9812..4d19284 100644 --- a/public/s/js/sidebar-activity.js +++ b/public/s/js/sidebar-activity.js @@ -546,10 +546,12 @@ const isExpanded = container.classList.contains('expanded'); const scrollHeight = inner.scrollHeight; const clientHeight = inner.clientHeight; - // Check for images that haven't finished loading yet — their height is 0, - // which makes content appear shorter than it will actually be after load. - const hasUnloadedImages = Array.from(inner.querySelectorAll('img:not(.emoji)')).some( - img => !img.complete || img.naturalHeight === 0 + const hasUnloadedImages = Array.from(inner.querySelectorAll('img:not(.emoji), video')).some( + media => { + if (media.tagName === 'IMG') return !media.complete; + if (media.tagName === 'VIDEO') return media.readyState < 1; // HAVE_METADATA + return false; + } ); results.push({ @@ -599,8 +601,16 @@ const inner = media.closest('.comment-content-inner'); if (inner) { - media.addEventListener('load', () => checkOverflow(inner), { once: true }); - media.addEventListener('loadedmetadata', () => checkOverflow(inner), { once: true }); + const handler = () => checkOverflow(inner); + media.addEventListener('load', handler, { once: true }); + media.addEventListener('error', handler, { once: true }); + media.addEventListener('loadedmetadata', handler, { once: true }); + + // Also use ResizeObserver to catch layout changes (e.g. cached image layout deferred) + if (window.ResizeObserver) { + const ro = new ResizeObserver(() => checkOverflow(inner)); + ro.observe(media); + } } }); };