PR page improvements

many things for github PRs

// ==UserScript==
// @name         PR page improvements
// @namespace    http://tampermonkey.net/
// @version      1.7
// @description  many things for github PRs
// @author       Louis Yvelin
// @match        https://github.com/ebuzzing/*/pull/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    //// === SET YOU USERNAME HERE
    const USERNAME = 'github-louis-yvelin' // <=== SET YOU USERNAME HERE
    //// === SET YOU USERNAME HERE

    let lastUrl = location.href;
    // Create a MutationObserver to monitor the DOM for changes
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            if (mutation.addedNodes.length > 0) {
                // Check if any of the added nodes contain the elements we are interested in


                // --------
                // -------- PR jobs no scroll, infinite height
                // --------
                // Add style to the document
                // const style = document.createElement('style');
                // style.textContent = '.MergeBoxExpandable-module__expandableContent--F8GC8 MergeBoxExpandable-module__isExpanded--Le972 { max-height: 1000dvh !important; }';
                // document.head.appendChild(style);
                Array.from(document.querySelectorAll('[class*="MergeBoxExpandable-module__isExpanded"]')).forEach(e => e?.setAttribute("style", "max-height: 100dvh;"));


                // --------
                // -------- PR jobs links target blank
                // --------
                document.querySelectorAll('a.status-actions').forEach(e => {
                    e.setAttribute('target', '_blank');
                });

                // --------
                // -------- All sonarcloud links target blank
                // --------
                [...document.querySelectorAll('a')].filter(e => e.getAttribute('href').includes("http") || e.getAttribute('href').includes("/actions/")).forEach(link => link.setAttribute('target', '_blank'));

                // --------
                // -------- For Marine highlight buttons in red in PRs that do not belong to you
                // --------
                if (document.querySelector("#partial-discussion-header div.flex-auto.min-width-0.mb-2 > a").innerText !== USERNAME) Array.from(document.querySelectorAll(".MergeBox-module__mergePartialContainer--N4i3Z .prc-ButtonGroup-ButtonGroup-vcMeG button") ).forEach((e) => e.setAttribute('style', "background-color: #f59090"));

            }
            lastUrl = location.href;
        });
    });

    // Configure the observer to watch for additions to the child list of the target node
    const config = { childList: true, subtree: true };

    // Start observing the document body for changes
    observer.observe(document.body, config);

    // --------
    // -------- Add hide whitespace by default
    // --------
    const goToFilesElement = document.querySelector("#repo-content-pjax-container > div > div.clearfix.js-issues-results > div.px-3.px-md-0.ml-n3.mr-n3.mx-md-0.tabnav > nav > a:nth-child(4)");
   goToFilesElement.setAttribute('href', goToFilesElement.getAttribute('href') + '?w=1');
})();