Azure DevOps Archive Highlighter v1.0.0

← Back to User Scripts

Script Content

// ==UserScript==
// @name         Azure DevOps: Archive Highlighter
// @namespace    https://www.timhilton.xyz/user-scripts
// @version      1.0.0
// @description  Highlight "ARCHIVE - DO NOT USE" wiki in search results
// @author       Tim Hilton using Claude
// @match        https://dev.azure.com/*/_search*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Function to highlight archive spans
    function highlightArchiveSpans() {
        document.querySelectorAll('.project-and-wiki span').forEach(span => {
            if (span.textContent.trim() === 'ARCHIVE - DO NOT USE') {
                span.style.border = '3px solid red';
            }
        });
    }

    // Initial highlight
    highlightArchiveSpans();

    // Set up mutation observer
    const targetNode = document.querySelector('.search-view-container');

    if (targetNode) {
        const observer = new MutationObserver((mutations) => {
            highlightArchiveSpans();
        });

        observer.observe(targetNode, {
            childList: true,
            subtree: true
        });

        console.log('Archive highlighter: Observer attached');
    } else {
        // If container isn't found immediately, wait for it
        const containerObserver = new MutationObserver((mutations) => {
            const container = document.querySelector('.search-view-container');
            if (container) {
                const observer = new MutationObserver(() => {
                    highlightArchiveSpans();
                });

                observer.observe(container, {
                    childList: true,
                    subtree: true
                });

                containerObserver.disconnect();
                console.log('Archive highlighter: Observer attached (delayed)');
            }
        });

        containerObserver.observe(document.body, {
            childList: true,
            subtree: true
        });
    }
})();