# 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).