// ==UserScript== // @name Universal Code Splitter for AI // @name:ar Universal Code Splitter for AI // @name:be Universal Code Splitter for AI // @name:bg Universal Code Splitter for AI // @name:ckb Universal Code Splitter for AI // @name:cs Univerzální rozdělovač kódu pro AI // @name:da Universal Code Splitter for AI // @name:de Universal-Code-Splitter für KI // @name:el Universal Code Splitter for AI // @name:en Universal Code Splitter for AI // @name:eo Universal Code Splitter for AI // @name:es Divisor de Código Universal para IA // @name:es-419 Divisor de Código Universal para IA // @name:fi Universal Code Splitter for AI // @name:fr Diviseur de Code Universel pour IA // @name:fr-CA Diviseur de Code Universel pour IA // @name:he Universal Code Splitter for AI // @name:hr Universal Code Splitter for AI // @name:hu Universal Code Splitter for AI // @name:id Universal Code Splitter for AI // @name:it Universal Code Splitter for AI // @name:ja Universal Code Splitter for AI // @name:ka Universal Code Splitter for AI // @name:ko Universal Code Splitter for AI // @name:mr Universal Code Splitter for AI // @name:nb Universal Code Splitter for AI // @name:nl Universal Code Splitter for AI // @name:pl Universal Code Splitter for AI // @name:pt-BR Divisor de Código Universal para IA // @name:ro Universal Code Splitter for AI // @name:ru Универсальный разделитель кода для ИИ // @name:sk Universal Code Splitter for AI // @name:sr Universal Code Splitter for AI // @name:sv Universal Code Splitter for AI // @name:th Universal Code Splitter for AI // @name:tr Universal Code Splitter for AI // @name:uk Універсальний розділювач коду для AI // @name:ug Universal Code Splitter for AI // @name:vi Universal Code Splitter for AI // @name:zh-CN 通用AI代码分割器 // @name:zh-TW 通用AI代碼分割器 // @description Split code blocks for AI (Alt+S to toggle) // @description:ar قم بتقسيم كتل الكود للذكاء الاصطناعي (Alt+S للتبديل) // @description:be Раздзяліць блокі кода для AI (Alt+S для пераключэння) // @description:bg Разделяне на кодови блокове за AI (Alt+S за превключване) // @description:ckb بلۆکەکانی کۆد دابەش بکە بۆ AI (Alt+S بۆ گۆڕین) // @description:cs Rozdělit bloky kódu pro AI (Alt+S pro přepnutí) // @description:da Opdel kodeblokke til AI (Alt+S for at skifte) // @description:de Teilt Codeblöcke für KI (Alt+S zum Umschalten) // @description:el Διαχωρισμός τμημάτων κώδικα για AI (Alt+S για εναλλαγή) // @description:en Split code blocks for AI (Alt+S to toggle) // @description:eo Disigi kodblokojn por AI (Alt+S por baskuli) // @description:es Dividir bloques de código para IA (Alt+S para alternar) // @description:es-419 Dividir bloques de código para IA (Alt+S para alternar) // @description:fi Jaa koodilohkot tekoälyä varten (Alt+S vaihtaaksesi) // @description:fr Diviser les blocs de code pour l'IA (Alt+S pour basculer) // @description:fr-CA Diviser les blocs de code pour l'IA (Alt+S pour basculer) // @description:he פיצול קוביות קוד עבור AI (Alt+S להחלפה) // @description:hr Podijeli blokove koda za AI (Alt+S za prebacivanje) // @description:hu Kódblokkok felosztása az AI-hoz (Alt+S a váltáshoz) // @description:id Bagi blok kode untuk AI (Alt+S untuk beralih) // @description:it Dividi blocchi di codice per AI (Alt+S per attivare) // @description:ja AI用にコードブロックを分割 (Alt+Sで切り替え) // @description:ka კოდის ბლოკების გაყოფა AI-სთვის (Alt+S გადასართავად) // @description:ko AI를 위한 코드 블록 분할 (Alt+S로 전환) // @description:mr AI साठी कोड ब्लॉक्स विभाजित करा (स्विच करण्यासाठी Alt+S) // @description:nb Del opp kodeblokker for AI (Alt+S for å bytte) // @description:nl Splits codeblokken voor AI (Alt+S om te wisselen) // @description:pl Podziel bloki kodu dla AI (Alt+S, aby przełączyć) // @description:pt-BR Dividir blocos de código para IA (Alt+S para alternar) // @description:ro Împarte blocurile de cod pentru AI (Alt+S pentru a comuta) // @description:ru Разделить блоки кода для ИИ (Alt+S для переключения) // @description:sk Rozdeliť bloky kódu pre AI (Alt+S na prepnutie) // @description:sr Подели блокове кода за АИ (Alt+S за пребацивање) // @description:sv Dela upp kodblock för AI (Alt+S för att växla) // @description:th แบ่งบล็อกโค้ดสำหรับ AI (Alt+S เพื่อสลับ) // @description:tr AI için kod bloklarını böl (Geçiş yapmak için Alt+S) // @description:uk Розділити блоки коду для AI (Alt+S для перемикання) // @description:ug AI ئۈچۈن كود بۆلەكلىرىنى بۆلۈش (ئالماشتۇرۇش ئۈچۈن Alt+S) // @description:vi Chia các khối mã cho AI (Alt+S để chuyển đổi) // @description:zh-CN 为 AI 分割代码块 (Alt+S 切换) // @description:zh-TW 為 AI 分割代碼塊 (Alt+S 切換) // @namespace tm-code-splitter // @version 1.0 // @author Pascal // @match *://*/* // @run-at document-start // @grant GM_setClipboard // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/561642/Universal%20Code%20Splitter%20for%20AI.user.js // @updateURL https://update.greasyfork.icu/scripts/561642/Universal%20Code%20Splitter%20for%20AI.meta.js // ==/UserScript== (function () { 'use strict'; // 1. Trusted Types Bypass (Fix for YouTube/Google UI injection) if (window.trustedTypes && trustedTypes.createPolicy && !trustedTypes.defaultPolicy) { const passThrough = (x) => x; try { trustedTypes.createPolicy('default', { createHTML: passThrough, createScriptURL: passThrough, createScript: passThrough }); } catch (e) {} } const COLORS = { bg: '#1e1e1e', border: '#333', accent: '#0e639c', success: '#1e3a1e', text: '#d4d4d4', blue: '#4fc1ff', orange: '#ce9178' }; let isVisible = true; const panel = document.createElement('div'); function formatSize(bytes) { return bytes < 1024 ? bytes + " B" : (bytes / 1024).toFixed(1) + " KB"; } function estimateTokens(text) { return Math.ceil(new TextEncoder().encode(text).length / 3.2); } // --- CLEANING FUNCTION (Removes previous headers/footers to prevent duplication) --- function cleanOldMarkers(text) { return text.replace(/\[PART \d+ OF \d+\][\s\S]*?--- START PART \d+ ---\n/g, '') .replace(/\n--- END PART \d+ ---/g, ''); } async function copyToClipboard(text, index, total) { const header = `[PART ${index + 1} OF ${total}]\n[NOTE: This is part of a larger file. Please confirm with "OK" only. Do not analyze until Part ${total} is received.]\n--- START PART ${index + 1} ---\n`; const footer = `\n--- END PART ${index + 1} ---`; const fullText = header + text + footer; try { await navigator.clipboard.writeText(fullText); } catch (e) { GM_setClipboard(fullText); } } function initUI() { if (document.getElementById('sc-panel-root')) return; panel.id = 'sc-panel-root'; Object.assign(panel.style, { position: 'fixed', top: '15px', right: '15px', zIndex: '2147483647', background: COLORS.bg, color: COLORS.text, padding: '15px', borderRadius: '10px', fontFamily: 'Segoe UI, sans-serif', fontSize: '13px', width: '300px', boxShadow: '0 8px 24px rgba(0,0,0,0.5)', border: `1px solid ${COLORS.border}`, display: isVisible ? 'block' : 'none' }); panel.innerHTML = `