Novedades

5 min de lectura

Novedades

Puede encontrar información más detallada sobre los cambios en cada versión directamente en GitHub Releases.

v2.0.2

  • 🔒 Refuerzo de seguridad: Se cerraron varios hallazgos de análisis estático — las claves de caché del pool de autenticación directa ahora usan HMAC (en lugar de un SHA-256 simple), una comprobación explícita de contención para el servicio de archivos estáticos, escape HTML del texto de estado de inicio de sesión del SSE Tester, una lista blanca de esquemas de URL para los enlaces de resultados de búsqueda del sitio de documentación, y permisos de mínimo privilegio en el workflow de CI.
  • 📦 Actualización de dependencias: Se actualizaron todas las dependencias de Go, incluyendo gin-gonic/gin a v1.12.0 y lib/pq a v1.12.3 (ahora requiere Go 1.25).
  • 🌐 3 idiomas nuevos: El sitio de documentación ya está disponible en polaco, ucraniano y griego — 10 idiomas en total.

v2.0.1

  • 🔒 Corrección de seguridad: Se actualizó la dependencia transitiva de HTTP/3 quic-go a v0.59.1, cerrando una vulnerabilidad de expansión de trailers QPACK que podía permitir a un peer malicioso agotar la memoria del servidor o del cliente.
  • 🎨 Mejoras en el sitio de documentación: Nuevo selector de tema claro/oscuro/automático y selector de idioma solo con iconos, enlaces de icono a GitHub/Apoyo en la barra de navegación, corrección de los datos estructurados JSON-LD codificados por duplicado, y un llms.txt ampliado.

v2.0.0

  • 🔒 Valores seguros por defecto (con cambios incompatibles): DB_SSLMODE ahora tiene por defecto require, ALLOWED_ORIGINS ya no usa * por defecto, y JWT_SECRET debe tener al menos 32 bytes. Los despliegues existentes deben revisar su configuración antes de actualizar.
  • 🧹 Limpieza de elementos obsoletos: Se eliminaron las rutas de redirección /api/… y /sse/… y el alias JSON-RPC obsoleto login. Use directamente /{prefix}/:database/… y get_jwt.
  • 🛡️ Autenticación y manejo de errores más estrictos: Un nuevo límite de inicio de sesión por IP (LOGIN_RATE_LIMIT_PER_IP) cierra una brecha de credential spraying, y los errores de herramientas MCP ya no exponen texto de error de PostgreSQL sin procesar por defecto (puede reactivarse con MCP_SQL_ERROR_DETAIL).
  • ⚙️ Límites de conexión configurables: El límite del pool de conexiones de autenticación directa ahora es configurable mediante DIRECT_POOL_LIMIT.
  • 🔑 Soporte para IdP externos (BYO JWT): Las nuevas opciones JWT_ISSUER, JWT_AUDIENCE y JWT_LEEWAY vinculan los tokens emitidos a un emisor/audiencia específicos y permiten ajustar la tolerancia de desfase horario.
  • 🧰 Nuevas herramientas: Un JWT Getter (/tools/get-jwt) y un SSE Tester (/tools/test-sse) independientes se unen al Explorador para pruebas manuales rápidas.
  • 🐛 Correcciones de fiabilidad: Se corrigió un cierre de SSE que podía quedar bloqueado y un error en la recuperación de conexiones muertas que podía dejar al servidor incapaz de reconectar con PostgreSQL.
  • 🧪 Refuerzo de CI: Se añadieron golangci-lint, el detector de carreras de Go y govulncheck a cada build, junto con una mayor cobertura de pruebas.
  • 📦 Proceso de publicación: Se añadió CHANGELOG.md y se dividió el flujo de publicación en make release-local (compilación y verificación) y make release (etiquetado, publicación y actualización del tap de Homebrew).

v1.3.0

  • 🌐 Explorador PgArachne – PWA moderno: Renovación visual y funcional completa – tema oscuro/claro (automático), diseño de tarjetas adaptable, resaltado de sintaxis JSON, botón de copiar al portapapeles, mejor UX de autenticación (pestañas de contraseña/token), soporte de instalación PWA (manifiesto, iconos, service worker), enlaces compartibles mediante el parámetro ?url=….
  • 🛠️ Soporte para Model Context Protocol (MCP): Nuevo endpoint /{prefix}/{db}/mcp con métodos estándar resources/list, resources/read, prompts/list, prompts/get – completamente respaldado por funciones de PostgreSQL y reutilizando la autenticación y el cambio de roles existentes.
  • 🔧 Prefijo de API configurable: El valor predeterminado cambió a /db/{database}/jsonrpc y /db/{database}/sse, las rutas antiguas /api/… y /sse/… se mantienen como redirecciones 307 por compatibilidad. Controlado mediante la variable de entorno API_PREFIX.
  • 🛡️ Protección de idempotencia: Campo opcional idempotencyKey en solicitudes JSON-RPC – detección automática de duplicados (HTTP 409 + código de error en caso de colisión) usando pgarachne.save_idempotency_key().
  • 📚 Mejoras en la documentación: Nueva sección /tools/ con tarjetas (Explorador + próxima barra de herramientas para macOS), nueva página “Architectural Decisions”, SECURITY.md con instrucciones para reportar vulnerabilidades, mejor tipografía en todos los idiomas gracias a TypoLima, soporte mejorado para la página 404 en GitHub Pages.
  • 📝 Cambio de nombre del método de inicio de sesión: El método JSON-RPC login pasó a llamarse get_jwt (el nombre antiguo se mantiene como alias obsoleto con advertencia en los registros).
  • 📊 Limpieza de registros (logging): Al registrar en un archivo, la consola muestra solo información mínima de inicio → salida más limpia en entornos de producción/docker.

v1.2.0

  • 🛡️ Seguridad: La validación del token de acceso se realiza antes de establecer una conexión con la base de datos. Protección mejorada contra la suplantación de IP (añadida la configuración TRUSTED_PROXIES) y ocultación de errores internos de la base de datos al usuario final.
  • 📊 Métricas aisladas: El endpoint de Prometheus /metrics se trasladó de la API pública a su propio puerto seguro (por defecto, disponible solo en 127.0.0.1:9090).
  • 📦 Nueva opción de instalación: El proyecto ahora tiene un tap de Homebrew oficial para macOS y Linux. Las compilaciones están firmadas y generadas a través de GoReleaser.
  • 📚 Documentación rediseñada: Aspecto completamente nuevo basado en el framework Hugo. Se ha añadido búsqueda rápida de texto completo, opción de copiar código y ejemplos de despliegue en producción (Nginx hardening, BYO JWT).
  • ⚙️ Gestión de demonio mejorada: Se agregó soporte para la configuración de la ruta personalizada de PID_FILE.

v1.1.0

  • 🔌 API unificada: Llamadas a través de POST /api/<db> (el método invocado se especifica en el cuerpo JSON-RPC).
  • Notificaciones en tiempo real: Nuevo endpoint GET /sse/<db>?channels=... para escuchar eventos de la base de datos con soporte multicanal.
  • 📈 Observabilidad: Métricas detalladas de Prometheus para HTTP, auth, JSON-RPC y SSE.
  • 🏋️ Gran mejora de estabilidad: Protección contra clientes lentos, tiempos de espera estrictos y limpieza automática de conexiones.