# 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
