Skip to content

Script resources requesting blocks entire extension #894

Description

@ACTCD

Like my latest comment on this old issue:

The update check effectively prevents the entire extension from functioning properly, including loading/responsiveness of other extension interfaces, and all script injection processes etc.

In other words, if there is difficulty in obtaining resources due to any network issues, the entire extension will be suspended and will not work before the 30 second hard timeout, and no scripts will be injected into the page during this time.

This can be a serious and frustrating problem for users. And recently some users also reported this in the App Store Review.

In fact, after the above comment were post, I have begun to investigate and redesign the native messaging framework in the back-end reconstruction, eliminating blocking and make heavy tasks asynchronous, in order to completely solve related issues. But it still takes time.

Before the release of v5.0, we should try to improve the user experience of version 4.x.x.

My opinion is to temporarily disable automatic script update checking in v4.x.x. Although users will still encounter the issue when checking manually, at least this is an effective mitigation measure for most daily use scenarios.

In fact, v5.0 beta has already disabled automatic checking by default and has a related interval setting, but users cannot easily do this in v4.x.x.

@quoid What do you think?

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingmaintenanceChores and refactoring

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
     blocks
    (function() {
    function addCopyButtons() {
    document.querySelectorAll('pre code').forEach(function(codeBlock) {
    if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
    codeBlock.parentElement.setAttribute('data-copy-added', 'true');
    var btn = document.createElement('button');
    btn.textContent = 'Copy';
    btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
    btn.onmouseover = function() { this.style.opacity = '1'; };
    btn.onmouseout = function() { this.style.opacity = '0.7'; };
    btn.onclick = function() {
    navigator.clipboard.writeText(codeBlock.textContent).then(function() {
    btn.textContent = 'Copied!';
    setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
    });
    };
    codeBlock.parentElement.style.position = 'relative';
    codeBlock.parentElement.appendChild(btn);
    });
    }
    addCopyButtons();
    // Re-run on dynamic content
    var observer = new MutationObserver(addCopyButtons);
    observer.observe(document.body, { childList: true, subtree: true });
    })();
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    Script resources requesting blocks entire extension · Issue #894 · quoid/userscripts · GitHub
    Skip to content

    Script resources requesting blocks entire extension #894

    Description

    @ACTCD

    Like my latest comment on this old issue:

    The update check effectively prevents the entire extension from functioning properly, including loading/responsiveness of other extension interfaces, and all script injection processes etc.

    In other words, if there is difficulty in obtaining resources due to any network issues, the entire extension will be suspended and will not work before the 30 second hard timeout, and no scripts will be injected into the page during this time.

    This can be a serious and frustrating problem for users. And recently some users also reported this in the App Store Review.

    In fact, after the above comment were post, I have begun to investigate and redesign the native messaging framework in the back-end reconstruction, eliminating blocking and make heavy tasks asynchronous, in order to completely solve related issues. But it still takes time.

    Before the release of v5.0, we should try to improve the user experience of version 4.x.x.

    My opinion is to temporarily disable automatic script update checking in v4.x.x. Although users will still encounter the issue when checking manually, at least this is an effective mitigation measure for most daily use scenarios.

    In fact, v5.0 beta has already disabled automatic checking by default and has a related interval setting, but users cannot easily do this in v4.x.x.

    @quoid What do you think?

    Metadata

    Metadata

    Assignees

    Labels

    bugSomething isn't workingmaintenanceChores and refactoring

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Script resources requesting blocks entire extension · Issue #894 · quoid/userscripts · GitHub
      Skip to content

      Script resources requesting blocks entire extension #894

      Description

      @ACTCD

      Like my latest comment on this old issue:

      The update check effectively prevents the entire extension from functioning properly, including loading/responsiveness of other extension interfaces, and all script injection processes etc.

      In other words, if there is difficulty in obtaining resources due to any network issues, the entire extension will be suspended and will not work before the 30 second hard timeout, and no scripts will be injected into the page during this time.

      This can be a serious and frustrating problem for users. And recently some users also reported this in the App Store Review.

      In fact, after the above comment were post, I have begun to investigate and redesign the native messaging framework in the back-end reconstruction, eliminating blocking and make heavy tasks asynchronous, in order to completely solve related issues. But it still takes time.

      Before the release of v5.0, we should try to improve the user experience of version 4.x.x.

      My opinion is to temporarily disable automatic script update checking in v4.x.x. Although users will still encounter the issue when checking manually, at least this is an effective mitigation measure for most daily use scenarios.

      In fact, v5.0 beta has already disabled automatic checking by default and has a related interval setting, but users cannot easily do this in v4.x.x.

      @quoid What do you think?

      Metadata

      Metadata

      Assignees

      Labels

      bugSomething isn't workingmaintenanceChores and refactoring

      Projects

      No projects

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Script resources requesting blocks entire extension · Issue #894 · quoid/userscripts · GitHub
        Skip to content

        Script resources requesting blocks entire extension #894

        Description

        @ACTCD

        Like my latest comment on this old issue:

        The update check effectively prevents the entire extension from functioning properly, including loading/responsiveness of other extension interfaces, and all script injection processes etc.

        In other words, if there is difficulty in obtaining resources due to any network issues, the entire extension will be suspended and will not work before the 30 second hard timeout, and no scripts will be injected into the page during this time.

        This can be a serious and frustrating problem for users. And recently some users also reported this in the App Store Review.

        In fact, after the above comment were post, I have begun to investigate and redesign the native messaging framework in the back-end reconstruction, eliminating blocking and make heavy tasks asynchronous, in order to completely solve related issues. But it still takes time.

        Before the release of v5.0, we should try to improve the user experience of version 4.x.x.

        My opinion is to temporarily disable automatic script update checking in v4.x.x. Although users will still encounter the issue when checking manually, at least this is an effective mitigation measure for most daily use scenarios.

        In fact, v5.0 beta has already disabled automatic checking by default and has a related interval setting, but users cannot easily do this in v4.x.x.

        @quoid What do you think?

        Metadata

        Metadata

        Assignees

        Labels

        bugSomething isn't workingmaintenanceChores and refactoring

        Projects

        No projects

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Script resources requesting blocks entire extension · Issue #894 · quoid/userscripts · GitHub
          Skip to content

          Script resources requesting blocks entire extension #894

          Description

          @ACTCD

          Like my latest comment on this old issue:

          The update check effectively prevents the entire extension from functioning properly, including loading/responsiveness of other extension interfaces, and all script injection processes etc.

          In other words, if there is difficulty in obtaining resources due to any network issues, the entire extension will be suspended and will not work before the 30 second hard timeout, and no scripts will be injected into the page during this time.

          This can be a serious and frustrating problem for users. And recently some users also reported this in the App Store Review.

          In fact, after the above comment were post, I have begun to investigate and redesign the native messaging framework in the back-end reconstruction, eliminating blocking and make heavy tasks asynchronous, in order to completely solve related issues. But it still takes time.

          Before the release of v5.0, we should try to improve the user experience of version 4.x.x.

          My opinion is to temporarily disable automatic script update checking in v4.x.x. Although users will still encounter the issue when checking manually, at least this is an effective mitigation measure for most daily use scenarios.

          In fact, v5.0 beta has already disabled automatic checking by default and has a related interval setting, but users cannot easily do this in v4.x.x.

          @quoid What do you think?

          Metadata

          Metadata

          Assignees

          Labels

          bugSomething isn't workingmaintenanceChores and refactoring

          Projects

          No projects

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Script resources requesting blocks entire extension · Issue #894 · quoid/userscripts · GitHub
            Skip to content

            Script resources requesting blocks entire extension #894

            Description

            @ACTCD

            Like my latest comment on this old issue:

            The update check effectively prevents the entire extension from functioning properly, including loading/responsiveness of other extension interfaces, and all script injection processes etc.

            In other words, if there is difficulty in obtaining resources due to any network issues, the entire extension will be suspended and will not work before the 30 second hard timeout, and no scripts will be injected into the page during this time.

            This can be a serious and frustrating problem for users. And recently some users also reported this in the App Store Review.

            In fact, after the above comment were post, I have begun to investigate and redesign the native messaging framework in the back-end reconstruction, eliminating blocking and make heavy tasks asynchronous, in order to completely solve related issues. But it still takes time.

            Before the release of v5.0, we should try to improve the user experience of version 4.x.x.

            My opinion is to temporarily disable automatic script update checking in v4.x.x. Although users will still encounter the issue when checking manually, at least this is an effective mitigation measure for most daily use scenarios.

            In fact, v5.0 beta has already disabled automatic checking by default and has a related interval setting, but users cannot easily do this in v4.x.x.

            @quoid What do you think?

            Metadata

            Metadata

            Assignees

            Labels

            bugSomething isn't workingmaintenanceChores and refactoring

            Projects

            No projects

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Script resources requesting blocks entire extension · Issue #894 · quoid/userscripts · GitHub
              Skip to content

              Script resources requesting blocks entire extension #894

              Description

              @ACTCD

              Like my latest comment on this old issue:

              The update check effectively prevents the entire extension from functioning properly, including loading/responsiveness of other extension interfaces, and all script injection processes etc.

              In other words, if there is difficulty in obtaining resources due to any network issues, the entire extension will be suspended and will not work before the 30 second hard timeout, and no scripts will be injected into the page during this time.

              This can be a serious and frustrating problem for users. And recently some users also reported this in the App Store Review.

              In fact, after the above comment were post, I have begun to investigate and redesign the native messaging framework in the back-end reconstruction, eliminating blocking and make heavy tasks asynchronous, in order to completely solve related issues. But it still takes time.

              Before the release of v5.0, we should try to improve the user experience of version 4.x.x.

              My opinion is to temporarily disable automatic script update checking in v4.x.x. Although users will still encounter the issue when checking manually, at least this is an effective mitigation measure for most daily use scenarios.

              In fact, v5.0 beta has already disabled automatic checking by default and has a related interval setting, but users cannot easily do this in v4.x.x.

              @quoid What do you think?

              Metadata

              Metadata

              Assignees

              Labels

              bugSomething isn't workingmaintenanceChores and refactoring

              Projects

              No projects

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Script resources requesting blocks entire extension · Issue #894 · quoid/userscripts · GitHub
                Skip to content

                Script resources requesting blocks entire extension #894

                Description

                @ACTCD

                Like my latest comment on this old issue:

                The update check effectively prevents the entire extension from functioning properly, including loading/responsiveness of other extension interfaces, and all script injection processes etc.

                In other words, if there is difficulty in obtaining resources due to any network issues, the entire extension will be suspended and will not work before the 30 second hard timeout, and no scripts will be injected into the page during this time.

                This can be a serious and frustrating problem for users. And recently some users also reported this in the App Store Review.

                In fact, after the above comment were post, I have begun to investigate and redesign the native messaging framework in the back-end reconstruction, eliminating blocking and make heavy tasks asynchronous, in order to completely solve related issues. But it still takes time.

                Before the release of v5.0, we should try to improve the user experience of version 4.x.x.

                My opinion is to temporarily disable automatic script update checking in v4.x.x. Although users will still encounter the issue when checking manually, at least this is an effective mitigation measure for most daily use scenarios.

                In fact, v5.0 beta has already disabled automatic checking by default and has a related interval setting, but users cannot easily do this in v4.x.x.

                @quoid What do you think?

                Metadata

                Metadata

                Assignees

                Labels

                bugSomething isn't workingmaintenanceChores and refactoring

                Projects

                No projects

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions