6.4 KiB
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 XMLchrome.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:
<link href="chrome://ca-archive/skin/ca-archive.css">
<script src="chrome://ca-archive/content/ca-archive.js">
AHORA:
<link href="../skin/ca-archive.css">
<script src="ca-archive.js">
Todos los recursos usan rutas relativas.
4. Base de datos SQLite
ANTES:
- Acceso directo a SQLite usando
mozIStorageService - Almacenamiento en perfil del usuario
AHORA:
- Usa
sql.js(SQLite compilado a JavaScript/WebAssembly) - Base de datos almacenada en
browser.storage.local - Primera carga descarga y cachea la DB
5. APIs reemplazadas
| Legacy API | WebExtensions API |
|---|---|
Components.utils |
Scripts estándar ES6 |
Services.prefs |
browser.storage.local |
Services.wm |
browser.tabs y browser.windows |
mozIStorageService |
sql.js |
XPCOMUtils |
APIs nativas del navegador |
Cu.import() |
import / carga dinámica de scripts |
6. Interfaz de usuario
ANTES:
- Botón insertado directamente en la barra de herramientas
- Menú en Tools
AHORA:
browser.browserAction- Botón estándar en la barra- Sin menú en Tools (no disponible en WebExtensions)
Estructura de archivos
Archivos nuevos
manifest.json- Manifiesto WebExtensionsbackground.js- Script de fondocontent/db-webext.js- Wrapper de base de datos moderno
Archivos modificados
content/ca-archive.html- Rutas relativas, navegación por hashcontent/ca-archive.js- Sin Components, carga dinámica de módulos
Archivos obsoletos (ya no se usan)
install.rdf- Reemplazado por manifest.jsonchrome.manifest- Ya no necesariobootstrap.js- Reemplazado por background.jsupdate.xml- Actualizaciones ahora vía Firefox/Chrome stores
Compatibilidad
Navegadores soportados
| Navegador | Versión mínima | Notas |
|---|---|---|
| Firefox | 57+ (Quantum) | Soporte completo |
| Chrome | 80+ | Requiere manifest V2 |
| Edge (Chromium) | 80+ | Compatible con Chrome |
| Brave | 1.20+ | Compatible con Chrome |
| Vivaldi | 3.0+ | Compatible con Chrome |
Navegadores NO soportados
Los siguientes navegadores que usaban la versión legacy ya no son compatibles con la versión WebExtensions:
- Firefox ESR 45-52
- Firefox 45-56
- Pale Moon
- Basilisk
- Waterfox Classic (pre-Current)
- SeaMonkey
Nota: Para estos navegadores, seguir usando la versión 2.x legacy.
Instalación
Firefox
-
Desde archivo local:
# Empaquetar la extensión cd /home/ale/projects/firefox/ca-archive zip -r ca-archive-3.0.zip * -x ".*" -x "*.md" -x "update.xml" -x "install.rdf" -x "chrome.manifest" -x "bootstrap.js" -
En Firefox, ir a
about:debugging> Este Firefox > Cargar extensión temporal -
Seleccionar el archivo
manifest.jsono el archivo.zip
Chrome/Edge/Brave
- Ir a
chrome://extensions/ - Activar "Modo de desarrollador"
- Click en "Cargar extensión sin empaquetar"
- Seleccionar la carpeta del proyecto
Desarrollo
Dependencias
La extensión requiere sql.js para el acceso a la base de datos SQLite:
<!-- Cargado automáticamente desde CDN en db-webext.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.js"></script>
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
- Abrir la extensión
- Verificar que la base de datos se carga correctamente
- Probar navegación: listados, búsquedas, detalles de addons
- Verificar que las descargas funcionan
Limitaciones conocidas
WebExtensions vs Legacy
- Multi-proceso (e10s): Ahora sólo funciona con e10s activado
- Protocolo personalizado: Ya no disponible, usa rutas de extensión
- Modificación de AMO pages: No puede inyectar hints en addons.mozilla.org
- Barra de herramientas: Botón en ubicación fija, no personalizable
- 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 conunlimitedStorage) - Firefox: Sin límite práctico en
storage.local
Si la base de datos es muy grande (>10MB), considerar:
- Agregar permiso
unlimitedStorageen manifest.json - Usar chunks/compresión
- Almacenar en IndexedDB
Migración de datos de usuario
La nueva versión NO migra automáticamente datos de la versión legacy porque:
- Las APIs de storage son completamente diferentes
- La base de datos se descarga nueva en cada instalación
- No hay configuraciones de usuario persistentes
Próximos pasos
Para publicar en stores
-
Firefox Add-ons (AMO):
- Crear cuenta en addons.mozilla.org
- Subir archivo .zip
- Esperar revisión
-
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
Licencia
La extensión continúa bajo Mozilla Public License 2.0 (MPL-2.0).