ChatGPT 代码块宽屏显示/展示大屏

右下角有展示大屏按钮 开启后可拓宽聊天页面

// ==UserScript==
// @name         ChatGPT 代码块宽屏显示/展示大屏
// @namespace    http://tampermonkey.net/
// @version      1.2
// @license      V:ChatGPT4V
// @description  右下角有展示大屏按钮 开启后可拓宽聊天页面
// @match        https://chatgpt.com/*
// @match        https://www.chatgpt.com/*
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_addStyle
// ==/UserScript==

(function () {
    'use strict';

    const STORAGE_KEY = 'k_largescreen';

    GM_addStyle(`
        main.w-full.largescreen form.w-full {
            max-width: 85% !important;
            margin: auto !important;
        }
        @media(min-width:1024px){
            main.w-full.largescreen article.text-token-text-primary > div > div.w-full {
                max-width: 100% !important;
            }
        }
        main.w-full.largescreen #thread-bottom > div > div {
            --thread-content-max-width: unset !important;
        }

        #largescreen-toggle-btn {
            position: fixed;
            bottom: 20px;
            right: 20px;
            z-index: 9999;
            background-color: #10a37f;
            color: #fff;
            border: none;
            padding: 6px 10px;
            border-radius: 6px;
            font-size: 14px;
            cursor: pointer;
        }
        #largescreen-toggle-btn:hover {
            background-color: #0e8f6e;
        }
    `);

    function setLargeScreen(enable) {
        const main = document.querySelector('main.w-full');
        if (!main) return;
        main.classList.toggle('largescreen', enable);
        GM_setValue(STORAGE_KEY, enable);
        updateButtonText(enable);
    }

    function updateButtonText(enabled) {
        const btn = document.getElementById('largescreen-toggle-btn');
        if (btn) btn.textContent = enabled ? '❌ 退出大屏' : '📺 展示大屏';
    }

    function createButton() {
        if (document.getElementById('largescreen-toggle-btn')) return;
        const btn = document.createElement('button');
        btn.id = 'largescreen-toggle-btn';
        btn.textContent = '📺 展示大屏';
        btn.onclick = () => {
            const current = !!GM_getValue(STORAGE_KEY, false);
            setLargeScreen(!current);
        };
        document.body.appendChild(btn);
    }

    function init() {
        createButton();
        const saved = !!GM_getValue(STORAGE_KEY, true);
        setLargeScreen(saved);
    }

    const observer = new MutationObserver(() => {
        if (document.body && document.querySelector('main.w-full')) {
            observer.disconnect();
            init();
        }
    });

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

})();