diff --git a/.gitignore b/.gitignore
index 8765812..08e9d3a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,56 @@
+# Base de datos SQLite (repositorio)
*.sqlite
skin/icons/
+
+# Archivos de build
+dist/
+*.xpi
+*.zip
+*.tar.gz
+*.crx
+
+# Dependencias Node.js
+node_modules/
+package-lock.json
+yarn.lock
+
+# Archivos del editor
+.vscode/
+.idea/
+*.swp
+*.swo
+*~
+
+# Sistema operativo
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+Thumbs.db
+Desktop.ini
+
+# Archivos temporales
+*.tmp
+*.log
+*.cache
+.cache/
+
+# Logs y artifacts
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+web-ext-artifacts/
+
+# Archivos de backup
+*.bak
+*.backup
+
+# Cobertura de tests
+coverage/
+.nyc_output/
+
+# sql.js descargado localmente (opcional)
+content/sql-wasm.js
+content/sql-wasm.wasm
+
diff --git a/.webextignore b/.webextignore
new file mode 100644
index 0000000..89546ec
--- /dev/null
+++ b/.webextignore
@@ -0,0 +1,39 @@
+# Archivos legacy de XUL/XPCOM (no necesarios en WebExtensions)
+install.rdf
+chrome.manifest
+bootstrap.js
+update.xml
+
+# Documentación (opcional, pero puede incluirse)
+README.md
+MIGRATION.md
+INSTALL.md
+
+# Control de versiones
+.git/
+.gitignore
+.gitattributes
+
+# Archivos de desarrollo
+.vscode/
+.idea/
+*.swp
+*~
+.DS_Store
+Thumbs.db
+
+# Archivos de build
+*.xpi
+*.zip
+*.tar.gz
+
+# Node modules (si se usan herramientas de build)
+node_modules/
+package.json
+package-lock.json
+yarn.lock
+
+# Archivos temporales
+*.tmp
+*.log
+.cache/
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..8d769d8
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,196 @@
+# Changelog
+
+Todos los cambios notables de este proyecto serán documentados en este archivo.
+
+El formato está basado en [Keep a Changelog](https://keepachangelog.com/es/1.0.0/),
+y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).
+
+## [3.0.0] - 2026-02-08
+
+### 🎉 Reescritura completa a WebExtensions
+
+Esta es una actualización mayor que moderniza completamente la extensión desde el sistema legacy XUL/XPCOM a WebExtensions modernas.
+
+### ✨ Añadido
+
+- **manifest.json** - Manifiesto WebExtensions Manifest v2
+- **background.js** - Script de fondo con APIs modernas
+- **db-webext.js** - Wrapper para base de datos usando sql.js
+- **Hash routing** - Navegación usando `#` en lugar de protocolo personalizado
+- **Compatibilidad con Chrome** - Ahora funciona en Chrome, Edge, Brave, Vivaldi
+- **Documentación moderna**:
+ - `MIGRATION.md` - Guía completa de migración desde v2
+ - `INSTALL.md` - Instrucciones de instalación
+ - `README-v3.md` - Documentación actualizada
+ - `CHANGELOG.md` - Este archivo
+- **package.json** - Scripts de build y desarrollo
+- **.webextignore** - Exclusión de archivos legacy del paquete
+- Permiso `unlimitedStorage` para bases de datos grandes
+- Carga dinámica de módulos JavaScript
+- Compatibilidad Chrome/Firefox con detección automática de API
+
+### 🔄 Cambiado
+
+- **Protocolo de navegación**: `caa:` → hash routing (`#list`, `#addon/...`)
+- **URLs de recursos**: `chrome://ca-archive/` → rutas relativas
+- **Base de datos**: mozIStorageService → sql.js (WebAssembly)
+- **Storage**: Perfil de Firefox → `browser.storage.local`
+- **Imports**: `Cu.import()` → Carga dinámica de scripts
+- **APIs**: Components/XPCOM → WebExtensions APIs estándar
+- **ca-archive.html** - Actualizado con rutas relativas y hash links
+- **ca-archive.js** - Refactorizado sin Components, async/await
+- Versión mínima de Firefox: 45 → 57 (Quantum)
+
+### ❌ Eliminado (deprecado, aún en carpeta pero no usado)
+
+- **install.rdf** - Reemplazado por manifest.json
+- **chrome.manifest** - Ya no necesario en WebExtensions
+- **bootstrap.js** - Reemplazado por background.js
+- **update.xml** - Actualizaciones vía stores oficiales
+- Soporte para Firefox <57 (ESR 45-52)
+- Soporte para Pale Moon, Basilisk, SeaMonkey, Waterfox Classic
+- Protocolo personalizado `caa:`
+- Botón personalizable en barra de herramientas
+- Menú en Tools
+- Modificación de páginas de addons.mozilla.org
+- Compatibilidad con e10s deshabilitado
+
+### 🐛 Corregido
+
+- Ya no requiere deshabilitar firma de extensiones en Firefox
+- Compatible con multi-proceso (e10s) obligatorio
+- No conflictos con Content Security Policy moderna
+- Carga correcta en navegadores basados en Chromium
+
+### 🔒 Seguridad
+
+- Uso de APIs estándar y seguras de WebExtensions
+- Eliminación de acceso a componentes internos del navegador
+- CSP estricto con excepciones mínimas necesarias
+
+### 📊 Compatibilidad
+
+#### ✅ Ahora compatible con:
+- Firefox 57+ (Quantum)
+- Chrome 80+
+- Microsoft Edge 80+ (Chromium)
+- Brave 1.20+
+- Vivaldi 3.0+
+- Opera 67+
+
+#### ❌ Ya no compatible con:
+- Firefox <57 (ESR 45-56, Firefox 45-56)
+- Pale Moon
+- Basilisk
+- Waterfox Classic (pre-Current)
+- SeaMonkey
+- IceCat/IceApe legacy
+
+**Nota:** Para navegadores legacy, seguir usando la versión 2.x.
+
+---
+
+## [2.0.3] - 2018 (Legacy)
+
+Última versión del sistema XUL/XPCOM legacy.
+
+### Características
+
+- Protocolo personalizado `caa:`
+- Base de datos SQLite nativa
+- Compatible con Firefox 45-56
+- Compatible con Pale Moon, Basilisk, SeaMonkey
+- Botón personalizable en toolbar
+- Menú en Tools
+- Modificación de páginas AMO (inyección de hints)
+- 93,598 versiones de 19,450 addons
+
+### Limitaciones conocidas
+
+- No funciona con e10s en Firefox (excepto Waterfox)
+- Requiere deshabilitar firma de extensiones en Firefox 48+
+- No compatible con Firefox 57+ (Quantum)
+
+---
+
+## Notas de migración
+
+### De 2.x a 3.0
+
+**⚠️ ATENCIÓN: Cambios que rompen compatibilidad**
+
+Esta no es una actualización compatible hacia atrás. La versión 3.0 es una reescritura completa.
+
+#### Si usas Firefox <57
+→ **Quedate en v2.0.3**. La v3.0 no funcionará.
+
+#### Si usas Firefox 57+ o Chrome
+→ **Actualiza a v3.0**. La v2.0.3 no funcionará.
+
+#### Migración de datos
+
+No hay migración automática de datos porque:
+- Las APIs de storage son incompatibles
+- La base de datos se descarga nueva
+- No hay configuraciones persistentes importantes
+
+#### Enlaces rotos
+
+Si tienes bookmarks con URLs `caa:*`, necesitarás recrearlos con:
+```
+moz-extension://[id]/content/ca-archive.html#[ruta]
+```
+
+El ID de la extensión se puede obtener de `about:debugging`.
+
+### Pasos recomendados
+
+1. **Backup** (opcional): Exportar favoritos si tienes links `caa:`
+2. **Desinstalar** v2.x desde `about:addons`
+3. **Instalar** v3.0 (ver [INSTALL.md](INSTALL.md))
+4. **Recrear** bookmarks si es necesario
+
+---
+
+## Formato de versiones
+
+Este proyecto usa [Semantic Versioning](https://semver.org/):
+
+- **MAJOR** (3.x.x) - Cambios incompatibles
+- **MINOR** (x.1.x) - Nuevas características compatibles
+- **PATCH** (x.x.1) - Correcciones de bugs
+
+---
+
+## Roadmap futuro
+
+### [3.1.0] - Planificado
+
+- [ ] Dark mode / tema oscuro
+- [ ] Mejora de búsqueda (índices full-text)
+- [ ] Favoritos sincronizados
+- [ ] Exportar/importar colecciones
+- [ ] Optimización de carga de DB (chunks)
+- [ ] Mejor manejo de errores
+
+### [4.0.0] - Considerando
+
+- [ ] Migración a Manifest V3 (cuando Firefox tenga soporte completo)
+- [ ] Reescritura con framework moderno (React/Vue/Svelte)
+- [ ] API pública para datos de addons
+- [ ] Versión web (sin extensión)
+- [ ] Integración con Archive.org API
+
+---
+
+## Enlaces
+
+- [Código fuente](https://github.com/JustOff/ca-archive)
+- [Releases](https://github.com/JustOff/ca-archive/releases)
+- [Issues](https://github.com/JustOff/ca-archive/issues)
+- [Discusiones](https://github.com/JustOff/ca-archive/discussions)
+
+---
+
+[3.0.0]: https://github.com/JustOff/ca-archive/releases/tag/v3.0.0
+[2.0.3]: https://github.com/JustOff/ca-archive/releases/tag/2.0.3
diff --git a/INSTALL.md b/INSTALL.md
new file mode 100644
index 0000000..a465cdc
--- /dev/null
+++ b/INSTALL.md
@@ -0,0 +1,171 @@
+# Guía de Instalación Rápida - Classic Add-ons Archive v3.0
+
+## Para Desarrolladores / Testing Local
+
+### Firefox
+
+**Opción 1: Carga temporal (recomendado para desarrollo)**
+
+1. Abre Firefox
+2. Escribe en la barra de direcciones: `about:debugging#/runtime/this-firefox`
+3. Click en "Cargar complemento temporal..."
+4. Navega a la carpeta del proyecto y selecciona el archivo `manifest.json`
+
+La extensión se instalará hasta que cierres Firefox.
+
+**Opción 2: Instalación permanente (requiere firmado)**
+
+1. Empaquetar la extensión:
+ ```bash
+ cd /home/ale/projects/firefox/ca-archive
+ zip -r ca-archive-3.0.xpi manifest.json background.js content/ skin/ -x "*.git*" -x "*~"
+ ```
+
+2. Firmar en addons.mozilla.org o usar Firefox Developer/Nightly con firma deshabilitada
+
+### Chrome / Edge / Brave
+
+**Modo desarrollador (sin empaquetar):**
+
+1. Abre el navegador
+2. Ve a: `chrome://extensions/` (o `edge://extensions/`)
+3. Activa el interruptor "Modo de desarrollador" (esquina superior derecha)
+4. Click en "Cargar extensión sin empaquetar"
+5. Selecciona la carpeta: `/home/ale/projects/firefox/ca-archive`
+
+La extensión quedará instalada permanentemente en modo desarrollo.
+
+**Empaquetar para distribución:**
+
+```bash
+cd /home/ale/projects/firefox/ca-archive
+zip -r ca-archive-3.0.zip manifest.json background.js content/ skin/ -x "*.git*" -x "*~"
+```
+
+## Verificación de Instalación
+
+Después de instalar, deberías ver:
+
+1. ✅ Icono de la extensión en la barra de herramientas
+2. ✅ Click en el icono abre la página del catálogo
+3. ✅ Mensaje de carga de base de datos (primera vez)
+4. ✅ Navegación funcionando (categorías, búsqueda, etc.)
+
+## Troubleshooting
+
+### La base de datos no carga
+
+**Error:** "Loading database for the first time. Please wait..."
+
+**Solución:**
+1. Asegúrate de tener la carpeta `content/db/` con el archivo SQLite
+2. Verifica que el archivo `ca-archive-19030501.sqlite` exista y no esté corrupto
+3. Revisa la consola del navegador (`F12` > Console) para errores específicos
+
+### El icono no aparece
+
+**Solución:**
+1. Refresca la página `about:debugging` o `chrome://extensions/`
+2. Verifica que `manifest.json` tiene el campo `browser_action` correctamente
+3. Revisa que las imágenes en `skin/button.png` existan
+
+### Errores de carga de scripts
+
+**Error:** "Failed to load script: ..."
+
+**Solución:**
+1. Verifica que todos los archivos JS estén en `content/`
+2. Revisa la política CSP en `manifest.json`
+3. Asegúrate de que `db-webext.js` se carga antes de `ca-archive.js`
+
+### sql.js no carga
+
+**Error:** "Could not load SQL engine"
+
+**Solución:**
+1. Verifica conexión a internet (se descarga desde CDN)
+2. O descarga sql.js localmente:
+ ```bash
+ cd content/
+ wget https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.js
+ wget https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.wasm
+ ```
+3. Actualiza las rutas en `content/db-webext.js`
+
+## Para Usuarios Finales
+
+### Instalar desde archivo .xpi/.zip
+
+**Firefox:**
+1. Descarga el archivo `.xpi`
+2. Arrastra y suelta en Firefox
+3. Autoriza la instalación
+
+**Chrome:**
+1. Descarga el archivo `.zip`
+2. Descomprime en una carpeta
+3. Sigue los pasos de "Modo desarrollador" arriba
+
+### Instalar desde stores (cuando esté publicado)
+
+**Firefox Add-ons (AMO):**
+- Visita: https://addons.mozilla.org/firefox/addon/ca-archive/
+- Click en "Añadir a Firefox"
+
+**Chrome Web Store:**
+- Visita: [URL de Chrome Web Store]
+- Click en "Añadir a Chrome"
+
+## Desinstalación
+
+### Firefox
+1. `about:addons` > Extensiones
+2. Busca "Classic Add-ons Archive"
+3. Click en "..." > Eliminar
+
+### Chrome
+1. `chrome://extensions/`
+2. Busca la extensión
+3. Click en "Eliminar"
+
+## Archivos Necesarios
+
+Archivos mínimos para que funcione la extensión:
+
+```
+ca-archive/
+├── manifest.json ← REQUERIDO
+├── background.js ← REQUERIDO
+├── content/
+│ ├── ca-archive.html ← REQUERIDO
+│ ├── ca-archive.js ← REQUERIDO
+│ ├── db-webext.js ← REQUERIDO
+│ ├── db/
+│ │ └── ca-archive-19030501.sqlite ← REQUERIDO
+│ ├── addon.js
+│ ├── list.js
+│ ├── versions.js
+│ ├── tcloud.js
+│ ├── about.js
+│ └── epl.js
+└── skin/
+ ├── logo.png ← REQUERIDO
+ ├── button.png ← REQUERIDO
+ ├── ca-archive.css ← REQUERIDO
+ └── ...
+```
+
+## Siguientes Pasos
+
+Una vez instalada y funcionando:
+
+1. 📖 Lee [MIGRATION.md](MIGRATION.md) para entender los cambios
+2. 🔧 Si eres desarrollador, revisa la arquitectura modernizada
+3. 🐛 Reporta bugs en GitHub Issues
+4. 🌟 Si te gusta, deja una valoración
+
+## Soporte
+
+- 📝 Documentación completa: [MIGRATION.md](MIGRATION.md)
+- 🐛 Reportar problemas: https://github.com/JustOff/ca-archive/issues
+- 💬 Discusiones: https://github.com/JustOff/ca-archive/discussions
diff --git a/MIGRATION.md b/MIGRATION.md
new file mode 100644
index 0000000..9b1e513
--- /dev/null
+++ b/MIGRATION.md
@@ -0,0 +1,237 @@
+# Migración a WebExtensions (Versión 3.0)
+
+## Resumen de cambios
+
+La extensión Classic Add-ons Archive ha sido modernizada desde el sistema legacy XUL/XPCOM a WebExtensions para ser compatible con navegadores modernos Firefox (57+) y Chrome.
+
+## Cambios principales
+
+### 1. Sistema de manifiesto
+
+**ANTES (Legacy):**
+- `install.rdf` - Manifiesto XML
+- `chrome.manifest` - Registro de recursos chrome://
+- `bootstrap.js` - Script de arranque con XPCOM
+
+**AHORA (WebExtensions):**
+- `manifest.json` - Manifiesto estándar WebExtensions (Manifest V2)
+- `background.js` - Script de fondo con APIs modernas
+
+### 2. Protocolo de navegación
+
+**ANTES:**
+```
+caa:list
+caa:addon/some-addon
+caa:about
+```
+
+**AHORA:**
+```
+chrome-extension://.../content/ca-archive.html#list
+chrome-extension://.../content/ca-archive.html#addon/some-addon
+chrome-extension://.../content/ca-archive.html#about
+```
+
+La navegación ahora usa hash (#) en lugar de un protocolo personalizado.
+
+### 3. Acceso a recursos
+
+**ANTES:**
+```html
+
+
+```
+
+**Para producción:** Descargar sql.js localmente y actualizar las rutas en `db-webext.js`.
+
+### Debugging
+
+**Firefox:**
+- `about:debugging` > Inspeccionar
+- Console del navegador: `Ctrl+Shift+J`
+
+**Chrome:**
+- `chrome://extensions/` > Detalles > Inspeccionar vistas: background page
+- DevTools: `F12`
+
+### Testing
+
+1. Abrir la extensión
+2. Verificar que la base de datos se carga correctamente
+3. Probar navegación: listados, búsquedas, detalles de addons
+4. Verificar que las descargas funcionan
+
+## Limitaciones conocidas
+
+### WebExtensions vs Legacy
+
+1. **Multi-proceso (e10s):** Ahora sólo funciona con e10s activado
+2. **Protocolo personalizado:** Ya no disponible, usa rutas de extensión
+3. **Modificación de AMO pages:** No puede inyectar hints en addons.mozilla.org
+4. **Barra de herramientas:** Botón en ubicación fija, no personalizable
+5. **Storage:** Base de datos limitada por cuota de storage del navegador
+
+### Tamaño de base de datos
+
+Chrome/Firefox tienen límites de storage:
+- Chrome: ~10MB en `storage.local` (puede ampliarse con `unlimitedStorage`)
+- Firefox: Sin límite práctico en `storage.local`
+
+Si la base de datos es muy grande (>10MB), considerar:
+1. Agregar permiso `unlimitedStorage` en manifest.json
+2. Usar chunks/compresión
+3. Almacenar en IndexedDB
+
+## Migración de datos de usuario
+
+La nueva versión NO migra automáticamente datos de la versión legacy porque:
+
+1. Las APIs de storage son completamente diferentes
+2. La base de datos se descarga nueva en cada instalación
+3. No hay configuraciones de usuario persistentes
+
+## Próximos pasos
+
+### Para publicar en stores
+
+1. **Firefox Add-ons (AMO):**
+ - Crear cuenta en addons.mozilla.org
+ - Subir archivo .zip
+ - Esperar revisión
+
+2. **Chrome Web Store:**
+ - Crear cuenta de desarrollador ($5 USD único)
+ - Subir archivo .zip
+ - Completar listing
+
+### Mejoras futuras
+
+- [ ] Migrar a Manifest V3 (cuando Firefox tenga mejor soporte)
+- [ ] Offline-first: cachear más contenido
+- [ ] Sincronización de favoritos/bookmarks
+- [ ] Dark mode
+- [ ] Búsqueda mejorada con índices
+
+## Soporte
+
+- GitHub: https://github.com/JustOff/ca-archive/
+- Issues: https://github.com/JustOff/ca-archive/issues
+
+## Licencia
+
+La extensión continúa bajo Mozilla Public License 2.0 (MPL-2.0).
diff --git a/README-v3.md b/README-v3.md
new file mode 100644
index 0000000..519a3f1
--- /dev/null
+++ b/README-v3.md
@@ -0,0 +1,287 @@
+# Classic Add-ons Archive v3.0 - WebExtensions Edition
+
+[](https://opensource.org/licenses/MPL-2.0)
+[](https://www.mozilla.org/firefox/)
+[](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)
diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md
new file mode 100644
index 0000000..c618ae0
--- /dev/null
+++ b/TROUBLESHOOTING.md
@@ -0,0 +1,544 @@
+# Guía de Solución de Problemas (Troubleshooting)
+
+Esta guía te ayudará a resolver problemas comunes al usar Classic Add-ons Archive v3.0.
+
+## 📋 Índice
+
+1. [Problemas de Instalación](#problemas-de-instalación)
+2. [Problemas con la Base de Datos](#problemas-con-la-base-de-datos)
+3. [Problemas de Navegación](#problemas-de-navegación)
+4. [Problemas de Rendimiento](#problemas-de-rendimiento)
+5. [Errores en la Consola](#errores-en-la-consola)
+6. [Incompatibilidades](#incompatibilidades)
+7. [Obtener Ayuda](#obtener-ayuda)
+
+---
+
+## Problemas de Instalación
+
+### El icono de la extensión no aparece
+
+**Síntomas:**
+- No veo el icono en la barra de herramientas
+
+**Soluciones:**
+
+1. **Recargar la extensión:**
+ - Firefox: `about:debugging` > Click en "Recargar"
+ - Chrome: `chrome://extensions/` > Click en el icono de recargar ↻
+
+2. **Verificar que está habilitada:**
+ - Firefox: `about:addons` > Extensiones > Buscar "Classic Add-ons Archive"
+ - Chrome: `chrome://extensions/` > Buscar la extensión y verificar que el toggle está activado
+
+3. **Verificar manifest.json:**
+ ```bash
+ cat manifest.json | grep -A 5 browser_action
+ ```
+ Debe existir la sección `browser_action` con iconos válidos.
+
+### Error al cargar la extensión
+
+**Error:** "There was an error during installation"
+
+**Causas comunes:**
+- `manifest.json` inválido
+- Archivos requeridos faltantes
+- Permisos incorrectos
+
+**Soluciones:**
+
+1. **Validar el manifest:**
+ ```bash
+ # Instalar web-ext si no lo tienes
+ npm install -g web-ext
+
+ # Validar
+ web-ext lint
+ ```
+
+2. **Verificar archivos requeridos:**
+ ```bash
+ ls -la manifest.json background.js
+ ls -la content/ca-archive.html content/ca-archive.js content/db-webext.js
+ ls -la skin/logo.png skin/button.png
+ ```
+
+3. **Verificar sintaxis JSON:**
+ - Usar herramienta online: https://jsonlint.com/
+ - O con python:
+ ```bash
+ python3 -m json.tool manifest.json > /dev/null
+ ```
+
+### Firefox: "This add-on could not be installed because it appears to be corrupt"
+
+**Solución:**
+
+1. Reconstruir el paquete:
+ ```bash
+ ./build.sh
+ ```
+
+2. Verificar integridad:
+ ```bash
+ unzip -t dist/ca-archive-3.0.0.xpi
+ ```
+
+3. Si persiste, cargar sin empaquetar:
+ - `about:debugging` > Cargar complemento temporal
+ - Seleccionar `manifest.json` directamente
+
+---
+
+## Problemas con la Base de Datos
+
+### "Loading database for the first time" se queda cargando
+
+**Síntomas:**
+- Mensaje de carga de DB sin terminar
+- Página en blanco
+
+**Causas:**
+- Base de datos muy grande
+- Falta archivo SQLite
+- Error de red (si carga desde CDN)
+
+**Soluciones:**
+
+1. **Verificar que existe el archivo DB:**
+ ```bash
+ ls -lh content/db/*.sqlite
+ ```
+
+2. **Verificar tamaño de la DB:**
+ ```bash
+ du -h content/db/*.sqlite
+ ```
+ Si es >50MB, puede tardar en el primer acceso.
+
+3. **Revisar la consola del navegador** (`F12` > Console):
+ - Buscar errores relacionados con fetch o sql.js
+
+4. **Limpiar storage y reintentar:**
+ ```javascript
+ // En la consola del navegador
+ browser.storage.local.clear()
+ // o en Chrome:
+ chrome.storage.local.clear()
+ ```
+
+5. **Verificar permisos del archivo:**
+ ```bash
+ chmod 644 content/db/*.sqlite
+ ```
+
+### Error: "Could not load SQL engine"
+
+**Causa:** sql.js no se pudo cargar
+
+**Soluciones:**
+
+1. **Verificar conexión a internet** (si usa CDN)
+
+2. **Descargar sql.js localmente:**
+ ```bash
+ cd content/
+ wget https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.js
+ wget https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.wasm
+ ```
+
+3. **Actualizar rutas en `db-webext.js`:**
+ ```javascript
+ // Cambiar:
+ locateFile: file => `https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/${file}`
+
+ // Por:
+ locateFile: file => browser.runtime.getURL(`content/${file}`)
+ ```
+
+4. **Agregar archivos a `web_accessible_resources` en manifest.json:**
+ ```json
+ "web_accessible_resources": [
+ "content/*.wasm",
+ "content/sql-wasm.js"
+ ]
+ ```
+
+### Error: "Database has just been updated, not ready or corrupted!"
+
+**Causa:** Archivo SQLite corrupto o inaccesible
+
+**Soluciones:**
+
+1. **Verificar integridad de la DB:**
+ ```bash
+ sqlite3 content/db/ca-archive-*.sqlite "PRAGMA integrity_check;"
+ ```
+ Debe retornar "ok"
+
+2. **Re-descargar la base de datos:**
+ - Si tienes repositorio Git: `git checkout content/db/*.sqlite`
+ - O descargar manualmente desde releases
+
+3. **Permisos de lectura:**
+ ```bash
+ chmod 644 content/db/*.sqlite
+ ```
+
+---
+
+## Problemas de Navegación
+
+### Los enlaces no funcionan
+
+**Síntomas:**
+- Click en categoría/addon no hace nada
+- URL no cambia
+- Página en blanco
+
+**Soluciones:**
+
+1. **Verificar hash routing:**
+ - La URL debe ser: `moz-extension://[id]/content/ca-archive.html#list`
+ - No debe ser: `caa:list` (eso es legacy)
+
+2. **Revisar consola JavaScript** (`F12`):
+ - Buscar errores en `ca-archive.js`
+
+3. **Verificar que los módulos se cargan:**
+ ```javascript
+ // En la consola del navegador
+ console.log(typeof List, typeof Addon, typeof DB);
+ // Debe mostrar los tipos de objeto/function
+ ```
+
+4. **Limpiar caché del navegador:**
+ - Firefox: `Ctrl+Shift+Del` > Marcar "Caché"
+ - Chrome: `Ctrl+Shift+Del` > "Cached images and files"
+
+### Búsqueda no funciona
+
+**Síntomas:**
+- Campo de búsqueda no responde
+- No muestra resultados
+
+**Soluciones:**
+
+1. **Verificar que la DB está cargada:**
+ - Debe haber completado la carga inicial
+ - Revisar que no hay mensajes de error en consola
+
+2. **Verificar el formulario:**
+ ```html
+