Tracehold Free Firefox

Examine source code of Tracehold Free

Inspect and view changes in Tracehold Free source codes across current and past versions
Please login to examine the extension's source code.
manifest.json
{
  "manifest_version": 3,
  "name": "Tracehold Free",
  "version": "0.6.6",
  "description": "Detecta contraseñas, claves y datos personales antes de enviarlos a ChatGPT, Claude o Gemini. Tus prompts se analizan en local.",
  "browser_specific_settings": {
    "gecko": {
      "id": "tracehold-free@tracehold.es",
      "strict_min_version": "128.0",
      "data_collection_permissions": {
        "required": [
          "none"
        ],
        "optional": [
          "technicalAndInteraction",
          "websiteContent"
        ]
      }
    }
  },
  "_comment_net_hooks": "PARIDAD DE RED CON CHROME: Firefox 128+ SÍ soporta content_scripts con \"world\":\"MAIN\" (Mozilla Add-ons Blog, jul-2024 — y a diferencia de Chromium, en Firefox el mundo MAIN NO queda bloqueado por la CSP de la página), así que cargamos inject-net.js en MAIN igual que Chrome/Edge (entrada estática, document_start, mejor timing). Esto cierra el único gap de red que tenía Firefox; la capa DOM (content.js + lib/patterns.js + VFEngine) sigue funcionando como antes. strict_min_version sube a 128 por esto. REFUERZO (Solución C): lib/net-hook-firefox.js corre en el mundo AISLADO y, SOLO si el script del mundo MAIN no llegó a arrancar (CSP), parchea fetch/XHR de la página vía window.wrappedJSObject + exportFunction (inmune a CSP). Ambas capas se auto-coordinan con el flag window.__TRACEHOLD_FREE_NET_ACTIVE__ en la PÁGINA: la primera que arranca gana, la otra se inhibe (nunca doble-parche).",
  "permissions": [
    "storage",
    "notifications",
    "alarms"
  ],
  "host_permissions": [
    "*://chatgpt.com/*",
    "*://chat.openai.com/*",
    "*://claude.ai/*",
    "*://gemini.google.com/*",
    "*://copilot.microsoft.com/*",
    "*://copilot.cloud.microsoft/*",
    "*://perplexity.ai/*",
    "*://you.com/*",
    "*://mistral.ai/*",
    "*://chat.mistral.ai/*",
    "*://grok.com/*",
    "*://x.ai/*",
    "*://chat.deepseek.com/*",
    "*://deepseek.com/*",
    "*://poe.com/*",
    "*://qianwen.com/*",
    "*://www.qianwen.com/*",
    "http://localhost:3000/*",
    "https://*.tracehold.com/*",
    "http://10.0.10.125:3000/*"
  ],
  "_comment_background_scripts": "Firefox carga el background como event page clásico (NO service worker): importScripts() no existe, así que TODOS los módulos que background.js usa deben listarse aquí, cada uno ANTES de background.js. client-config.js (descubrimiento de URLs) y telemetry.js (telemetría anónima) deben ir aquí igual que en el importScripts() de Chrome; omitirlos deja self.VFClientConfig / self.VFTelemetry sin definir y en Firefox la telemetría no se envía NUNCA (sendTelemetryPing/flushTelemetry hacen return temprano).",
  "background": {
    "scripts": [
      "lib/browser-compat.js",
      "lib/stats.js",
      "lib/noble-ed25519.js",
      "lib/free-crypto.js",
      "lib/client-config.js",
      "lib/free-engine.js",
      "lib/telemetry.js",
      "background.js",
      "lib/ort/ort.min.js",
      "lib/ner-core.js",
      "lib/ner-tokenizer.js",
      "offscreen/ner-runtime.js"
    ]
  },
  "content_scripts": [
    {
      "matches": [
        "*://chatgpt.com/*",
        "*://chat.openai.com/*",
        "*://claude.ai/*",
        "*://gemini.google.com/*",
        "*://copilot.microsoft.com/*",
        "*://copilot.cloud.microsoft/*",
        "*://perplexity.ai/*",
        "*://you.com/*",
        "*://mistral.ai/*",
        "*://chat.mistral.ai/*",
        "*://grok.com/*",
        "*://x.ai/*",
        "*://chat.deepseek.com/*",
        "*://deepseek.com/*",
        "*://poe.com/*",
        "*://qianwen.com/*",
        "*://www.qianwen.com/*"
      ],
      "js": [
        "lib/browser-compat.js",
        "lib/ai-catalog.js",
        "lib/ai-detect.js",
        "lib/stats.js",
        "lib/patterns.js",
        "lib/free-engine.js",
        "lib/live-highlight-free.js",
        "lib/ner-client.js",
        "content.js",
        "lib/net-hook-firefox.js"
      ],
      "css": [
        "content.css"
      ],
      "all_frames": true,
      "run_at": "document_start"
    },
    {
      "matches": [
        "*://chatgpt.com/*",
        "*://chat.openai.com/*",
        "*://claude.ai/*",
        "*://gemini.google.com/*",
        "*://copilot.microsoft.com/*",
        "*://copilot.cloud.microsoft/*",
        "*://perplexity.ai/*",
        "*://you.com/*",
        "*://mistral.ai/*",
        "*://chat.mistral.ai/*",
        "*://grok.com/*",
        "*://x.ai/*",
        "*://chat.deepseek.com/*",
        "*://deepseek.com/*",
        "*://poe.com/*",
        "*://qianwen.com/*",
        "*://www.qianwen.com/*"
      ],
      "js": [
        "lib/ai-catalog.js",
        "lib/ai-detect.js",
        "lib/free-engine.js",
        "inject-net.js"
      ],
      "world": "MAIN",
      "all_frames": true,
      "run_at": "document_start"
    }
  ],
  "web_accessible_resources": [
    {
      "resources": [
        "lib/ai-catalog.js",
        "lib/ai-detect.js",
        "lib/free-engine.js",
        "inject-net.js"
      ],
      "matches": [
        "*://chatgpt.com/*",
        "*://chat.openai.com/*",
        "*://claude.ai/*",
        "*://gemini.google.com/*",
        "*://copilot.microsoft.com/*",
        "*://copilot.cloud.microsoft/*",
        "*://perplexity.ai/*",
        "*://you.com/*",
        "*://mistral.ai/*",
        "*://chat.mistral.ai/*",
        "*://grok.com/*",
        "*://x.ai/*",
        "*://chat.deepseek.com/*",
        "*://deepseek.com/*",
        "*://poe.com/*",
        "*://qianwen.com/*",
        "*://www.qianwen.com/*"
      ]
    }
  ],
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self'"
  },
  "action": {
    "default_popup": "popup/popup.html",
    "default_title": "Tracehold (versión gratuita)",
    "default_icon": {
      "16": "icons/icon16.png",
      "32": "icons/icon32.png",
      "48": "icons/icon48.png",
      "128": "icons/icon128.png"
    }
  },
  "icons": {
    "16": "icons/icon16.png",
    "32": "icons/icon32.png",
    "48": "icons/icon48.png",
    "128": "icons/icon128.png"
  }
}

Best Tracehold Free Alternatives

Here are some Firefox add-ons that are similar to Tracehold Free: