🌺 Clean ChatGPT

Cleaner and better ChatGPT 3.5

目前为 2024-02-09 提交的版本。查看 最新版本

// ==UserScript==
// @name              🌺 Clean ChatGPT
// @name:pl           🌺 Clean ChatGPT
// @namespace         https://gf.qytechs.cn/pl/users/1081704-nameniok
// @version           1.1.7
// @author            Nameniok
// @description       Cleaner and better ChatGPT 3.5
// @description:pl    Czystszy i lepszy ChatGPT 3.5
// @run-at            document-start
// @match             https://chat.openai.com/
// @grant             none
// @license           MIT
// ==/UserScript==

// Cleaner ui //
function removeElements() {
    var elementsToRemove = [
        "div.\\!pr-3.group.radix-disabled\\:opacity-50.radix-disabled\\:pointer-events-none.hover\\:bg-token-main-surface-secondary.focus\\:ring-0.cursor-pointer.text-sm.p-2\\.5.rounded.m-1\\.5.gap-2.flex:nth-of-type(2)",
        ".to-gray-900.from-gray-900\\/0.bg-gradient-to-t.h-24",
        ".uppercase.rounded-md.md\\:text-sm.text-xs.px-1\\.5.py-0\\.5.text-yellow-900.bg-yellow-200",
        ".border-white\\/20.border.flex-shrink-0.mb-1.text-sm.rounded-md.gap-3.items-center.px-3.py-3.flex.kgold",
        ".py-3.px-4.bg-gray-900",
        "span.uppercase.rounded-md.md\\:text-sm.text-xs.px-1\\.5.py-0\\.5.text-yellow-900.bg-yellow-200",
        "#kcg",
        ".pt-2.pb-3",
        ".space-y-2.flex-col.flex",
        ".w-\\[72px\\].h-\\[72px\\].mb-3",
        ".font-medium.text-2xl.mb-5",
        // Upgrade button
        ".px-2.rounded-lg.m-0.hover\\:bg-token-sidebar-surface-secondary.radix-disabled\\:opacity-50.radix-disabled\\:pointer-events-none.focus\\:ring-0.cursor-pointer.text-sm.p-2\\.5.gap-2.flex.group",
        // Upgrade button on smaller width
        "div.\\!pr-3.group.radix-disabled\\:opacity-50.radix-disabled\\:pointer-events-none.hover\\:bg-token-main-surface-secondary.focus\\:ring-0.cursor-pointer.text-sm.p-2\\.5.rounded.m-1\\.5.gap-2.flex:nth-of-type(2)",
        ".justify-center.md\\:gap-2.gap-0.md\\:mb-4.md\\:m-auto.md\\:w-full.ml-1.flex.h-full",
        ".text-token-text-tertiary > .mt-2",
        ".font-medium.text-2xl.mb-5",
        ".md\\:mt-14.relative",
        ".pr-1.gap-2.flex",
        // Invite members button
        ".rounded-lg.hover\\:bg-token-sidebar-surface-secondary.radix-disabled\\:opacity-50.radix-disabled\\:pointer-events-none.focus\\:ring-0.cursor-pointer.text-sm.p-2\\.5.gap-2.flex.group",

      // CLEANER - Chat history not visible with this
        //".justify-center.items-center.flex-col.h-full.flex",
        //".text-token-text-primary.justify-center.items-center.flex-col.h-full.flex",

      /*
      // MEGA CLEAN
        ".ml-2.focus\\:ring-0.border-token-border-medium.border.rounded-lg.whitespace-nowrap.justify-center.items-center.w-9.h-9.flex.btn-small.btn-neutral.relative.btn",
        ".bg-token-sidebar-surface-primary.overflow-x-hidden.flex-shrink-0",
        ".justify-center.items-center.w-8.h-\\[72px\\].flex",
        ".z-40.top-1\\/2.left-0.fixed",
        "#headlessui-portal-root > div > div > .relative",
        ".active\\:opacity-50.focus\\:ring-white.focus\\:ring-inset.focus\\:ring-2.focus\\:outline-none.hover\\:text-token-text-primary.rounded-md.justify-center.items-center.w-10.h-10.inline-flex.-mt-0\\.5.-ml-0\\.5.left-0.absolute",
     */

        ".md\\:px-\\[60px\\].text-token-text-secondary.text-xs.text-center.py-2.px-2.relative > span"
    ];
    elementsToRemove.forEach(function(selector) {
        var elements = document.querySelectorAll(selector);
        elements.forEach(function(element) {
            element.remove();
        });
    });
    setTimeout(function() {
    observer.disconnect();
}, 5000);
}
function observeDOMChanges() {
    var observer = new MutationObserver(function(mutationsList, observer) {
        removeElements();
    });
    observer.observe(document.documentElement, { childList: true, subtree: true });
    return observer;
}
var observer = observeDOMChanges();
window.addEventListener('load', function() {
    removeElements();
});

function removeElements2() {
    var elementsToRemove = [
        "div.\\!pr-3.group.radix-disabled\\:opacity-50.radix-disabled\\:pointer-events-none.hover\\:bg-token-main-surface-secondary.focus\\:ring-0.cursor-pointer.text-sm.p-2\\.5.rounded.m-1\\.5.gap-2.flex:nth-of-type(2)",
        ".to-gray-900.from-gray-900\\/0.bg-gradient-to-t.h-24",
        ".pr-1.gap-2.flex",
        // Hide upgrade button
        ".px-2.rounded-lg.m-0.hover\\:bg-token-sidebar-surface-secondary.radix-disabled\\:opacity-50.radix-disabled\\:pointer-events-none.focus\\:ring-0.cursor-pointer.text-sm.p-2\\.5.gap-2.flex.group",
        // Hide upgrade button on smaller width
        "div.\\!pr-3.group.radix-disabled\\:opacity-50.radix-disabled\\:pointer-events-none.hover\\:bg-token-main-surface-secondary.focus\\:ring-0.cursor-pointer.text-sm.p-2\\.5.rounded.m-1\\.5.gap-2.flex:nth-of-type(2)",
        ".text-token-text-tertiary > .mt-2",
        ".justify-center.md\\:gap-2.gap-0.md\\:mb-4.md\\:m-auto.md\\:w-full.ml-1.flex.h-full",
        ".md\\:px-\\[60px\\].text-token-text-secondary.text-xs.text-center.py-2.px-2.relative > span",
        ".font-medium.text-2xl.mb-5",
        ".md\\:mt-14.relative",
        // Invite members button
        ".rounded-lg.hover\\:bg-token-sidebar-surface-secondary.radix-disabled\\:opacity-50.radix-disabled\\:pointer-events-none.focus\\:ring-0.cursor-pointer.text-sm.p-2\\.5.gap-2.flex.group",

      // CLEANER - Chat history not visible with this
        //".justify-center.items-center.flex-col.h-full.flex",
        //".text-token-text-primary.justify-center.items-center.flex-col.h-full.flex",

      /*
      // MEGA CLEAN
        ".ml-2.focus\\:ring-0.border-token-border-medium.border.rounded-lg.whitespace-nowrap.justify-center.items-center.w-9.h-9.flex.btn-small.btn-neutral.relative.btn",
        ".bg-token-sidebar-surface-primary.overflow-x-hidden.flex-shrink-0",
        ".justify-center.items-center.w-8.h-\\[72px\\].flex",
        ".z-40.top-1\\/2.left-0.fixed",
        "#headlessui-dialog-\\:r1p\\: > .flex.inset-0.fixed",
        "#headlessui-portal-root > div > div > .relative",
        ".active\\:opacity-50.focus\\:ring-white.focus\\:ring-inset.focus\\:ring-2.focus\\:outline-none.hover\\:text-token-text-primary.rounded-md.justify-center.items-center.w-10.h-10.inline-flex.-mt-0\\.5.-ml-0\\.5.left-0.absolute",
      */

        ".py-3.px-4.bg-gray-900"
    ];
    elementsToRemove.forEach(function(selector) {
        var elements = document.querySelectorAll(selector);
        elements.forEach(function(element) {
            element.remove();
        });
    });
}

function observeDOMChanges2() {
    var observer2 = new MutationObserver(function(mutationsList, observer2) {
        mutationsList.forEach(function(mutation) {
            if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
                var hasTextNodes = Array.from(mutation.addedNodes).some(function(node) {
                    if (node.nodeType === 3 && node.textContent.trim().length > 0) {
                        return true;
                    } else if (node.nodeType === 1 && node.tagName.toLowerCase() === 'p') {
                        return true;
                    } else if (node.nodeType === 1 && node.classList) {
                        var ignoredClasses = ['m-auto', 'md:gap-6', 'text-base', 'justify-center', 'py-2', 'px-4'];
                        return ignoredClasses.some(function(ignoredClass) {
                            return node.classList.contains(ignoredClass);
                        });
                    }
                    return false;
                });
                if (!hasTextNodes) {
                    removeElements2();
                }
            }
        });
    });
    observer2.observe(document.documentElement, { childList: true, subtree: true });  // subtree: false - for better optimization but inaccurate
    return observer2;
}
var observer2 = observeDOMChanges2();
window.addEventListener('load', function() {
    removeElements2();
});


// Auto continue //
let Observer;
(async () => {
    Observer = new MutationObserver(mutations =>
        mutations.forEach(mutation => {
            if (mutation.attributeName == 'style' && mutation.target.style.opacity == '1') {
                document.querySelectorAll('button').forEach(button => {
                    if (button.textContent.includes('Continue generating')) {
                        button.click();
                        console.log("Auto generating");
                    }
                });
            }
        })
    );
    Observer.observe(document.querySelector('body'), { attributes: true, subtree: true });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址