{
  "generatedAt": "2026-10-12T22:33:46.918Z",
  "current": "3.0",
  "versions": [
    {
      "id": "3.0",
      "name": "Comunidad y Studio en el bolsillo",
      "date": "2026-10-13",
      "tagline": "100 funciones nuevas: reseñas, listas, peticiones, logros, avisos y el panel de administración completo dentro de la app.",
      "commits": [
        {
          "hash": "2db2a1d",
          "date": "2026-10-13T00:25:37+02:00",
          "subject": "Comunidad, panel de administración en la app y 100 funciones nuevas",
          "bullets": [
            "Servidor: reseñas, listas personalizadas, peticiones con votos, avisos",
            "in-app (estrenos, episodios, respuestas), logros, racha, estadísticas",
            "personales, seguir actores, «No me interesa», reportes, notas privadas,",
            "exportar datos y Sorpréndeme con filtros. Studio: peticiones, reportes,",
            "avisos a usuarios, moderación, estadísticas avanzadas, «viendo ahora»,",
            "calidad del catálogo, duplicados, CSV y caducidad del aviso global.",
            "Web: páginas y paneles para todo lo anterior.",
            "iOS: panel de administración nativo completo (resumen con gráficas,",
            "biblioteca, editor, cola, subida desde el iPhone, usuarios, invitaciones,",
            "colecciones, ajustes, mantenimiento, actividad, Telegram…), funciones de",
            "comunidad, gestión de perfiles con foto, temporizador para dormir,",
            "avance en vídeo, Spotlight y acciones rápidas del icono."
          ]
        },
        {
          "hash": "6db25b5",
          "date": "2026-10-13T00:28:52+02:00",
          "subject": "Lista de las 100 funcionalidades y reproductor web con ?t=segundos",
          "bullets": []
        },
        {
          "hash": "98e58b0",
          "date": "2026-10-13T00:29:38+02:00",
          "subject": "Reproductor web: corrige el nombre de la variable del minuto de inicio",
          "bullets": []
        }
      ],
      "highlights": [
        {
          "emoji": "⭐",
          "title": "Reseñas y opiniones",
          "text": "Estrellas, texto, spoilers ocultos y votos de «Útil»."
        },
        {
          "emoji": "🗂️",
          "title": "Listas propias",
          "text": "Crea listas con emoji y compártelas."
        },
        {
          "emoji": "🙋",
          "title": "Peticiones",
          "text": "Pide lo que falta, vota y recibe aviso cuando llega."
        },
        {
          "emoji": "🏆",
          "title": "Logros y racha",
          "text": "15 logros, racha de días y calendario de actividad."
        },
        {
          "emoji": "🛡️",
          "title": "Studio en la app",
          "text": "Biblioteca, usuarios, subidas, estadísticas y más desde el iPhone."
        },
        {
          "emoji": "📊",
          "title": "Estadísticas avanzadas",
          "text": "Quién está viendo ahora, horas, dispositivos y calidad del catálogo."
        }
      ],
      "fromFeaturesFile": true,
      "features": [
        {
          "n": 1,
          "group": "Usuarios · comunidad",
          "text": "Reseñas con estrellas (1 a 5) y texto en cada ficha",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 2,
          "group": "Usuarios · comunidad",
          "text": "Nota media de la comunidad y reparto de estrellas",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 3,
          "group": "Usuarios · comunidad",
          "text": "Reseñas marcadas como *spoiler* que se ocultan hasta tocarlas",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 4,
          "group": "Usuarios · comunidad",
          "text": "Votar reseñas de otros como «Útil» (las más útiles salen primero)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 5,
          "group": "Usuarios · comunidad",
          "text": "Editar o borrar tu reseña",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 6,
          "group": "Usuarios · comunidad",
          "text": "Listas personalizadas con emoji («Para ver en pareja», «Navidad»…)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 7,
          "group": "Usuarios · comunidad",
          "text": "Añadir o quitar un título de tus listas desde su ficha",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 8,
          "group": "Usuarios · comunidad",
          "text": "Crear una lista nueva directamente desde la ficha",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 9,
          "group": "Usuarios · comunidad",
          "text": "Renombrar y borrar listas",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 10,
          "group": "Usuarios · comunidad",
          "text": "Compartir una lista como texto",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 11,
          "group": "Usuarios · comunidad",
          "text": "Portada de cada lista con mosaico de 4 pósters",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 12,
          "group": "Usuarios · comunidad",
          "text": "Peticiones de películas y series que faltan",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 13,
          "group": "Usuarios · comunidad",
          "text": "Votar las peticiones de los demás",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 14,
          "group": "Usuarios · comunidad",
          "text": "Si alguien ya lo pidió, tu petición se suma como voto",
          "platforms": [
            "S"
          ],
          "version": "3.0"
        },
        {
          "n": 15,
          "group": "Usuarios · comunidad",
          "text": "Estado de cada petición (pendiente, en preparación, disponible, rechazada) con la respuesta del admin",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 16,
          "group": "Usuarios · comunidad",
          "text": "Retirar una petición propia pendiente",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 17,
          "group": "Usuarios · comunidad",
          "text": "Filtros de peticiones (todas, mías, pendientes, disponibles)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 18,
          "group": "Usuarios · comunidad",
          "text": "La petición se marca como cumplida sola cuando se sube ese título",
          "platforms": [
            "S"
          ],
          "version": "3.0"
        },
        {
          "n": 19,
          "group": "Usuarios · avisos",
          "text": "Bandeja de avisos dentro de Capix (campana en la web, «Avisos» en la app)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 20,
          "group": "Usuarios · avisos",
          "text": "Contador de avisos sin leer",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 21,
          "group": "Usuarios · avisos",
          "text": "Aviso automático de cada estreno nuevo",
          "platforms": [
            "S"
          ],
          "version": "3.0"
        },
        {
          "n": 22,
          "group": "Usuarios · avisos",
          "text": "Aviso de episodio nuevo para quien tiene la serie en su lista o la está viendo",
          "platforms": [
            "S"
          ],
          "version": "3.0"
        },
        {
          "n": 23,
          "group": "Usuarios · avisos",
          "text": "Aviso cuando tu petición está disponible o el admin la responde",
          "platforms": [
            "S"
          ],
          "version": "3.0"
        },
        {
          "n": 24,
          "group": "Usuarios · avisos",
          "text": "Aviso cuando el admin arregla un problema que reportaste",
          "platforms": [
            "S"
          ],
          "version": "3.0"
        },
        {
          "n": 25,
          "group": "Usuarios · avisos",
          "text": "Marcar todo como leído y borrar avisos",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 26,
          "group": "Usuarios · avisos",
          "text": "Tocar un aviso abre directamente la ficha",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 27,
          "group": "Usuarios · progreso y estadísticas",
          "text": "15 logros con su barra de progreso (Cinéfilo, Maratón, Noctámbulo, Crítico…)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 28,
          "group": "Usuarios · progreso y estadísticas",
          "text": "Racha de días seguidos viendo Capix y mejor racha",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 29,
          "group": "Usuarios · progreso y estadísticas",
          "text": "Calendario de actividad tipo mapa de calor",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 30,
          "group": "Usuarios · progreso y estadísticas",
          "text": "«Así ves Capix»: tu día favorito, hora habitual, década favorita, mayor maratón, nota media y actores que más ves",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 31,
          "group": "Usuarios · progreso y estadísticas",
          "text": "Gráfica de a qué horas ves Capix",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 32,
          "group": "Usuarios · progreso y estadísticas",
          "text": "Contador de episodios y películas terminados",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 33,
          "group": "Usuarios · progreso y estadísticas",
          "text": "Lista de todo lo que has visto entero",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 34,
          "group": "Usuarios · progreso y estadísticas",
          "text": "Tus valoraciones agrupadas (te encantan, te gustan, no son para ti)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 35,
          "group": "Usuarios · progreso y estadísticas",
          "text": "Todas tus reseñas en un sitio",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 36,
          "group": "Usuarios · personalización",
          "text": "Seguir a actores y directores (desde su página)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 37,
          "group": "Usuarios · personalización",
          "text": "Fila «De la gente que sigues» en el inicio",
          "platforms": [
            "S",
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 38,
          "group": "Usuarios · personalización",
          "text": "«No me interesa»: el título desaparece de tu inicio",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 39,
          "group": "Usuarios · personalización",
          "text": "Lista de títulos ocultos para volver a mostrarlos",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 40,
          "group": "Usuarios · personalización",
          "text": "Notas privadas en cada título",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 41,
          "group": "Usuarios · personalización",
          "text": "Ver todas tus notas",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 42,
          "group": "Usuarios · personalización",
          "text": "«Sorpréndeme» con filtros: película o serie, tiempo disponible, género y solo lo no empezado",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 43,
          "group": "Usuarios · personalización",
          "text": "«Sorpréndeme» nunca propone lo que marcaste como «No me interesa»",
          "platforms": [
            "S"
          ],
          "version": "3.0"
        },
        {
          "n": 44,
          "group": "Usuarios · personalización",
          "text": "Reportar un problema (imagen, audio, subtítulos, desincronizado, datos, vídeo equivocado)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 45,
          "group": "Usuarios · personalización",
          "text": "Reportar desde el propio reproductor guardando el minuto exacto",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 46,
          "group": "Usuarios · personalización",
          "text": "Ver tus reportes y la respuesta del admin",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 47,
          "group": "Usuarios · personalización",
          "text": "Descargar todos tus datos en un archivo",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 48,
          "group": "Usuarios · personalización",
          "text": "Borrar tu historial de búsquedas",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 49,
          "group": "Administración · comunidad",
          "text": "Gestión de peticiones: aceptar, completar o rechazar con un mensaje para el usuario",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 50,
          "group": "Administración · comunidad",
          "text": "Peticiones ordenadas por votos y filtradas por estado",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 51,
          "group": "Administración · comunidad",
          "text": "Buscar la petición en TMDB con un toque",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 52,
          "group": "Administración · comunidad",
          "text": "Gestión de reportes: arreglado o descartado (y reabrir, en la web)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 53,
          "group": "Administración · comunidad",
          "text": "Abrir el vídeo reportado en el minuto exacto",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 54,
          "group": "Administración · comunidad",
          "text": "Enviar un aviso a todos los usuarios",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 55,
          "group": "Administración · comunidad",
          "text": "Enviar un aviso a un usuario concreto",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 56,
          "group": "Administración · comunidad",
          "text": "Historial de avisos enviados con cuántos los han leído",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 57,
          "group": "Administración · comunidad",
          "text": "«Anunciar a todos» un título desde su ficha",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 58,
          "group": "Administración · comunidad",
          "text": "Moderar (borrar) reseñas",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 59,
          "group": "Administración · comunidad",
          "text": "Avisos al equipo cuando llega una petición o un reporte",
          "platforms": [
            "S"
          ],
          "version": "3.0"
        },
        {
          "n": 60,
          "group": "Administración · comunidad",
          "text": "Contadores en el menú del panel: peticiones, reportes y errores de procesado",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 61,
          "group": "Administración · comunidad",
          "text": "Aviso global que caduca solo en la fecha que elijas",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 62,
          "group": "Administración · estadísticas y calidad",
          "text": "Usuarios activos hoy, en 7 días y en 30 días, y altas nuevas",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 63,
          "group": "Administración · estadísticas y calidad",
          "text": "«Viendo ahora»: quién está viendo qué en este momento (en directo)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 64,
          "group": "Administración · estadísticas y calidad",
          "text": "Reproducciones por hora del día",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 65,
          "group": "Administración · estadísticas y calidad",
          "text": "Reproducciones por día de la semana",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 66,
          "group": "Administración · estadísticas y calidad",
          "text": "Reproducciones por dispositivo (web o app de iPhone)",
          "platforms": [
            "S",
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 67,
          "group": "Administración · estadísticas y calidad",
          "text": "Ranking de quién ve más horas",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 68,
          "group": "Administración · estadísticas y calidad",
          "text": "Géneros más vistos (en horas)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 69,
          "group": "Administración · estadísticas y calidad",
          "text": "Lo más buscado en los últimos 30 días",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 70,
          "group": "Administración · estadísticas y calidad",
          "text": "Películas que la gente abandona a medias",
          "platforms": [
            "W"
          ],
          "version": "3.0"
        },
        {
          "n": 71,
          "group": "Administración · estadísticas y calidad",
          "text": "Títulos que nadie ha visto nunca",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 72,
          "group": "Administración · estadísticas y calidad",
          "text": "Exportar usuarios a CSV",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 73,
          "group": "Administración · estadísticas y calidad",
          "text": "Exportar la biblioteca a CSV",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 74,
          "group": "Administración · estadísticas y calidad",
          "text": "Calidad del catálogo: puntuación por título y qué le falta (póster, sinopsis, reparto, tráiler, subtítulos…)",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 75,
          "group": "Administración · estadísticas y calidad",
          "text": "Filtrar el catálogo por el dato que falta",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 76,
          "group": "Administración · estadísticas y calidad",
          "text": "Reidentificar de golpe todos los títulos incompletos",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 77,
          "group": "Administración · estadísticas y calidad",
          "text": "Detección de títulos duplicados",
          "platforms": [
            "W",
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 78,
          "group": "Panel de administración nativo en la app",
          "text": "Capix Studio dentro de la app, con secciones según el rol (admin o editor)",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 79,
          "group": "Panel de administración nativo en la app",
          "text": "Resumen con contadores, gráfica de reproducciones, disco, lo más visto, géneros y actividad",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 80,
          "group": "Panel de administración nativo en la app",
          "text": "Biblioteca con búsqueda y filtros por estado y tipo",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 81,
          "group": "Panel de administración nativo en la app",
          "text": "Deslizar un título para destacarlo u ocultarlo",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 82,
          "group": "Panel de administración nativo en la app",
          "text": "Selección múltiple con acciones en bloque (destacar, ocultar, reidentificar, reprocesar, 1080p, borrar)",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 83,
          "group": "Panel de administración nativo en la app",
          "text": "Editor de fichas (todos los campos, géneros, sinopsis, destacado, oculto)",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 84,
          "group": "Panel de administración nativo en la app",
          "text": "Buscar la ficha correcta en TMDB, Apple o Wikipedia y aplicarla",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 85,
          "group": "Panel de administración nativo en la app",
          "text": "Archivos de cada título: ver, reprocesar o borrar",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 86,
          "group": "Panel de administración nativo en la app",
          "text": "Cola de procesado que se actualiza sola, con reintento de errores",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 87,
          "group": "Panel de administración nativo en la app",
          "text": "Subir vídeos y subtítulos desde el iPhone (por trozos y con reintentos)",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 88,
          "group": "Panel de administración nativo en la app",
          "text": "Escanear la carpeta SFTP desde la app",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 89,
          "group": "Panel de administración nativo en la app",
          "text": "Crear usuarios con contraseña generada y enviar las credenciales",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 90,
          "group": "Panel de administración nativo en la app",
          "text": "Ficha de usuario: rol, activar o desactivar, límite de perfiles, caducidad, notas internas, perfiles, historial y accesos",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 91,
          "group": "Panel de administración nativo en la app",
          "text": "Restablecer contraseña, cerrar sus sesiones u obligarle a cambiarla",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 92,
          "group": "Panel de administración nativo en la app",
          "text": "Invitaciones: crear (con usos y caducidad), copiar, compartir y borrar",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 93,
          "group": "Panel de administración nativo en la app",
          "text": "Colecciones: crear, mostrar u ocultar en el inicio y borrar",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 94,
          "group": "Panel de administración nativo en la app",
          "text": "Ajustes, mantenimiento (espacio por carpeta y herramientas de limpieza), registro de actividad y Telegram (estado, vincular chats, mensaje de prueba, reintentos)",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 95,
          "group": "App de iPhone · extras",
          "text": "Gestionar perfiles: crear, editar, borrar, PIN, perfil infantil, idiomas y siguiente episodio automático",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 96,
          "group": "App de iPhone · extras",
          "text": "Foto de perfil desde la fototeca",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 97,
          "group": "App de iPhone · extras",
          "text": "Temporizador para dormir (15, 30, 45, 60 min o al terminar el vídeo)",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 98,
          "group": "App de iPhone · extras",
          "text": "Saltar la intro automáticamente, recordar la velocidad y elegir el tamaño de los subtítulos",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 99,
          "group": "App de iPhone · extras",
          "text": "Avance en vídeo, sin sonido y en bucle, en la cabecera de cada ficha",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        },
        {
          "n": 100,
          "group": "App de iPhone · extras",
          "text": "Títulos en la búsqueda de Spotlight del iPhone y acciones rápidas al mantener pulsado el icono (Seguir viendo, Buscar, Mi lista, Novedades)",
          "platforms": [
            "A"
          ],
          "version": "3.0"
        }
      ]
    },
    {
      "id": "2.1",
      "name": "Cristal, widgets y Siri",
      "date": "2026-10-12",
      "tagline": "Barra de navegación Liquid Glass, widgets en la pantalla de inicio y control por voz.",
      "commits": [
        {
          "hash": "272f1ce",
          "date": "2026-10-12T23:56:24+02:00",
          "subject": "iOS: barra de cristal, widgets, Siri y avisos de novedades",
          "bullets": [
            "Barra de pestañas flotante estilo Liquid Glass (glassEffect en iOS 26, cristal esmerilado en versiones anteriores) con botón de búsqueda aparte.",
            "Widgets: Seguir viendo (inicio y pantalla de bloqueo) y Novedades, con datos compartidos por App Group.",
            "Siri / Atajos: seguir viendo, buscar, abrir Mi lista y novedades.",
            "Avisos locales de estrenos y episodios nuevos con refresco en segundo plano (las push de APNs requieren cuenta de desarrollador de pago).",
            "Enlaces capix:// para widgets, notificaciones y Siri."
          ]
        }
      ],
      "highlights": [
        {
          "emoji": "🫧",
          "title": "Liquid Glass",
          "text": "Barra flotante de cristal con el material real de iOS 26."
        },
        {
          "emoji": "🧩",
          "title": "Widgets",
          "text": "Seguir viendo y Novedades en la pantalla de inicio y en la de bloqueo."
        },
        {
          "emoji": "🗣️",
          "title": "Siri",
          "text": "«Oye Siri, sigue viendo en Capix» o «qué hay de nuevo en Capix»."
        },
        {
          "emoji": "🔔",
          "title": "Avisos",
          "text": "Notificaciones con póster cuando llega un estreno o un episodio."
        }
      ],
      "features": [
        {
          "group": "App de iPhone",
          "text": "Barra de pestañas flotante Liquid Glass con botón de búsqueda aparte",
          "platforms": [
            "A"
          ],
          "version": "2.1"
        },
        {
          "group": "App de iPhone",
          "text": "Widget «Seguir viendo» (pequeño, mediano y pantalla de bloqueo)",
          "platforms": [
            "A"
          ],
          "version": "2.1"
        },
        {
          "group": "App de iPhone",
          "text": "Widget «Novedades» (mediano y grande)",
          "platforms": [
            "A"
          ],
          "version": "2.1"
        },
        {
          "group": "App de iPhone",
          "text": "Atajos de Siri: seguir viendo, buscar, abrir Mi lista y novedades",
          "platforms": [
            "A"
          ],
          "version": "2.1"
        },
        {
          "group": "App de iPhone",
          "text": "Avisos de estrenos y episodios nuevos con refresco en segundo plano",
          "platforms": [
            "A"
          ],
          "version": "2.1"
        },
        {
          "group": "App de iPhone",
          "text": "Enlaces capix:// para widgets, notificaciones y Siri",
          "platforms": [
            "A"
          ],
          "version": "2.1"
        }
      ]
    },
    {
      "id": "2.0",
      "name": "App nativa para iPhone",
      "date": "2026-10-12",
      "tagline": "Capix se reescribe en Swift para el iPhone: más rápida, más fluida y con reproductor propio.",
      "commits": [
        {
          "hash": "279508f",
          "date": "2026-10-12T22:58:12+02:00",
          "subject": "iOS: compilación automática del .ipa sin firmar para Sideloadly",
          "bullets": [
            "Añade un workflow de GitHub Actions (macOS) que compila la web, sincroniza",
            "Capacitor, genera CapixVideo.ipa sin firmar y lo publica en la release",
            "ios-latest. Incluye el esquema compartido de Xcode que necesita xcodebuild."
          ]
        },
        {
          "hash": "53fedab",
          "date": "2026-10-12T23:42:09+02:00",
          "subject": "iOS: app nativa en SwiftUI (ios-native/)",
          "bullets": [
            "App nueva para iPhone hecha en Swift, conectada a la misma API que la web:",
            "inicio de sesión, perfiles con PIN, portada, filas, Top 10, búsqueda,",
            "novedades, Mi lista, géneros, fichas con temporadas y reparto, y un",
            "reproductor propio (HLS con cookies, subtítulos WebVTT, pistas de audio,",
            "miniaturas en la barra, saltar intro, siguiente episodio, PiP, AirPlay,",
            "pantalla de bloqueo y progreso sincronizado).",
            "El workflow de iOS ahora genera el proyecto con XcodeGen y publica",
            "CapixVideo.ipa (com.capix.video) en la release ios-latest."
          ]
        }
      ],
      "highlights": [
        {
          "emoji": "📱",
          "title": "100 % SwiftUI",
          "text": "App nativa conectada a la misma cuenta, catálogo y progreso que la web."
        },
        {
          "emoji": "🎞️",
          "title": "Reproductor nativo",
          "text": "HLS, audio, subtítulos, miniaturas al arrastrar, saltar intro y siguiente episodio."
        },
        {
          "emoji": "🖼️",
          "title": "Picture-in-Picture y AirPlay",
          "text": "Sigue viendo mientras usas otras apps o mándalo a la tele."
        },
        {
          "emoji": "⚙️",
          "title": "Compilación automática",
          "text": "GitHub compila el .ipa en cada cambio para instalarlo con Sideloadly."
        }
      ],
      "features": [
        {
          "group": "App de iPhone",
          "text": "Inicio de sesión y selector de perfiles con PIN",
          "platforms": [
            "A"
          ],
          "version": "2.0"
        },
        {
          "group": "App de iPhone",
          "text": "Portada rotativa a pantalla completa, filas, Top 10 y «Seguir viendo»",
          "platforms": [
            "A"
          ],
          "version": "2.0"
        },
        {
          "group": "App de iPhone",
          "text": "Fichas con temporadas, episodios, reparto, saga y títulos similares",
          "platforms": [
            "A"
          ],
          "version": "2.0"
        },
        {
          "group": "App de iPhone",
          "text": "Buscar con historial, tendencias y géneros",
          "platforms": [
            "A"
          ],
          "version": "2.0"
        },
        {
          "group": "App de iPhone",
          "text": "Novedades, Mi lista, categorías y páginas de actor",
          "platforms": [
            "A"
          ],
          "version": "2.0"
        },
        {
          "group": "App de iPhone",
          "text": "Reproductor nativo: horizontal automático, doble toque para saltar, pellizcar para rellenar",
          "platforms": [
            "A"
          ],
          "version": "2.0"
        },
        {
          "group": "App de iPhone",
          "text": "Barra de progreso con miniaturas, pistas de audio, subtítulos con sincronía y velocidad",
          "platforms": [
            "A"
          ],
          "version": "2.0"
        },
        {
          "group": "App de iPhone",
          "text": "Picture-in-Picture, AirPlay, bloqueo de pantalla y controles en la pantalla bloqueada",
          "platforms": [
            "A"
          ],
          "version": "2.0"
        },
        {
          "group": "App de iPhone",
          "text": "Progreso sincronizado con la web",
          "platforms": [
            "A",
            "S"
          ],
          "version": "2.0"
        },
        {
          "group": "App de iPhone",
          "text": ".ipa sin firmar compilado por GitHub para Sideloadly",
          "platforms": [
            "A"
          ],
          "version": "2.0"
        }
      ]
    },
    {
      "id": "1.2",
      "name": "Mejora de imagen",
      "date": "2026-10-12",
      "tagline": "Los vídeos de baja resolución se ven nítidos en pantallas grandes.",
      "commits": [
        {
          "hash": "fa91dfc",
          "date": "2026-10-12T17:28:30+02:00",
          "subject": "Mejora de imagen: reescalado en tiempo real y versión 1080p en el servidor",
          "bullets": [
            "Reproductor: «Mejora de imagen» con WebGL (escalado bicúbico Catmull-Rom a la resolución de la pantalla + nitidez adaptativa CAS). Automática en vídeos de menos de 1080p, niveles suave/media/intensa, sin coste de servidor ni datos.",
            "Servidor: versión «1080p mejorada» opcional (reducción de ruido + Lanczos + CAS) como segunda rendición HLS, conservando la original; por título, en bloque o automática para vídeos nuevos. El menú Calidad la muestra como tal."
          ]
        }
      ],
      "highlights": [
        {
          "emoji": "✨",
          "title": "Reescalado en tiempo real",
          "text": "Escalado bicúbico y nitidez adaptativa con WebGL, sin gastar datos ni servidor."
        },
        {
          "emoji": "🖥️",
          "title": "Versión 1080p",
          "text": "Rendición HLS mejorada opcional en el servidor, conservando la original."
        }
      ],
      "features": [
        {
          "group": "Imagen",
          "text": "Mejora de imagen en el reproductor web (WebGL, niveles suave, media e intensa)",
          "platforms": [
            "W"
          ],
          "version": "1.2"
        },
        {
          "group": "Imagen",
          "text": "Versión «1080p mejorada» en el servidor por título, en bloque o automática",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.2"
        }
      ]
    },
    {
      "id": "1.1",
      "name": "Telegram",
      "date": "2026-10-12",
      "tagline": "Manda una película o un episodio a tu bot y aparece sola en la biblioteca.",
      "commits": [
        {
          "hash": "4580cb0",
          "date": "2026-10-12T15:51:20+02:00",
          "subject": "Importación automática desde Telegram",
          "bullets": [
            "Servidor local oficial de la Bot API en Docker (archivos de hasta 2 GB / 4 GB con Premium), arrancado por systemd al guardar las credenciales en el panel.",
            "Bot que descarga lo que le mandas o reenvías, lo identifica, lo convierte y avisa con póster y botón «Ver ahora»; cola, progreso en directo y /estado.",
            "Vinculación de chats con código de un solo uso (privado, grupos y canales).",
            "Página Telegram en Studio con asistente, chats e importaciones en directo.",
            "El parser ignora firmas de canales (@canal, t.me/…, www.…) y el pie del mensaje sirve de título cuando el nombre del archivo no aporta nada."
          ]
        },
        {
          "hash": "44b4a72",
          "date": "2026-10-12T15:51:33+02:00",
          "subject": "README: corrige la sección de Telegram",
          "bullets": []
        },
        {
          "hash": "e08ae53",
          "date": "2026-10-12T16:16:27+02:00",
          "subject": "Series en español, cola de Telegram persistente y avisos agrupados",
          "bullets": [
            "Reconoce episodios con formato «Serie T1 C01», «T4C05», «(T4) (C05)», «[Serie] (T4) (C05)», «T1 E02», «Temporada X Capítulo Y» y «Cap.405».",
            "Reagrupa automáticamente (y desde Mantenimiento) los episodios que entraron como película, sin volver a convertirlos.",
            "La cola de Telegram se guarda en la base de datos y se reanuda tras reiniciar; reintentos automáticos ante fallos pasajeros y botón «Reintentar» en el panel.",
            "Un único mensaje de progreso por tanda y avisos de «listo» agrupados por serie, con reintento ante «Too Many Requests»."
          ]
        },
        {
          "hash": "d2c6bc0",
          "date": "2026-10-12T16:50:36+02:00",
          "subject": "Telegram: recupera importaciones fallidas y limpia fichas vacías",
          "bullets": [
            "«Reintentar» funciona también con importaciones antiguas sin file_id: se recupera reenviando un instante el mensaje original y borrando la copia.",
            "Botón «Reintentar todos los fallidos» y reintentos automáticos más pacientes (4 intentos: 30 s, 90 s y 3 min).",
            "La reparación de series elimina las fichas de película que quedaron vacías."
          ]
        }
      ],
      "highlights": [
        {
          "emoji": "✈️",
          "title": "Importar desde Telegram",
          "text": "Archivos de hasta 2 GB (4 GB con Premium) con el servidor local de la Bot API."
        },
        {
          "emoji": "🔗",
          "title": "Chats vinculados",
          "text": "Código de un solo uso para chats privados, grupos y canales."
        },
        {
          "emoji": "🧠",
          "title": "Series en español",
          "text": "Reconoce «T1 C01», «Temporada X Capítulo Y», «Cap.405» y muchos formatos más."
        },
        {
          "emoji": "🔁",
          "title": "Cola persistente",
          "text": "Las importaciones se reanudan tras reiniciar y se reintentan solas."
        }
      ],
      "features": [
        {
          "group": "Telegram",
          "text": "Importar películas, episodios y subtítulos enviándolos al bot",
          "platforms": [
            "S"
          ],
          "version": "1.1"
        },
        {
          "group": "Telegram",
          "text": "Servidor local de la Bot API en Docker (archivos de hasta 2 GB, 4 GB con Premium)",
          "platforms": [
            "S"
          ],
          "version": "1.1"
        },
        {
          "group": "Telegram",
          "text": "Aviso con póster y botón «Ver ahora» cuando termina la importación",
          "platforms": [
            "S"
          ],
          "version": "1.1"
        },
        {
          "group": "Telegram",
          "text": "Vincular chats privados, grupos y canales con un código de un solo uso",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.1"
        },
        {
          "group": "Telegram",
          "text": "Título en el pie del mensaje cuando el nombre del archivo no dice nada",
          "platforms": [
            "S"
          ],
          "version": "1.1"
        },
        {
          "group": "Telegram",
          "text": "Comandos del bot: /estado, /ultimas, /ayuda y /desvincular",
          "platforms": [
            "S"
          ],
          "version": "1.1"
        },
        {
          "group": "Telegram",
          "text": "Reconoce episodios en formatos españoles (T1 C01, Temporada X Capítulo Y, Cap.405…)",
          "platforms": [
            "S"
          ],
          "version": "1.1"
        },
        {
          "group": "Telegram",
          "text": "Reagrupa episodios que entraron como película sin volver a convertirlos",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.1"
        },
        {
          "group": "Telegram",
          "text": "Cola guardada en la base de datos que se reanuda tras reiniciar",
          "platforms": [
            "S"
          ],
          "version": "1.1"
        },
        {
          "group": "Telegram",
          "text": "Reintentos automáticos y botón «Reintentar todos los fallidos»",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.1"
        }
      ]
    },
    {
      "id": "1.0",
      "name": "El estreno",
      "date": "2026-10-12",
      "tagline": "Capix Video nace como plataforma de streaming propia: web estilo Apple, reproductor completo y panel Studio.",
      "commits": [
        {
          "hash": "1936aef",
          "date": "2026-10-12T15:01:57+02:00",
          "subject": "Initial commit",
          "bullets": []
        },
        {
          "hash": "d10603e",
          "date": "2026-10-12T15:37:35+02:00",
          "subject": "Capix Video: plataforma de streaming completa (web, admin, iOS y Android)",
          "bullets": [
            "Backend Node/Express + MariaDB: catálogo, perfiles, progreso, Ver juntos, subida por trozos, identificación automática (TMDB / Apple / Wikidata) y procesado ffmpeg a HLS con multi-audio, subtítulos y miniaturas.",
            "Frontend React estilo Apple: portada animada, fichas, búsqueda, cuenta, reproductor con gestos táctiles, ajustes, estadísticas y atajos.",
            "Navegación móvil con menú hamburguesa y barra inferior; PWA instalable.",
            "Panel Studio: roles usuario/editor/admin, creación de usuarios con credenciales, selección múltiple, mantenimiento y avisos globales.",
            "Fotos de perfil con recorte, logo nuevo y proyectos Capacitor para iOS y Android.",
            "Scripts de despliegue para nginx + systemd + Let's Encrypt."
          ]
        }
      ],
      "highlights": [
        {
          "emoji": "🎬",
          "title": "Streaming propio",
          "text": "Sube películas y series y Capix las identifica, les pone carátula y las convierte a HLS solo."
        },
        {
          "emoji": "👨‍👩‍👧",
          "title": "Perfiles",
          "text": "Hasta 6 perfiles por cuenta, infantiles, con PIN y foto propia."
        },
        {
          "emoji": "▶️",
          "title": "Reproductor completo",
          "text": "Varias pistas de audio, subtítulos con estilo, saltar intro, siguiente episodio y Ver juntos."
        },
        {
          "emoji": "🛠️",
          "title": "Capix Studio",
          "text": "Panel para subir, editar fichas, gestionar usuarios, colecciones y mantenimiento."
        },
        {
          "emoji": "📱",
          "title": "Instalable",
          "text": "PWA y proyectos de app para iOS y Android con Capacitor."
        },
        {
          "emoji": "🔒",
          "title": "Seguro",
          "text": "HTTPS, cookies httpOnly y el vídeo solo se sirve con sesión válida."
        }
      ],
      "fromReadme": true,
      "features": [
        {
          "group": "Cuenta y perfiles",
          "text": "Inicio de sesión con «recordarme»",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Registro abierto, por invitación o cerrado",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Invitaciones con usos y caducidad",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Medidor de seguridad de contraseña",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Cambio de contraseña",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Cerrar sesión en todos los dispositivos",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Hasta 6 perfiles",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "18 avatares",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Perfiles infantiles",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "PIN por perfil",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Límite de edad por perfil",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Idioma de audio preferido",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Subtítulos por defecto (o solo forzados)",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Estilo de subtítulos (tamaño, color, fondo, fuente, sombra) con vista previa",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Reproducción automática del siguiente episodio y de los avances",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Historial (borrar uno o todo)",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Estadísticas personales (horas, géneros, meses)",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Cuenta y perfiles",
          "text": "Límite de intentos de inicio de sesión",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Portada rotativa con Ken Burns, parallax y avance en vídeo",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Color ambiental sacado de cada imagen",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Seguir viendo (se puede quitar)",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Top 10 con números gigantes",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Novedades",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Mi lista",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Recomendado para ti",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "«Porque has visto…»",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Colecciones del admin",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Sagas automáticas",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Aclamadas",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Series",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Filas por género",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Joyas ocultas",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Volver a ver",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Clásicos por década",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Tarjeta ampliada al pasar el ratón con clip de vídeo y botones rápidos",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Etiquetas Nuevo/Serie/HD/4K/edad",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Progreso en cada tarjeta",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Películas y Series con filtros, 8 ordenaciones y 2 vistas",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Páginas de género",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Novedades y más vistos",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Búsqueda instantánea (título, actor, director, género, año, etiquetas; sin acentos)",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Búsqueda por voz",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Búsquedas recientes y tendencias",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Páginas de actor/director",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "«Sorpréndeme»",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Avisos de novedades",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Descubrir",
          "text": "Atajo `/` o `Ctrl+K`",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Modal animado y página propia que se puede compartir",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Avance en vídeo",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Reproducir / Continuar T1:E3 / Empezar de nuevo",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Valoración en 3 niveles",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "% de coincidencia según los votos",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Tráiler",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Compartir",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Temporadas y episodios con imagen, sinopsis y progreso",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Marcar como visto",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Reparto con fotos y equipo técnico",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Títulos similares",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Saga en orden",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Ficha",
          "text": "Idiomas y subtítulos disponibles",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "HLS adaptable",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Varias pistas de audio",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Subtítulos con estilo",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Miniaturas al pasar por la barra",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Saltar intro",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Siguiente episodio con cuenta atrás y «Ver créditos»",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Siguiente película de la saga",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "«¿Sigues viendo?»",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Reanudar en cualquier dispositivo",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Velocidad 0,5–2x",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Imagen en imagen",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "AirPlay",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Pantalla completa",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Volumen recordado",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "17 atajos de teclado",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Avance fotograma a fotograma",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Pantalla de pausa con X‑Ray del reparto",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Edad recomendada al empezar",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Panel de episodios",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Temporizador para dormir",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "Teclas multimedia y pantalla de bloqueo",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Reproductor",
          "text": "**Ver juntos** (sala sincronizada con chat y reacciones flotantes)",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Resumen con estadísticas, gráfica, disco, lo más visto y actividad",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Subida arrastrando archivos y carpetas",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Subida por trozos reanudable (pausa, reintentos, velocidad, tiempo restante)",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Escaneo de la carpeta SFTP",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Reconocimiento por nombre",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Metadatos automáticos",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Carátulas generadas",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Conversión automática",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Subtítulos internos y `.srt` emparejados por nombre",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Cola de procesado en directo",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Editor completo de fichas e imágenes",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Buscar la ficha correcta a mano",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Destacar en portada / ocultar",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Marcas de intro y créditos",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Subir y borrar subtítulos",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Fusionar series duplicadas",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Colecciones",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Usuarios (crear, roles, desactivar, restablecer contraseña, borrar)",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Ajustes",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Panel de administración",
          "text": "Registro de actividad",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Seguridad e infraestructura",
          "text": "HTTPS con renovación automática",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Seguridad e infraestructura",
          "text": "El vídeo solo se sirve con sesión válida (nginx X‑Accel‑Redirect)",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Seguridad e infraestructura",
          "text": "Cookies httpOnly",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Seguridad e infraestructura",
          "text": "Contraseñas con bcrypt",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Seguridad e infraestructura",
          "text": "Servicio con usuario propio sin privilegios",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Seguridad e infraestructura",
          "text": "Ffmpeg con prioridad baja para no afectar a las otras webs",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Seguridad e infraestructura",
          "text": "Instalable como app (PWA)",
          "platforms": [
            "W",
            "S"
          ],
          "version": "1.0"
        },
        {
          "group": "Diseño y móvil",
          "text": "Logo nuevo: estilo Apple: monograma «c» con el punto carmesí (`design/`), con iconos para web, iOS y Android.",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Diseño y móvil",
          "text": "Reproductor rehecho: controles centrales, doble toque para saltar (+10, +20…), bloqueo de pantalla en móvil, hoja de ajustes (audio, subtítulos con tamaño y sincronía, velocidad, calidad, encuadre ajustar/rellenar/zoom, temporizador), estadísticas, captura de fotograma, ayuda de atajos (`?`), avisos flotantes, panel de episodios lateral (o desde abajo en móvil), tiempo restante y orientación horizontal automática en las apps.",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Diseño y móvil",
          "text": "Móvil: menú hamburguesa con cajón lateral, barra de pestañas inferior como una app nativa, barra superior que se oculta al bajar y soporte de *notch* y áreas seguras.",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Diseño y móvil",
          "text": "Foto de perfil propia: con recorte (arrastrar, zoom y giro) y cambio rápido de perfil desde el menú.",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Diseño y móvil",
          "text": "Usuarios: roles Usuario / Editor / Administrador, asistente de creación con contraseña generada, tarjeta para copiar o enviar las credenciales, cambio de contraseña obligatorio al primer acceso, caducidad del acceso, límite de perfiles, notas, y ficha de cada usuario con perfiles, historial, accesos y acciones (restablecer contraseña, cerrar sesiones, desactivar, borrar).",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Diseño y móvil",
          "text": "Admin: selección múltiple en la biblioteca (destacar, ocultar, reidentificar, reprocesar, borrar), página de mantenimiento (aviso global, modo mantenimiento, almacenamiento por carpetas y herramientas de limpieza) y panel adaptado al móvil.",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        },
        {
          "group": "Diseño y móvil",
          "text": "App instalable (PWA): con iconos, accesos directos, pantalla sin conexión y *service worker*.",
          "platforms": [
            "W"
          ],
          "version": "1.0"
        }
      ]
    }
  ],
  "pending": [],
  "commits": [
    {
      "hash": "98e58b0",
      "date": "2026-10-13T00:29:38+02:00",
      "subject": "Reproductor web: corrige el nombre de la variable del minuto de inicio",
      "bullets": []
    },
    {
      "hash": "6db25b5",
      "date": "2026-10-13T00:28:52+02:00",
      "subject": "Lista de las 100 funcionalidades y reproductor web con ?t=segundos",
      "bullets": []
    },
    {
      "hash": "2db2a1d",
      "date": "2026-10-13T00:25:37+02:00",
      "subject": "Comunidad, panel de administración en la app y 100 funciones nuevas",
      "bullets": [
        "Servidor: reseñas, listas personalizadas, peticiones con votos, avisos",
        "in-app (estrenos, episodios, respuestas), logros, racha, estadísticas",
        "personales, seguir actores, «No me interesa», reportes, notas privadas,",
        "exportar datos y Sorpréndeme con filtros. Studio: peticiones, reportes,",
        "avisos a usuarios, moderación, estadísticas avanzadas, «viendo ahora»,",
        "calidad del catálogo, duplicados, CSV y caducidad del aviso global.",
        "Web: páginas y paneles para todo lo anterior.",
        "iOS: panel de administración nativo completo (resumen con gráficas,",
        "biblioteca, editor, cola, subida desde el iPhone, usuarios, invitaciones,",
        "colecciones, ajustes, mantenimiento, actividad, Telegram…), funciones de",
        "comunidad, gestión de perfiles con foto, temporizador para dormir,",
        "avance en vídeo, Spotlight y acciones rápidas del icono."
      ]
    },
    {
      "hash": "272f1ce",
      "date": "2026-10-12T23:56:24+02:00",
      "subject": "iOS: barra de cristal, widgets, Siri y avisos de novedades",
      "bullets": [
        "Barra de pestañas flotante estilo Liquid Glass (glassEffect en iOS 26, cristal esmerilado en versiones anteriores) con botón de búsqueda aparte.",
        "Widgets: Seguir viendo (inicio y pantalla de bloqueo) y Novedades, con datos compartidos por App Group.",
        "Siri / Atajos: seguir viendo, buscar, abrir Mi lista y novedades.",
        "Avisos locales de estrenos y episodios nuevos con refresco en segundo plano (las push de APNs requieren cuenta de desarrollador de pago).",
        "Enlaces capix:// para widgets, notificaciones y Siri."
      ]
    },
    {
      "hash": "53fedab",
      "date": "2026-10-12T23:42:09+02:00",
      "subject": "iOS: app nativa en SwiftUI (ios-native/)",
      "bullets": [
        "App nueva para iPhone hecha en Swift, conectada a la misma API que la web:",
        "inicio de sesión, perfiles con PIN, portada, filas, Top 10, búsqueda,",
        "novedades, Mi lista, géneros, fichas con temporadas y reparto, y un",
        "reproductor propio (HLS con cookies, subtítulos WebVTT, pistas de audio,",
        "miniaturas en la barra, saltar intro, siguiente episodio, PiP, AirPlay,",
        "pantalla de bloqueo y progreso sincronizado).",
        "El workflow de iOS ahora genera el proyecto con XcodeGen y publica",
        "CapixVideo.ipa (com.capix.video) en la release ios-latest."
      ]
    },
    {
      "hash": "279508f",
      "date": "2026-10-12T22:58:12+02:00",
      "subject": "iOS: compilación automática del .ipa sin firmar para Sideloadly",
      "bullets": [
        "Añade un workflow de GitHub Actions (macOS) que compila la web, sincroniza",
        "Capacitor, genera CapixVideo.ipa sin firmar y lo publica en la release",
        "ios-latest. Incluye el esquema compartido de Xcode que necesita xcodebuild."
      ]
    },
    {
      "hash": "fa91dfc",
      "date": "2026-10-12T17:28:30+02:00",
      "subject": "Mejora de imagen: reescalado en tiempo real y versión 1080p en el servidor",
      "bullets": [
        "Reproductor: «Mejora de imagen» con WebGL (escalado bicúbico Catmull-Rom a la resolución de la pantalla + nitidez adaptativa CAS). Automática en vídeos de menos de 1080p, niveles suave/media/intensa, sin coste de servidor ni datos.",
        "Servidor: versión «1080p mejorada» opcional (reducción de ruido + Lanczos + CAS) como segunda rendición HLS, conservando la original; por título, en bloque o automática para vídeos nuevos. El menú Calidad la muestra como tal."
      ]
    },
    {
      "hash": "d2c6bc0",
      "date": "2026-10-12T16:50:36+02:00",
      "subject": "Telegram: recupera importaciones fallidas y limpia fichas vacías",
      "bullets": [
        "«Reintentar» funciona también con importaciones antiguas sin file_id: se recupera reenviando un instante el mensaje original y borrando la copia.",
        "Botón «Reintentar todos los fallidos» y reintentos automáticos más pacientes (4 intentos: 30 s, 90 s y 3 min).",
        "La reparación de series elimina las fichas de película que quedaron vacías."
      ]
    },
    {
      "hash": "e08ae53",
      "date": "2026-10-12T16:16:27+02:00",
      "subject": "Series en español, cola de Telegram persistente y avisos agrupados",
      "bullets": [
        "Reconoce episodios con formato «Serie T1 C01», «T4C05», «(T4) (C05)», «[Serie] (T4) (C05)», «T1 E02», «Temporada X Capítulo Y» y «Cap.405».",
        "Reagrupa automáticamente (y desde Mantenimiento) los episodios que entraron como película, sin volver a convertirlos.",
        "La cola de Telegram se guarda en la base de datos y se reanuda tras reiniciar; reintentos automáticos ante fallos pasajeros y botón «Reintentar» en el panel.",
        "Un único mensaje de progreso por tanda y avisos de «listo» agrupados por serie, con reintento ante «Too Many Requests»."
      ]
    },
    {
      "hash": "44b4a72",
      "date": "2026-10-12T15:51:33+02:00",
      "subject": "README: corrige la sección de Telegram",
      "bullets": []
    },
    {
      "hash": "4580cb0",
      "date": "2026-10-12T15:51:20+02:00",
      "subject": "Importación automática desde Telegram",
      "bullets": [
        "Servidor local oficial de la Bot API en Docker (archivos de hasta 2 GB / 4 GB con Premium), arrancado por systemd al guardar las credenciales en el panel.",
        "Bot que descarga lo que le mandas o reenvías, lo identifica, lo convierte y avisa con póster y botón «Ver ahora»; cola, progreso en directo y /estado.",
        "Vinculación de chats con código de un solo uso (privado, grupos y canales).",
        "Página Telegram en Studio con asistente, chats e importaciones en directo.",
        "El parser ignora firmas de canales (@canal, t.me/…, www.…) y el pie del mensaje sirve de título cuando el nombre del archivo no aporta nada."
      ]
    },
    {
      "hash": "d10603e",
      "date": "2026-10-12T15:37:35+02:00",
      "subject": "Capix Video: plataforma de streaming completa (web, admin, iOS y Android)",
      "bullets": [
        "Backend Node/Express + MariaDB: catálogo, perfiles, progreso, Ver juntos, subida por trozos, identificación automática (TMDB / Apple / Wikidata) y procesado ffmpeg a HLS con multi-audio, subtítulos y miniaturas.",
        "Frontend React estilo Apple: portada animada, fichas, búsqueda, cuenta, reproductor con gestos táctiles, ajustes, estadísticas y atajos.",
        "Navegación móvil con menú hamburguesa y barra inferior; PWA instalable.",
        "Panel Studio: roles usuario/editor/admin, creación de usuarios con credenciales, selección múltiple, mantenimiento y avisos globales.",
        "Fotos de perfil con recorte, logo nuevo y proyectos Capacitor para iOS y Android.",
        "Scripts de despliegue para nginx + systemd + Let's Encrypt."
      ]
    },
    {
      "hash": "1936aef",
      "date": "2026-10-12T15:01:57+02:00",
      "subject": "Initial commit",
      "bullets": []
    }
  ],
  "totals": {
    "features": 244,
    "versions": 6,
    "commits": 13
  }
}