Registro de cambios
Notas de versión e historial de la aplicación de escritorio Upvault.
Añadido
- Los ajustes tienen una pestaña Cuenta que reúne el inicio de sesión, tu plan, la licencia y la mejora de plan
- Las respuestas muestran cuántos chats anteriores y notas se usaron como contexto
- Los ajustes generales tienen una opción de diseño (libre o fijo), y la pestaña Datos tiene una sección Almacenamiento que muestra dónde se guardan tus datos
Cambiado
- El menú de ajustes está organizado en cinco grupos, con General arriba. Los ajustes del servidor MCP local pasan a Acceso de IA externa, las descargas de modelos a Sistema y los tokens máximos a Modelos
- Las claves de licencia se introducen después de iniciar sesión y quedan vinculadas a la cuenta que las compró
- El plan Free ahora incluye hasta 10 espacios de trabajo y sincronización con Google Drive en un ordenador. Standard cubre 4 dispositivos y Premium 8
- Las notas y los mensajes que llegan por sincronización se pueden buscar justo después de sincronizar, y no en el siguiente inicio
- Los ajustes de sincronización tienen nombres más claros: "Copia de seguridad automática" ahora es "Subir cambios automáticamente", y las dos listas de dispositivos tienen nombres distintos
- Antes de eliminar un servidor MCP se pide confirmación
Corregido
- Cerrar sesión en un dispositivo cerraba también la sesión en tus otros dispositivos y detenía su sincronización con Google Drive
- Tras cerrar sesión y reiniciar, la app mostraba Invitado pero abría los datos de la última cuenta
- La app podía parecer conectada cuando la sesión ya había terminado, mientras la sincronización y la comprobación de licencia fallaban
- Cuando caducaba el acceso a Google Drive, la pestaña Sincronización mostraba un error sin procesar y no ofrecía forma de reconectar
- La sincronización se rendía ante conexiones interrumpidas en lugar de reintentar, y daba por terminada una descarga incompleta
- Un dispositivo eliminado de tu lista de dispositivos podía iniciar una sincronización completa antes de que se le pidiera registrarse de nuevo
- Algunos modelos escribían una búsqueda web o una llamada a herramienta como texto e inventaban una respuesta. La app ahora reintenta una vez y explica lo ocurrido
- Los modelos gratuitos de OpenRouter devolvían respuestas cortadas a las pocas líneas o vacías
- Un fallo de "Continuar" añadía un mensaje de error al chat cada vez. El motivo aparece ahora en el aviso de la respuesta cortada
- El contador de la papelera en la barra lateral no se actualizaba hasta abrir la papelera
Eliminado
- "Importar copia de seguridad" en la pestaña Datos, que hacía lo mismo que Restaurar
- La tabla de tiempos de espera de solo lectura de los ajustes generales y la opción de clasificación automática, siempre desactivada, de los ajustes de Memoria
Interno
- Los turnos del chat se pueden registrar para diagnóstico en las compilaciones de desarrollo
- Eliminadas dependencias de almacenamiento en la nube sin usar de la base de datos vectorial
- Eliminados 96 textos de ajustes sin usar
Añadido
- Cuando una respuesta se corta en el límite de longitud de salida del modelo, el chat lo indica y ofrece un botón Continuar que sigue donde se quedó
- Las respuestas con búsqueda web citan los resultados como notas al pie numeradas, con una lista de fuentes debajo del mensaje
- La configuración del servidor MCP local ahora tiene un registro de accesos, avisa cuando cambian los datos de conexión que usa tu cliente de IA y pide confirmación antes de emitir un token nuevo
Cambiado
- Los botones de la barra de herramientas del chat muestran su etiqueta cuando hay espacio y solo pasan a iconos cuando la ventana se estrecha
- En pantallas anchas, la columna de mensajes se detiene en un ancho cómodo para leer
- Los nombres de modelo largos se muestran más completos, y el nombre entero aparece al pasar el cursor
- El servidor MCP local conserva el mismo puerto tras reinicios y cambios de cuenta, así que los clientes de IA que configuraste siguen funcionando
- Los resultados de búsqueda de documentos que se envían a clientes de IA a través del servidor MCP local muestran el nombre original del archivo
Corregido
- Una respuesta en curso podía desaparecer si una sincronización de Google Drive terminaba a mitad
- Después de una búsqueda web, las preguntas hechas en otros idiomas recibían respuesta en inglés
- Los saltos de línea en tablas y bloques de código aparecían como código HTML en vez de empezar una línea nueva
- La lista de modelos podía salirse del borde de la pantalla
- Restablecer todos los datos dejaba el servidor MCP local en marcha y su token anterior válido
Interno
- Los intentos de acceso repetidos bloqueados por la comprobación del plan se agrupan en una entrada por minuto en el registro de accesos
Añadido
- Escribe / al inicio de una línea en el cuadro de chat para buscar en tu biblioteca de prompts e insertar uno sin abrirla
Cambiado
- El cuadro de chat es ancho desde el inicio de un chat nuevo, se alinea con los mensajes y se estrecha con la ventana
- El texto de ayuda del cuadro de chat ahora menciona los atajos / y @
Corregido
- El cuadro de chat era estrecho y mostraba botones solo con icono hasta enviar el primer mensaje
- El botón de agente mostraba el nombre en inglés de un agente integrado en otros idiomas
- La búsqueda web, el selector de modelos y varias pantallas de ajustes mostraban texto en inglés en alemán, español, francés, japonés, portugués y chino
Interno
- Los colores del chat ahora vienen de los tokens de diseño
Añadido
- Arrastra una carpeta de la barra lateral dentro de una carpeta vecina o sácala al nivel superior
- Pasa el cursor sobre un nombre de archivo, nota o conversación recortado para verlo completo. Los nombres de archivo se acortan por el medio para que el final y la extensión sigan visibles
Cambiado
- Añadir un documento largo a la búsqueda con IA usa mucha menos memoria y la libera al terminar
- Al eliminar un archivo que está en Google Drive, se indica que la copia de Drive se conserva 30 días para poder restaurarla, y la papelera muestra cuándo se eliminará
Corregido
- Los botones de copiar de los bloques de código de las notas, los mensajes del chat y los ajustes del servidor MCP local no copiaban nada en Windows
- Una sincronización cuya subida fallaba, total o parcialmente, se mostraba como completada. Ahora se muestra como fallida en parte y la subida se reintenta
- Los errores temporales del servidor de Google Drive hacían fallar la sincronización en lugar de reintentar
- Cambiar el nombre de un archivo mientras se subía dejaba el nombre antiguo en Google Drive
- Los elementos eliminados en lote, desde la barra lateral o junto con una carpeta no aparecían en una papelera abierta
- Se podía eliminar definitivamente desde la papelera un elemento que otro dispositivo acababa de restaurar
Interno
- QA automatizada de sincronización y del archivador con una cuenta real de Google Drive
- Se quitaron las rayas largas de los textos de la app
Añadido
- Caja de archivos del espacio de trabajo: guarda cualquier archivo en un espacio de trabajo, sincronízalo a través de tu propio Google Drive y descárgalo en otro dispositivo solo cuando lo necesites
- Añadir un archivo de la caja a la búsqueda con IA, o sacarlo de ahí sin eliminar el archivo
- Cambiar el nombre de los archivos de la caja
- Guardar un archivo de la caja en cualquier lugar del disco, con confirmación cuando ya existe un archivo con ese nombre y accesos directos para abrirlo o mostrarlo en la carpeta
- Uso de almacenamiento de Google Drive en la barra lateral, con el desglose por carpeta en los ajustes de sincronización
- Búsqueda entre conversaciones, para que el asistente pueda recuperar contexto de tus otros chats
- Búsqueda de mensajes dentro de una conversación
- Configuración de la clave de API de búsqueda web en los ajustes
- Icono del proveedor en el avatar del asistente
Cambiado
- Se actualizó el formato de almacenamiento (esquema v46). Actualiza tus otros dispositivos a esta versión antes de volver a sincronizarlos, o su sincronización se detendrá
- El explorador muestra primero las conversaciones, después las notas y después los archivos, e indica el progreso de la transferencia en la fila del archivo
- Las transferencias de archivos a Google Drive continúan donde se quedaron tras un reinicio o una caída de conexión
Corregido
- Los documentos adjuntados con @ no cargaban su contenido
- Los originales en CSV, XLSX y XLS nunca se subían a Google Drive
- Al eliminar varios documentos a la vez quedaban atrás los archivos locales y las copias de Drive
- El restablecimiento de fábrica no propagaba la eliminación de documentos ni de modelos personalizados a tus otros dispositivos
- Los resultados de búsqueda de documentos mostraban nombres de archivo UUID internos en lugar de los originales
- Ctrl+K no encontraba documentos por su nombre de archivo original
- Las listas de documentos no se actualizaban al terminar una sincronización
- La aplicación podía cerrarse inesperadamente durante la sincronización, al combinar la base de datos vectorial
- Las carpetas eliminadas reaparecían después de sincronizar
- Faltaba el tamaño de archivo en los documentos añadidos antes de la caja de archivos
- Las etiquetas de indexado del explorador no quedaban alineadas
Interno
- Refuerzo del servidor MCP local: aislamiento por cuenta y verificación del transporte (D-14 A1 Step 1 y 2)
- Automatización de capturas de pantalla para la landing page
Añadido
- Visualización de la información del asistente de chat (modelo, proveedor, contexto)
Cambiado
- Mejorada la estabilidad de la sincronización
Cambiado
- Programación automática de actualización de la lista de modelos de IA (los nuevos modelos de los proveedores aparecen automáticamente)
Interno
- CI/CD: eliminadas cachés duplicadas, verificaciones limitadas a MRs para pipelines más rápidos
Añadido
- Pipeline de reranking: reordena los resultados de búsqueda/RAG para una mayor precisión en los primeros resultados
- Nueva lógica de búsqueda con combinaciones jerarquía/filtro más potentes
Cambiado
- Renovación del diseño del editor Tiptap + mejora de la persistencia de la sesión de edición
- Pulido final de la renovación de diseño a gran escala (fuentes, barra de tareas)
- Mejoras del parser de PDF
Corregido
- Script de despliegue: protección para evitar que el push del tag continúe si falla el push a main
Cambiado
- Pequeña versión de estabilización
Añadido
- Nuevo proveedor de IA
Cambiado
- Renovación de diseño 3: Spine card, Explorer, Folder, Header
- Rediseño de la barra lateral, cabecera e interruptores
Corregido
- Varios problemas de Spine card / CSS
Cambiado
- Renovación de diseño: sistema de fuentes unificado (DM Sans / DM Serif Display / JetBrains Mono / Pretendard / Noto Serif KR / D2Coding)
Interno
- Flujo de trabajo de release reforzado contra el bloqueo de main en GitLab CI/CD (el push del tag v* bloquea los pushes a main con 403 durante el CI)
- deploy.ps1: protección no interactiva -Yes más robusta
Corregido
- Mejores mensajes de error de licencia
- Bug de visualización de mensajes de error en el chat
- Problema de desplazamiento de pestañas
Interno
- deploy.ps1: flags -Yes/-Shutdown para despliegues no interactivos
Corregido
- La licencia se liberaba espontáneamente
- Limpieza de UX de toast/diálogo de confirmación
Corregido
- Bugs relacionados con toasts
- Consistencia del script de despliegue
Interno
- Alineadas las versiones de la API JS de Tauri y los crates de Rust (@tauri-apps/api, plugin-dialog)
Añadido
- Funciones de Configuración ampliadas
Cambiado
- Mejoras acumuladas de abril~mayo
Añadido
- Rediseño de la UI del editor Fase 1: BubbleMenu (9 botones de formato + submenú de IA), placeholder del comando Slash, limpieza de LinkEditPopover
- Catálogo remoto de modelos: obtiene automáticamente los modelos más recientes desde R2 con caché de 24 horas (22 modelos)
- Rediseño de UX del visor de documentos (Fase A): visor inline de TXT/MD, diálogo de guía para PDF/DOCX, 4 modos de visualización
- Función Inbox (Fase A/B/C): Inbox como workspace del sistema, barra de acciones dedicada, clasificación manual con IA + Undo
- Importación de notas: traer archivos de texto TXT/MD como notas + Import Dialog
- Descarga bajo demanda de documentos originales: descarga desde la nube solo cuando se necesitan los originales subidos desde otro dispositivo
- Tooltip al pasar el cursor sobre carpetas en la barra lateral: vista previa del contenido de la carpeta
- Timeout de inactividad para la clave maestra: bloqueo automático tras un tiempo configurable (0/5/15/30/60 min) + botón Lock Now
Cambiado
- Limpieza de 45 cadenas en inglés hardcodeadas en 9 idiomas
Corregido
- Renombrado de carpetas en la barra lateral: race condition Enter/Blur, Escape para cancelar
- Caché stale del tooltip de carpetas al pasar el cursor
- Token de Google Drive no cacheado tras reiniciar la app
- Fallo en la descarga de documentos desde la nube
- Fallo en la restauración del merge de Lance Pull cuando falta la tabla
- Problema de instalación del modelo de embeddings
Añadido
- Renovación de CI/CD y firma de código (Certificate): comienza la distribución del instalador de Windows firmado
Añadido
- Limpieza de vectores huérfanos de LanceDB (M-6): eliminación automática de vectores de conversaciones expiradas + compactación periódica de 3 tablas
- Utilidad de reconciliación: verificación de consistencia entre fuentes eliminadas y vectores
- Múltiples mejoras en documentos/notas
Corregido
- Problema de descarga del modelo de embeddings
- Fallo en la descarga de documentos desde la nube (cambio de immutable_files + limpieza de oplog + fallback de Drive)
- CI/CD: aplicado curl --ssl-no-revoke, node_modules excluido de la caché
Añadido
- Gestión de dispositivos y desactivación remota (EDGE-2-C): ver los dispositivos registrados en tu licencia + desactivar un dispositivo específico de forma remota
- Gestión de OAuth de Google Drive (M-3): aprobación en Producción, refresh proactivo cada 55 minutos, parada inmediata ante invalid_grant, banner in-app cuando se requiere reautenticación
- Estabilidad de las llamadas a LLM (M-2): backoff exponencial x3 para 429/5xx en los pipelines de título automático/resumen/memoria
- Mejoras de integridad de sincronización (serie SYNC-D): hashing Merkle BLAKE3, resuelta duplicación de drive_file_id, Lance Pull preserva vectores solo locales (merge basado en source_file), historial de Push rastreado hasta 50 entradas
- Barra "idioma + copiar" en bloques de código (L-10): aplicada al chat y al editor de notas, con soporte de indentación con Tab
Corregido
- Definición duplicada de hook NSIS (hooks.nsh)
Añadido
- Sincronización rediseñada por completo (SYNC-REDESIGN): R/W siempre en cada dispositivo, eliminado WriterLocker, Union Merge, unificación de oplog.jsonl, UX de 5 estados (Synced/Syncing/Offline/Error/NotConnected)
- Pipeline de pagos completo (D-15-D): integración con la API de licencias de Lemon Squeezy, Grace Period offline de 7 días, UI de la pestaña License, visualización del estado del dispositivo, cupón de actualización Standard→Premium
- Plan gating Fase 2 (D-15-B): límite de 50 documentos en Free (triple comprobación individual/batch/carpeta), UpgradePromptModal, insignias de plan
- Rediseño del tutorial de onboarding (U-1): Welcome → TutorialCarousel de 4 pasos, entrar en la app sin clave API, tarjeta guía inline + reenvío automático cuando falta la clave API
- Sistema de diseño de botones v1+v2: 7 variantes × 7 tamaños, sistema de capas de profundidad, ~80+ botones unificados en ~38 archivos
- Elemento Upload Docs en los menús contextuales de Explorer/carpetas
- 3 capas de UX para documentos remotos entre dispositivos: banner cuando falta el archivo original, insignia CloudOff en Explorer, toast de aviso de subida
- UX de sincronización con cierre elegante al cerrar la app: detección automática de cambios sin enviar → overlay → push → salida
- Menú contextual de pestañas: Cerrar a la izquierda/derecha, protección de Pin
- UX de descarga en tiempo de ejecución de bge-m3 (R-2): visualización de progreso, previene la degradación silenciosa del RAG, rutas de caché normalizadas
- Infraestructura de la landing page: despliegue estático en R2, visualización dinámica de la versión, overlay de checkout, ToS + política de reembolso en 9 idiomas
- Normalización del Auto Updater (UPDATER-FIX): R2 unificado, detección dinámica del nombre de archivo, protección de versión tag/build
- Refresco de la caché de iconos de Windows: llamada a SHChangeNotify tras la actualización fuerza la recarga de IconCache
- Conmutador de plan solo para DEV: cambio instantáneo entre Free/Standard/Premium (no incluido en builds de release)
Corregido
- 4 bugs críticos de sincronización (SYNC-HOTFIX): bloquear Push cuando falla Pull, manejar fallos de parseo de fetch_remote_state, proteger la primera sincronización con Pull-only
- Sincronización de imágenes (SYNC-IMG-FIX): miss de Pull + protección contra borrado inmutable
- last_seen_at del dispositivo no se actualizaba + etiqueta incorrecta "Synced" al iniciar la app
- Auto Sync ejecutándose al inicio cuando está OFF
- Bug de creación duplicada de instancias de dispositivo (D-15-D-FIX2)
- Recuperación de Cargo.toml / package.json corruptos
- Toma total de la UI por toast de error (límite de visibleToasts, id fijo para dedup)
- Ruptura del responsive móvil de la landing
Interno
- Supabase Edge Functions: API dinámica de Checkout, gestor de dispositivos, webhook de LS → subscriptions
- Lógica de reintento de subida con curl en CI/CD
- URL de Checkout dividida en UUIDs separados para Standard/Premium
Interno
- Tags de release candidate para preverificación (detección dinámica de archivos en el pipeline de CI/CD, etc.)
Añadido
- Sistema de agentes (2C-2): integración con el chat, relay de proveedor de temperature, UI de gestión de presets, limpieza de i18n
- Abstracción de MCP Transport + Streamable HTTP: estabilidad de stdio + soporte de servidor HTTP + migración de almacenamiento SQLite + almacenamiento de tokens de autenticación en Keyring
- Sync Batch A: capa universal de sincronización de archivos, dirty flag en tiempo real
- Batch de funciones de chat: adjuntar PDF (nativo para 3 proveedores + fallback personalizado), guardado de memo por selección de rango, galería de imágenes
- Mejoras de búsqueda jerárquica de IA + mejoras de búsqueda (trigram FTS5, RRF de 3 vías, vista previa de 2 columnas, UI de filtros)
Cambiado
- Sistema de diseño GLASS aplicado
- Rediseño de UI/UX S1~S6: gestor de ventanas (FloatingPanel + PanelCanvas), adopción de shadcn/ui, rediseño de TaskBar, panel Explorer, modo de layout Docked
- Primera pasada de reemplazo de Phosphor Icons
- Mejoras en breadcrumb / popover de Tools
Corregido
- Múltiples parches de QA para la búsqueda jerárquica de IA
- Validación de target_id en el panel de documentos, guardado de mensajes incompletos tras cancelar, indicador de workspace activo y más
Añadido
- Papelera: soft delete + TrashView + restauración, previene la pérdida de datos por CASCADE
- Factory Reset: 8 categorías seleccionables individualmente
Cambiado
- Múltiples mejoras de UI, parches de QA
Corregido
- Clippy manual_flatten, etc.
Corregido
- Corrección de raíz del 404 en descarga de release en CI/CD: cambio a GitLab Generic Packages Registry
- Corrección de raíz de la no generación de .nsis.zip: añadido createUpdaterArtifacts
- Build de CI/CD: diagnóstico de clave de firma + verificación del zip del updater
Corregido
- Visualización de la versión, 3 problemas de build de despliegue
Seguridad
- Mejora en la gestión del PAT (Personal Access Token)
Añadido
- Adjuntar imágenes en el chat: Ctrl+V / selección de archivo / arrastrar y soltar, enrutado multimodal por proveedor
- Guardado de memo del par Q&A: incluye automáticamente la pregunta, formato blockquote
- Conmutador de vista de conversación/memo en la barra lateral: control segmentado
- Vista previa extendida de fragmentos de documento: Split View, puntuación de similitud, insignia de referencia
- Gestión avanzada de modelos: etiquetas de Capabilities, reordenación DnD, dashboard de costes, 9 proveedores preconfigurados
- Supabase Auth (Google/GitHub) completo: PKCE + callback en localhost, auto-refresh, UI de perfil
Cambiado
- Automatización de RAG (2C-RAG-FIX): useRag por defecto true, delete-before-ingest, mejora de la herramienta search_documents
- Eliminada la jerga "chunks" en favor de términos intuitivos (2C-CHUNK-UX)
- Terminología Workspace → Folder unificada (i18n en 5 idiomas)
- Sistema de color cambiado a tonos fríos + acento púrpura profundo
- Tamaños de fuente unificados al estándar de la industria
- Refactorización del layout de barra lateral/Configuración (sin bordes, disposición de 3 columnas)
- ChatHeader rediseñado y fusionado con la parte inferior de la barra de entrada
Corregido
- Rediseño de raíz del pipeline de imágenes en notas (2C-IMG-FIX3): race condition, atomicidad, rutas relativas, limpieza al borrar
- Colisión de state en OAuth (PKCE ahora gestiona la protección CSRF)
- 8 correcciones de lint de Clippy
Añadido
- Editor de notas WYSIWYG con Tiptap
- Sincronización entre dispositivos (Fase 2B): backend de Google Drive, Union Merge de SQLite, UX de sincronización
- Contexto persistente (2B-3/4): resumen automático de conversaciones, extracción automática de memoria, forget_note, búsqueda semántica
- Búsqueda semántica de conversaciones (2B-5): híbrido FTS5 + LanceDB, modal de búsqueda rediseñado
- Registro dinámico de modelos (2C-1): registrar proveedores personalizados, obtención automática de /v1/models
- Tema "Soft Depth": sistema de variables CSS (--v-*), paleta de colores, árbol de la barra lateral
- Barra de pestañas: pestañas temporales/fijadas, estado de expansión de la barra lateral movido a Zustand
- Función de actualización manual
Cambiado
- Limpieza de la UI del chat: bordes en gradiente, tarjeta de bienvenida, bloques de código
- Colapso de carpetas, conversación de nuevo workspace, panel de notas, terminología de Sync
Corregido
- Warning de Clippy type_complexity
- Prevención de contaminación de caché en CI/CD
Añadido
- Jerarquía de workspaces (3 niveles)
- CRUD de memos + cifrado AES-256-GCM
- Selección de contexto con @mención: referenciar documentos/memos directamente desde la entrada
- Conversión de conversación → memo (📌 guardar)
- Herramientas integradas de IA (búsqueda, consulta de documentos, etc.)
- Visualización en tiempo real de tokens/coste (diferenciación BYOK)
- Persistencia de conversaciones (SQLite) + título automático + búsqueda FTS5 + datos reales en la barra lateral + modal de búsqueda Ctrl+K
- Onboarding OOBE + UI de confianza de clave API
- GitLab CI/CD + instalador NSIS + Auto Updater
Añadido
- Primera versión alpha: MVP (Fase 1) completo
- Chat multimodelo (BYOK): streaming de Claude, GPT (código de Gemini completo)
- Base de datos vectorial local: vectorización y búsqueda de conversaciones/documentos basada en LanceDB
- Embeddings locales: ejecución en CPU de bge-m3, soporte multilingüe (30~86ms/chunk)
- RAG básico: subida de TXT/MD/HTML/PDF/DOCX → chunking → embeddings → búsqueda → respuesta
- Integración básica de MCP: servidor stdio, orquestación de Tool Use para 3 proveedores (Claude/GPT/Gemini), servidor de sistema de archivos (14 herramientas) probado en vivo
- Layout de 3 paneles + núcleo del chat (streaming + Markdown + ToolCall) + UI de Configuración/MCP/RAG + ModelSelector