Releases: gnacho/keynest
Releases · gnacho/keynest
Release list
latest
Build automático de main (2026-08-07 05:39 UTC)
v1.5.1
Fix de bug de comportamiento (caza de bugs).
- Sync iCal: un UID compartido entre dos inmuebles ya no migra la reserva a la otra propiedad (el ON CONFLICT de uid sobreescribia property_id). Test red-green incluido.
Assets: tarballs amd64/arm64 + checksums.txt
v1.5.0
Release de auditoría de seguridad (bug-hunting).
- Body cap global de 11 MB en todas las rutas (los endpoints JSON se parseaban sin límite; uploads de fotos ≤10 MB intactos).
- Cambio de contraseña invalida las demás sesiones del usuario (la actual sobrevive).
- TODO de auditoría de seguridad en CHANGELOG Unreleased (issue #32).
Assets: tarballs amd64/arm64 + checksums.txt
v1.4.0
feat: Mi perfil horizontal + backend avatar/display_name/email - Backend: migración 11 (display_name + avatar en users), endpoints PUT /api/auth/profile (display_name, email), POST /api/auth/avatar (multipart, crop 1:1, máx 2MB), serveStatic /avatars/*. - Frontend: tarjeta 'Mi perfil' en una línea horizontal con avatar, nombre editable, email editable, idioma, notificaciones, contraseña y logout. Reemplaza la antigua SessionCard. - i18n: aj.miPerfil, aj.cambiarPassword, aj.cerrarSesion, etc.
v1.3.2
feat: auto-purge expired cleaning photos + UI improvements - Server: hourly job purges cleaning photos older than 1 month (files + DB array cleanup). Also runs once on startup. Logs purge count. - UI: archived cleanings show 'Photos deleted after 1 month' message when retention expired and photos array is empty. - All image tags (CleaningCard, CleaningPhotos, PhotoLightbox) now handle broken images with onError fallback placeholder.
v1.3.1
feat: PhotoCropDialog v2 with 8 improvements Replaced the basic 4:3 crop-only dialog with the full photo-crop skill: - EXIF orientation fix (photos from mobile no longer rotated) - Keyboard a11y (arrows, +/-, Enter, Escape) - Zoom via scroll wheel and pinch-to-zoom (mobile) - Configurable ratios (4:3, 16:9, 1:1, free) - Quality and resolution as parameters (maxLongSide 1200px, quality 0.85) - Multi-step downsampling (better quality for large photos) - File size indicator (~150 KB WebP) - Double tap/click to reset zoom and center
v1.3.0 — security hardening + backups
Security hardening (auditoría v1.2.0)
Fixes anteriores (v1.2.1)
- ENC_KEY fuera de la BD: clave de cifrado desde variable de entorno
- IP real del socket para rate-limit: XFF solo con TRUST_PROXY=true
- Fotos desde subdirectorio: raíz estática es DATA_DIR/photos
Nuevas mejoras (v1.3.0)
- SESSION_SECRET desde entorno: igual que ENC_KEY, evita falsificación de sesiones si roban la BD
- Cookie secure: true siempre: adecuado para despliegue solo LAN
- Timeout sesión 30 → 7 días
- Password mínimo 6 → 10 caracteres (nuevas/reset, no login existente)
- Rate limits en /sync y subidas de fotos: 5/min y 20/min respectivamente
- Validación magic bytes en fotos: verifica contenido real (JPEG/PNG/WebP), no solo file.type
- Backup diario automático: configurable desde Ajustes (admin), con retención de 3 a 90 días
- Tabla rate_limits en BD para control de acciones costosas
Migración
Para instalaciones existentes, añadir a /opt/keynest/server/.env:
# Generar claves seguras
openssl rand -hex 32
# Añadir al env
echo 'SESSION_SECRET=<clave-generada>' >> /opt/keynest/server/.envv1.2.1 — security hardening
Security fixes (auditoría v1.2.0)
- encKey fuera de la BD: la clave de cifrado ahora se lee de
ENC_KEYen el entorno (/etc/keynest/env). Si no está definida, fallback a la BD con warning. - Rate-limit usa IP real del socket: ya no confía en
X-Forwarded-Forpor defecto. Solo conTRUST_PROXY=true(detrás de proxy inverso). - Fotos servidas desde subdirectorio: la raíz estática de
/photos/*es ahoraDATA_DIR/photos, noDATA_DIRcompleto (evita exposición de la BD ante un eventual path traversal).
Migración
Para instalaciones existentes, añadir ENC_KEY a `/etc/keynest/env: