FakaSys01 / GitHub Full Clone Command

// ==UserScript==
// @name         GitHub Full Clone Command
// @namespace    http://tampermonkey.net/
// @version      2026-09-11
// @description  Intercepts clipboard writes on GitHub to automatically prepend 'git clone ' to repository URLs.
// @author       Bartek
// @license      MIT
// @match        https://github.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Intercept the Clipboard API write function
    if (navigator.clipboard && navigator.clipboard.writeText) {
        const originalWriteText = navigator.clipboard.writeText;
        navigator.clipboard.writeText = async function(text) {
            if (text && (text.endsWith('.git') || (text.includes('github.com/') && !text.includes(' '))) && !text.startsWith('git clone ')) {
                text = `git clone ${text}`;
                console.log('[GitHub Clone Fixer] Prefixed clipboard text:', text);
            }
            return originalWriteText.call(navigator.clipboard, text);
        };
    }

    // Also visually update input boxes for convenience
    function patchInputs() {
        document.querySelectorAll('input[type="text"], input[readonly]').forEach(input => {
            const val = input.value;
            if (val && (val.endsWith('.git') || val.includes('github.com/')) && !val.startsWith('git clone ')) {
                input.value = `git clone ${val}`;
            }
        });
    }

    const observer = new MutationObserver(patchInputs);
    observer.observe(document.body, { childList: true, subtree: true });
})();