Reescalado HD, ficha reorganizada y mejoras del lector

- Reescalado HD con Real-ESRGAN (ncnn-vulkan, GPU por /dev/dri): cola persistente,
  todo lo pendiente, un rango o capítulos elegidos en la lista, con estimación de tiempo.
  La versión HD va a <carpeta>/.hd/ sin tocar el original; marca HD en la lista de
  capítulos y casilla "Versión HD" en el lector.
- Imagen Debian slim (glibc + Mesa Vulkan + cwebp); compose con /dev/dri y RENDER_GID.
- Ficha: acciones principales + menú ⋯, panel "Biblioteca local" (copia local y HD),
  idioma junto a la lista de capítulos.
- Lector: la barra de progreso avanza de derecha a izquierda en der → izq; botón rápido
  páginas ⇄ vertical; en vertical "Ajustar alto" y "Separar páginas" para mangas.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-31 10:51:29 -06:00
co-authored by Claude Opus 5.5
parent 9e9139f43a
commit bc84a9f6fe
10 changed files with 645 additions and 64 deletions
+12 -2
View File
@@ -22,6 +22,13 @@ Lector web de manga autoalojado, con las dos fuentes de
o vertical. Modo, ajuste y dirección se recuerdan por manga (por defecto: manhwa/manhua en
vertical, manga por página de derecha a izquierda). Zoom con pellizco, doble toque en el centro,
Ctrl+rueda o + / − / 0.
- **Reescalado HD**: en la ficha de un manga descargado, "Reescalar a HD" pasa sus capítulos por
Real-ESRGAN (`realesr-animevideov3` ×2, en la GPU por Vulkan) y guarda la versión HD en
`<Título>/.hd/` (carpeta oculta: el CBZ original no se toca y Kavita/Komga no ven duplicados).
Con el manga marcado, los capítulos que se descarguen después también se reescalan. La lista de
capítulos marca **HD**, el lector usa la versión HD (se puede desactivar en sus ajustes) y desde
allí también se reescala un capítulo suelto. En una Intel HD 630 tarda ~13 s por página y cada
página ocupa ~2,5× más (WebP calidad 85).
- **Estadísticas**: rachas, capítulos y páginas por semana, calendario de actividad, géneros
favoritos y lo más leído.
- Las imágenes pasan por el servidor (`/api/img`), solo con URLs firmadas por él (clave en `data/secret`).
@@ -34,8 +41,8 @@ docker compose up -d --build
# http://<ip-del-servidor>:3352
```
El contenedor no depende del sistema operativo: imagen Node fijada (`node:24.22.2-alpine3.24`),
sin dependencias npm, y todo lo propio de la máquina está en `.env` (ver `.env.example`).
El contenedor no depende del sistema operativo: imagen Node fijada (`node:24.22.2-trixie-slim`,
con Mesa Vulkan y Real-ESRGAN verificado por SHA-256), sin dependencias npm, y todo lo propio de la máquina está en `.env` (ver `.env.example`).
Sin `.env` arranca igual: puerto 3352 en todas las interfaces y descargas en `./mangas`.
El primer usuario puede registrarse siempre; después el registro queda cerrado salvo
@@ -59,6 +66,9 @@ id -u; id -g # si no son 1000, ponlos en PUID/PGID del .env
docker compose up -d --build
```
Para el reescalado HD el host necesita `/dev/dri` (GPU Intel/AMD con Mesa) y `RENDER_GID` en `.env`
con el grupo `render`. Sin GPU, quita `devices`/`group_add` del compose: todo lo demás funciona igual.
Si el usuario del host no coincide con PUID/PGID, el contenedor no arranca y el log dice
exactamente qué `chown` hacer. Si la carpeta de mangas no existe, Docker la crea como root:
créala antes (`mkdir -p` con tu usuario) para que las descargas funcionen.