# Classic Add-ons Archive v3.0 - WebExtensions Edition [![License: MPL 2.0](https://img.shields.io/badge/License-MPL%202.0-brightgreen.svg)](https://opensource.org/licenses/MPL-2.0) [![Firefox](https://img.shields.io/badge/Firefox-57%2B-orange.svg)](https://www.mozilla.org/firefox/) [![Chrome](https://img.shields.io/badge/Chrome-80%2B-blue.svg)](https://www.google.com/chrome/) ## 🎉 Nueva versión modernizada Esta es la versión 3.0 de Classic Add-ons Archive, completamente reescrita usando **WebExtensions** para ser compatible con navegadores modernos. ### ✨ Características principales - 📦 **93,598 versiones** de **19,450 extensiones clásicas de Firefox** - 🔍 Búsqueda y navegación por categorías - 📊 Ordenamiento por popularidad, valoración, fecha, etc. - 💾 Base de datos SQLite embebida - 🌐 Compatible con Firefox 57+, Chrome 80+, Edge, Brave, Vivaldi ### 🆕 Novedades de la versión 3.0 - ✅ Compatible con Firefox Quantum (57+) y Chrome - ✅ Usa APIs modernas de WebExtensions - ✅ Ya no requiere Firefox legacy - ✅ Navegación mejorada con hash routing - ✅ Base de datos en memoria con sql.js - ✅ Sin dependencias de XPCOM/XUL ## 🚀 Instalación rápida ### Para usuarios **Firefox:** ```bash # Descargar release # Ir a about:debugging # Cargar extensión temporal > seleccionar manifest.json ``` **Chrome/Edge/Brave:** ```bash # Ir a chrome://extensions/ # Activar "Modo de desarrollador" # "Cargar extensión sin empaquetar" > seleccionar carpeta ``` Documentación completa: [INSTALL.md](INSTALL.md) ### Para desarrolladores ```bash # Clonar repositorio git clone https://github.com/JustOff/ca-archive.git cd ca-archive # (Opcional) Instalar web-ext para testing npm install # Probar en Firefox npm run start:firefox # O probar en Chrome npm run start:chrome # Construir paquete npm run build:firefox # Crea .xpi para Firefox npm run build:chrome # Crea .zip para Chrome ``` ## 📁 Estructura del proyecto ``` ca-archive/ ├── manifest.json # Manifiesto WebExtensions v2 ├── background.js # Script de fondo ├── package.json # Scripts de build (opcional) │ ├── content/ # Scripts y páginas de contenido │ ├── ca-archive.html # Página principal de la extensión │ ├── ca-archive.js # Router y controlador principal │ ├── db-webext.js # Wrapper de base de datos (sql.js) │ ├── db.js # [Legacy] No usado en v3 │ ├── addon.js # Vista de detalle de addon │ ├── list.js # Vista de listado │ ├── versions.js # Vista de versiones │ ├── tcloud.js # Nube de tags │ ├── about.js # Página "Acerca de" │ ├── epl.js # EULA/Privacy/License │ └── db/ │ └── ca-archive-*.sqlite # Base de datos SQLite │ ├── skin/ # Assets visuales │ ├── ca-archive.css # Estilos principales │ ├── button.css # [Legacy] No usado en v3 │ ├── logo.png # Logo de la extensión │ ├── button.png # Icono del botón │ └── ... # Otros assets │ ├── MIGRATION.md # Guía de migración desde v2 ├── INSTALL.md # Guía de instalación ├── README-v3.md # Este archivo │ └── [Legacy - no usados en v3] ├── install.rdf ├── chrome.manifest ├── bootstrap.js └── update.xml ``` ## 🔄 Migración desde v2 (Legacy) Si vienes de la versión 2.x (XUL/XPCOM), lee la [Guía de Migración](MIGRATION.md) que explica: - ❌ Qué dejó de funcionar - ✅ Cómo se reemplazó cada funcionalidad - 🔧 Cambios en la arquitectura - 📊 Tabla de compatibilidad de navegadores ### Resumen rápido de cambios | Aspecto | v2 (Legacy) | v3 (WebExtensions) | |---------|-------------|-------------------| | **Manifest** | install.rdf | manifest.json | | **Protocolo** | caa: | hash routing (#) | | **APIs** | Components/XPCOM | WebExtensions APIs | | **Base de datos** | mozIStorageService | sql.js | | **Navegadores** | Firefox ≤56 | Firefox 57+, Chrome 80+ | ## 🛠️ Desarrollo ### Requisitos - Node.js 16+ (opcional, para herramientas de build) - Firefox Developer Edition o Chrome - Editor de código (VS Code recomendado) ### Setup ```bash # Instalar dependencias de desarrollo npm install # Lint npm run lint # Testing local npm run start:firefox # Abre Firefox con la extensión # o npm run start:chrome # Abre Chrome con la extensión ``` ### Testing manual 1. Hacer cambios en el código 2. En `about:debugging` (Firefox) o `chrome://extensions/` (Chrome), click en "Recargar" 3. Abrir la extensión y verificar cambios 4. Revisar console (`F12`) para errores ### Build para distribución ```bash # Firefox (.xpi) npm run build:firefox # Output: dist/ca-archive-3.0.0.zip (renombrar a .xpi) # Chrome (.zip) npm run build:chrome # Output: dist/ca-archive-3.0-chrome.zip ``` ## 🐛 Debugging ### Abrir consola de la extensión **Firefox:** 1. `about:debugging` > Este Firefox 2. Click en "Inspeccionar" en la extensión **Chrome:** 1. `chrome://extensions/` 2. Click en "Inspeccionar vistas: background page" ### Logs útiles ```javascript // En background.js console.log("Background script:", message); // En content scripts console.log("Content script:", message); // Errores de base de datos // Revisar consola de la página ca-archive.html ``` ## 📝 Notas técnicas ### Base de datos SQLite - **Tamaño:** ~50MB (comprimido: ~15MB) - **Engine:** sql.js (SQLite compilado a WebAssembly) - **Storage:** `browser.storage.local` (primera carga) - **Límite:** Chrome 10MB (usa `unlimitedStorage` permission) ### Permisos requeridos - `storage` - Cachear base de datos - `unlimitedStorage` - DB grande (>10MB) - `tabs` - Abrir tabs del catálogo - `webRequest` + `webRequestBlocking` - Modificar headers de descarga - `` - Interceptar requests a web.archive.org ### Políticas de seguridad ```json "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'" ``` - `'unsafe-eval'` - Requerido por sql.js (usa WebAssembly) - Todos los scripts deben estar en el paquete (no CDN inline) ## 🤝 Contribuir ¡Las contribuciones son bienvenidas! ### Áreas de mejora - [ ] Migrar a Manifest V3 (cuando Firefox tenga mejor soporte) - [ ] Optimizar carga de base de datos (chunks, compresión) - [ ] Modo oscuro (dark mode) - [ ] Búsqueda con índices full-text - [ ] Favoritos/bookmarks sincronizados - [ ] Mejoras de UI/UX ### Proceso 1. Fork del repositorio 2. Crear branch: `git checkout -b feature/mi-mejora` 3. Commit: `git commit -am 'Añadir nueva característica'` 4. Push: `git push origin feature/mi-mejora` 5. Crear Pull Request ## 📄 Licencia **Mozilla Public License 2.0 (MPL-2.0)** - ✅ Uso comercial - ✅ Modificación - ✅ Distribución - ✅ Uso privado - ⚠️ Divulgar fuente si se modifica Ver [LICENSE](LICENSE) para más detalles. ### Atribuciones - Diseño original: Mozilla AMO (CC-BY-SA-3.0) - Datos: Dominio público / respectivos autores - sql.js: MIT License - Logos y marcas: Propiedad de sus respectivos dueños ## 👥 Autores - **Off JustOff** - Autor original - [JustOff](https://github.com/JustOff) - Migración a WebExtensions v3.0 - 2026 ## 🔗 Enlaces - 🏠 [Sitio web](https://ca-archive.us.to/) - 📦 [Releases](https://github.com/JustOff/ca-archive/releases) - 🐛 [Issues](https://github.com/JustOff/ca-archive/issues) - 💬 [Discusiones](https://github.com/JustOff/ca-archive/discussions) - 📖 [Documentación](https://github.com/JustOff/ca-archive/wiki) ## ⭐ Agradecimientos - Mozilla y la comunidad AMO - Wayback Machine (Internet Archive) - Zetamex Network (hosting) - Todos los desarrolladores de extensiones clásicas --- **¿Te gusta el proyecto?** Dale una ⭐ en GitHub! **¿Encontraste un bug?** [Repórtalo aquí](https://github.com/JustOff/ca-archive/issues) **¿Tienes preguntas?** [Pregunta en Discusiones](https://github.com/JustOff/ca-archive/discussions)