# Estado del Proyecto - Classic Add-ons Archive v3.0

**Fecha:** 8 de febrero de 2026  
**Versión:** 3.0.0  
**Estado:** ✅ Modernizado a WebExtensions Manifest v2

---

## ✅ Completado

### Migración a WebExtensions
- ✅ Manifest v2 creado (`manifest.json`)
- ✅ Background script modernizado (`background.js`)
- ✅ Base de datos migrada a sql.js (`content/db-webext.js`)
- ✅ HTML/JS actualizados (rutas relativas, hash routing)
- ✅ Validación web-ext: 0 errores

### Sistema de Firma
- ✅ Scripts de firma implementados (`build.sh`, `scripts/generate-keys.sh`)
- ✅ Soporte para AMO (Firefox) con JWT
- ✅ Soporte para Chrome CRX con RSA keys
- ✅ web-ext instalado localmente (no requiere global)

### Documentación
- ✅ [QUICK-START.md](QUICK-START.md) - Guía rápida de instalación
- ✅ [INSTALL.md](INSTALL.md) - Instalación detallada
- ✅ [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - Problemas conocidos (Firefox sin firma, Chrome Manifest v2)
- ✅ [SIGNING.md](SIGNING.md) - Sistema de firma AMO/Chrome
- ✅ [MIGRATION.md](MIGRATION.md) - Cambios desde v2.x
- ✅ [README.md](README.md) - Actualizado con info v3.0

---

## ⚠️ Problemas Actuales

### 1. Firefox: No instala sin firma (RESUELTO EN DOCUMENTACIÓN)

**Problema:**
- Firefox Release NO permite deshabilitar `xpinstall.signatures.required`
- Incluso con el flag en `false`, sigue requiriendo firma

**Soluciones documentadas:**
- ✅ **Opción 1 (Recomendada):** Firefox Developer Edition o Nightly
  - Descargar: https://www.mozilla.org/firefox/developer/
  - Permite `xpinstall.signatures.required=false`
  - Instalación permanente sin necesidad de AMO

- ✅ **Opción 2:** Carga temporal
  - `about:debugging` → "Cargar complemento temporal"
  - Se borra al cerrar Firefox, pero funciona inmediatamente

- ✅ **Opción 3:** Firma con AMO (para distribución)
  - Requiere credenciales reales de AMO (ver siguiente sección)
  - `./build.sh --sign` genera `.xpi` firmado

**Documentación:** [TROUBLESHOOTING.md#firefox](TROUBLESHOOTING.md#firefox-add-on-could-not-be-installed-because-it-is-not-signed-sin-poder-deshabilitar-firma)

---

### 2. Firma AMO: Requiere credenciales reales (PENDIENTE USUARIO)

**Estado actual:**
- ❌ Archivo `private-keys/firefox-amo-credentials.json` tiene credenciales de ejemplo
- ❌ Error al firmar: "Unknown JWT iss (issuer)" - Status 401

**Motivo:**
Las credenciales de ejemplo NO funcionan. Valores actuales:
```json
{
  "apiKey": "user:12345678:123",        ← ❌ Ejemplo, no válido
  "apiSecret": "1234567890abcdef...",   ← ❌ Ejemplo, no válido
}
```

**Acción requerida:**
1. Obtener credenciales reales de AMO:
   - https://addons.mozilla.org/developers/addon/api/key/
   - Generar nuevo par de credenciales
   - Copiar "JWT issuer" (apiKey) y "JWT secret" (apiSecret)

2. Actualizar archivo:
   ```bash
   nano private-keys/firefox-amo-credentials.json
   ```
   Reemplazar con tus credenciales reales

3. Volver a firmar:
   ```bash
   ./build.sh --sign
   ```

**Documentación:** [SIGNING.md#firefox](SIGNING.md#-paso-2-configurar-credenciales-de-firefox-amo)

---

### 3. Chrome: Manifest v2 bloqueado (RESUELTO EN DOCUMENTACIÓN)

**Problema:**
- Chrome 127+ (junio 2024) bloqueó Manifest v2
- Esta extensión usa Manifest v2 (necesario para sql.js con `'unsafe-eval'`)
- Error: "Manifest version 2 is deprecated/not supported"

**Estado de navegadores (2026):**
| Navegador | Estado | Solución |
|-----------|--------|----------|
| Chrome 127+ | ❌ Bloqueado | Usa Firefox, Edge o Brave |
| Edge | ✅ Funciona | Modo desarrollador |
| Brave | ✅ Funciona | Modo desarrollador |
| Firefox | ✅ Completo | Soporte Manifest v2 indefinido |

**Migración a Manifest v3:**
- ❌ No implementada (requiere reescritura significativa)
- ⚠️ Incompatibilidad: sql.js requiere `'unsafe-eval'` (prohibido en v3)
- 💡 Solución futura: Migrar a IndexedDB nativa en lugar de sql.js

**Documentación:** [TROUBLESHOOTING.md#chrome](TROUBLESHOOTING.md#chrome-manifest-version-2-is-deprecated-o-not-supported)

---

## 🎯 Recomendaciones de Instalación

### Para Usuarios Finales

**Mejor opción:** Firefox Developer Edition
```bash
1. Descargar: https://www.mozilla.org/firefox/developer/
2. about:config → xpinstall.signatures.required → false
3. ./build.sh
4. Arrastra dist/ca-archive-3.0.0.xpi a Firefox
```
✅ Instalación permanente sin necesidad de firma

**Alternativa rápida:** Carga temporal en Firefox
```bash
1. about:debugging#/runtime/this-firefox
2. "Cargar complemento temporal"
3. Selecciona manifest.json
```
⚠️ Se desinstala al cerrar Firefox

**Para Chrome:** No compatible (usa Firefox, Edge o Brave)

---

### Para Desarrolladores

**Testing local:**
```bash
# Carga temporal en Firefox
about:debugging → manifest.json

# O modo desarrollador en Edge/Brave
edge://extensions/ → "Cargar extensión sin empaquetar"
```

**Construcción:**
```bash
# Empaquetar sin firma
./build.sh

# Empaquetar con firma (requiere credenciales AMO reales)
./build.sh --sign
```

**Validación:**
```bash
# Lint con web-ext
npm run lint

# Verificar sintaxis manifest
python3 -m json.tool manifest.json
```

---

## 📦 Archivos Generados

### Build sin firma (`./build.sh`)
```
dist/
├── ca-archive-3.0.0.xpi       # Firefox (sin firma)
└── ca-archive-3.0.0.zip       # Chrome/Edge/Brave (sin firma)
```

### Build con firma (`./build.sh --sign`)
```
dist/
├── ca-archive-3.0.0-signed.xpi    # Firefox firmado (AMO)
├── ca-archive-3.0.0.crx            # Chrome firmado (CRX)
├── firefox-sign.log                # Log de firma Firefox
└── chrome-sign.log                 # Log de firma Chrome
```

---

## 🔑 Archivos de Claves (Privados)

```
private-keys/
├── chrome-extension.pem                # Clave RSA privada Chrome
├── chrome-extension-id.txt             # Extension ID calculado
└── firefox-amo-credentials.json        # Credenciales AMO
```

⚠️ **NUNCA** subir estos archivos a Git (ya están en `.gitignore`)

---

## 📊 Estadísticas del Proyecto

- **Líneas de código:** ~2500 (sin contar DB)
- **Archivos creados/modificados:** 20+
- **Documentación:** 7 archivos Markdown
- **Scripts:** 3 bash scripts + npm scripts
- **Base de datos:** ca-archive-19030501.sqlite (~50MB)
- **Addons catalogados:** 19,450 extensiones
- **Versiones totales:** 93,598 versiones

---

## 🚀 Próximos Pasos

### Inmediatos

1. **Instalar en Firefox Developer:**
   - [ ] Descargar Firefox Developer Edition
   - [ ] Configurar `xpinstall.signatures.required=false`
   - [ ] Instalar extensión con `./build.sh`

2. **Firmar con AMO (opcional, para distribución):**
   - [ ] Obtener credenciales reales de AMO
   - [ ] Actualizar `private-keys/firefox-amo-credentials.json`
   - [ ] Ejecutar `./build.sh --sign`
   - [ ] Distribuir `.xpi` firmado

### Futuro

- [ ] Considerar migración a Manifest v3 cuando Firefox lo requiera
- [ ] Evaluar migrar de sql.js a IndexedDB nativa (eliminar `'unsafe-eval'`)
- [ ] Publicar en AMO (Firefox Add-ons Store)
- [ ] Actualizar base de datos con nuevos addons (si aplica)
- [ ] Agregar tests automatizados
- [ ] CI/CD con GitHub Actions

---

## 📚 Documentación Completa

| Archivo | Propósito |
|---------|-----------|
| [QUICK-START.md](QUICK-START.md) | ⚡ Instalación rápida por navegador |
| [INSTALL.md](INSTALL.md) | 📦 Guía de instalación completa |
| [TROUBLESHOOTING.md](TROUBLESHOOTING.md) | 🐛 Problemas conocidos y soluciones |
| [SIGNING.md](SIGNING.md) | 🔐 Sistema de firma AMO/Chrome |
| [MIGRATION.md](MIGRATION.md) | 📖 Cambios desde v2.x legacy |
| [README.md](README.md) | 📄 Información general del proyecto |
| [STATUS.md](STATUS.md) | 📊 Este archivo - estado del proyecto |

---

## 🆘 Soporte

**Problemas documentados:**
- Firefox sin firma → [TROUBLESHOOTING.md](TROUBLESHOOTING.md#firefox-add-on-could-not-be-installed-because-it-is-not-signed-sin-poder-deshabilitar-firma)
- Chrome Manifest v2 → [TROUBLESHOOTING.md](TROUBLESHOOTING.md#chrome-manifest-version-2-is-deprecated-o-not-supported)
- Firma AMO 401 → [SIGNING.md](SIGNING.md#error-unknown-jwt-iss-issuer---status-401)
- Base de datos no carga → [TROUBLESHOOTING.md](TROUBLESHOOTING.md#loading-database-for-the-first-time-se-queda-cargando)

**GitHub:**
- Issues: https://github.com/JustOff/ca-archive/issues
- Discusiones: https://github.com/JustOff/ca-archive/discussions

---

**Última actualización:** 8 de febrero de 2026  
**Autor:** Classic Add-ons Archive Team  
**Licencia:** MPL 2.0
