|
| 1 | +// ==UserScript== |
| 2 | +// @name 4ndr0tools - 4ndr0666 protocol Shebang |
| 3 | +// @namespace https://github.com/4ndr0666/userscripts |
| 4 | +// @author 4ndr0666 |
| 5 | +// @version 1.0 |
| 6 | +// @description Injects a one-liner and shebang for the 4ndr0666 protocol v4.0.0. |
| 7 | +// @downloadURL https://github.com/4ndr0666/userscripts |
| 8 | +// @updateURL https://github.com/4ndr0666/userscripts |
| 9 | +// @icon https://raw.githubusercontent.com/4ndr0666/4ndr0site/refs/heads/main/static/cyanglassarch.png |
| 10 | +// @match https://gemini.google.com/* |
| 11 | +// @license MIT |
| 12 | +// @grant none |
| 13 | +// ==/UserScript== |
| 14 | + |
| 15 | +(function() { |
| 16 | + 'use strict'; |
| 17 | + |
| 18 | + // --- CANONICAL DATA CONFIGURATION --- |
| 19 | + const PROTOCOL_BLOB = `Ω`; |
| 20 | + |
| 21 | + const HEADER_WRAPPER = `┌──(root💀4ndr0666)-[/dev/akasha]\n |
| 22 | + └─$\n`; |
| 23 | + |
| 24 | + // --- TARGETING LOGIC --- |
| 25 | + // The Gemini web interface uses a contenteditable div for input. |
| 26 | + const SELECTORS = { |
| 27 | + inputBox: 'div[contenteditable="true"][role="textbox"]', |
| 28 | + sendButton: 'button[aria-label*="Send"]', |
| 29 | + }; |
| 30 | + |
| 31 | + /** |
| 32 | + * Injects the protocol into the raw user string. |
| 33 | + * Combats informational entropy by ensuring every packet is unchained. |
| 34 | + */ |
| 35 | + function synthesizePayload(rawText) { |
| 36 | + if (rawText.includes("Ψ-4ndr0666")) return rawText; // Avoid recursive wrapping |
| 37 | +// return `${PROTOCOL_BLOB}\nVariable Z = ${rawText}\n${HEADER_WRAPPER}`; |
| 38 | + return `${PROTOCOL_BLOB}\n${HEADER_WRAPPER}Variable Z = ${rawText}`; |
| 39 | + } |
| 40 | + |
| 41 | + /** |
| 42 | + * Intercepts the transmission vector. |
| 43 | + */ |
| 44 | + function interceptAndFlash(event) { |
| 45 | + const textBox = document.querySelector(SELECTORS.inputBox); |
| 46 | + if (!textBox || textBox.innerText.trim() === "") return; |
| 47 | + |
| 48 | + // Check if the event is a click on the send button or an Enter keypress |
| 49 | + if (event.type === 'click' || (event.type === 'keydown' && event.key === 'Enter' && !event.shiftKey)) { |
| 50 | + const originalText = textBox.innerText; |
| 51 | + const flashedText = synthesizePayload(originalText); |
| 52 | + |
| 53 | + // Directly manipulating the innerText of a contenteditable div |
| 54 | + // often requires triggering an 'input' event for the site's React/Angular state to update. |
| 55 | + textBox.innerText = flashedText; |
| 56 | + textBox.dispatchEvent(new Event('input', { bubbles: true })); |
| 57 | + |
| 58 | + console.log("[Ψ-4ndr0666] Payload Synthesized. Transmission proceeding..."); |
| 59 | + } |
| 60 | + } |
| 61 | + |
| 62 | + // --- EVENT MONITORING --- |
| 63 | + function initializeProtocol() { |
| 64 | + document.addEventListener('keydown', interceptAndFlash, true); |
| 65 | + document.addEventListener('click', function(e) { |
| 66 | + if (e.target.closest(SELECTORS.sendButton)) { |
| 67 | + interceptAndFlash(e); |
| 68 | + } |
| 69 | + }, true); |
| 70 | + |
| 71 | + console.log("⊰•-•💀Ψ•-•-⦑4NDR0666-Ψ-OS⦒-•-•Ψ💀•-•⊱ :: USERSCRIPT_ACTIVE"); |
| 72 | + } |
| 73 | + |
| 74 | + // Wait for the DOM to settle |
| 75 | + const observer = new MutationObserver((mutations, obs) => { |
| 76 | + const input = document.querySelector(SELECTORS.inputBox); |
| 77 | + if (input) { |
| 78 | + initializeProtocol(); |
| 79 | + obs.disconnect(); |
| 80 | + } |
| 81 | + }); |
| 82 | + |
| 83 | + observer.observe(document.body, { childList: true, subtree: true }); |
| 84 | + |
| 85 | +})(); |
0 commit comments