fix: isInNonChatArea too aggressive — blocking reveal on chat content

The class-based selectors ([class*="header"], [class*="Header"],
[class*="nav-"], etc.) were matching Claude.ai's chat content area
elements, preventing reveal from running on any response text.

Narrowed to only structural elements: nav, aside, [role="navigation"],
[role="complementary"], [data-sidebar]. Removed HEADER/FOOTER from
SKIP_REVEAL_TAGS since sites use these tags inside chat layouts.

https://claude.ai/code/session_01KF4i7Ra7zCEDskxDBaNtcT
This commit is contained in:
Claude
2026-03-29 17:50:25 +00:00
parent 433e5a7736
commit fe684047a8
5 changed files with 7 additions and 7 deletions
+3 -3
View File
@@ -1629,13 +1629,13 @@
// Elements to skip when revealing (inputs, scripts, styles, extension UI)
const SKIP_REVEAL_TAGS = new Set([
'SCRIPT', 'STYLE', 'NOSCRIPT', 'IFRAME', 'INPUT', 'TEXTAREA', 'SELECT',
'NAV', 'ASIDE', 'HEADER', 'FOOTER',
]);
// Skip reveal in navigation, sidebars, headers, and other non-chat UI
// Skip reveal in navigation and sidebars — but NOT broadly by class name,
// as sites like Claude.ai use "header" in class names for chat content areas
function isInNonChatArea(el) {
if (!el) return false;
return !!el.closest('nav, aside, header, footer, [role="navigation"], [role="banner"], [role="complementary"], [data-sidebar], [class*="sidebar"], [class*="Sidebar"], [class*="nav-"], [class*="Nav"], [class*="menu"], [class*="Menu"], [class*="header"], [class*="Header"]');
return !!el.closest('nav, aside, [role="navigation"], [role="complementary"], [data-sidebar]');
}
// Reveal ALL text on the page + apply highlights