Releases: AnaCataVC/google-drive-work-sync
Releases · AnaCataVC/google-drive-work-sync
Release list
Release v1.2.1
Release v1.2.1
Bug Fixes
- Robust Change Detection & SHA-256 Snapshotting: Snapshots file metadata and cryptographic hashes prior to network transmission, preventing edge-case race conditions where concurrent local file modifications could result in false-positive "Up to date" statuses.
- Atomic Hash Index Persistence: Implemented two-stage write-and-replace persistence for
sync_hashes.jsonusing temporary files and batch flushes, safeguarding the local index against truncation or corruption during abrupt termination. - Orphan Hash Purge Boundary: Fixed orphan cleanup logic to preserve Drive-relative Claude AI context keys while correctly pruning vanished work files.
- Fail-Soft Error Visibility: Unreadable files (locked or permission-denied) and unlistable directories are now flagged explicitly as sync errors rather than being silently marked as unchanged.
- UTF-8 Git Path Decoding: Enforced UTF-8 encoding and
core.quotePath=falseduring git discovery scans, ensuring untracked files with non-ASCII or accented characters are properly matched.
Lanzamiento v1.2.1
Correcciones de Errores
- Detección Robusta de Cambios y Captura de Hash: Ahora se capturan los metadatos y el hash SHA-256 de los archivos antes de la transferencia de red, evitando falsos positivos de sincronización si el archivo cambia durante la subida.
- Persistencia Atómica del Índice de Hashes: Se implementó guardado seguro en dos fases (archivo temporal y reemplazo atómico) para
sync_hashes.json, protegiendo el índice local contra truncamiento o corrupción ante cierres inesperados. - Aislamiento en Limpieza de Hashes Huérfanos: Se corrigió la depuración de claves locales para preservar las rutas relativas de Drive correspondientes al contexto de Claude AI.
- Visibilidad Explícita de Errores de Acceso: Archivos bloqueados o sin permisos y carpetas inaccesibles ahora se reportan directamente como errores de sincronización en lugar de ignorarse silenciosamente como no modificados.
- Decodificación UTF-8 en Rutas Git: Se configuró UTF-8 y
core.quotePath=falseen el escaneo de git, asegurando la detección correcta de archivos sin seguimiento que contengan acentos o caracteres especiales.
Release v1.2.0
Release v1.2.0
Features
- Dedicated Claude AI Context Settings Card: Added an isolated, specialized settings card in SettingsView with guidance, copyable setup instructions, and quick links to optimize Claude AI integrations.
Bug Fixes
- Accurate Sync Status Calculation: Fixed an issue where the sync status prematurely displayed 'Al día' when files were still pending synchronization. It now accurately reflects 'Por sincronizar' and proper pending counts.
Lanzamiento v1.2.0
Nuevas Funcionalidades
- Tarjeta de Contexto Dedicada para Claude AI: Se integró una tarjeta de ajustes independiente en la vista de configuración con instrucciones claras, botones para copiar contexto y enlaces rápidos que optimizan el uso con Claude AI.
Correcciones de Errores
- Cálculo Preciso del Estado de Sincronización: Se solucionó la inconsistencia visual que mostraba 'Al día' cuando aún existían archivos pendientes de sincronizar, reportando ahora el estado exacto 'Por sincronizar' y el conteo correspondiente.
Release v1.1.1
Bug Fixes
- Automatic Sync Schedule Persistence: Fixed a
TimeSpanserialization bug inSystem.Text.Jsonthat caused the automatic sync schedule (time of day and days of week) to silently reset to defaults after restarting the application. IntroducedTimeSpanJsonConverter(serializes as"HH:mm:ss"; backward-compatible with legacy object format viaTicksfallback) and registered it inLocalSettingsHelper.SerializerOptionsfor all settings read/write operations. - Sync Status Detection Accuracy: Fixed an issue where files already synchronized to Google Drive were incorrectly re-uploaded on subsequent sync cycles. Removed an artificial
entry.FileSize < 1024threshold inIsMetadataConfirmedthat prevented files smaller than 1 KB from ever using the metadata fast-path, causing unnecessary full SHA-256 re-hashing and false "needs upload" classifications.
Internal
- Added
docs/learning/system-text-json-timespan-converter.mddocumenting theTimeSpanserialization gotcha, thehhvsHHformat specifier pitfall, and the backward-compatible converter pattern.
Correcciones de Errores
- Persistencia del Horario de Sincronización Automática: Se corrigió un error de serialización de
TimeSpanenSystem.Text.Jsonque hacía que el horario de sincronización automática (hora del día y días de la semana) se reiniciara silenciosamente a los valores predeterminados al reiniciar la aplicación. Se introdujoTimeSpanJsonConverter(serializa como"HH:mm:ss"; retrocompatible con el formato objeto antiguo mediante fallback deTicks) y se registró enLocalSettingsHelper.SerializerOptionspara todas las operaciones de lectura y escritura de configuraciones. - Precisión en la Detección de Archivos Sincronizados: Se corrigió un problema por el cual archivos ya sincronizados con Google Drive eran subidos nuevamente en ciclos de sincronización posteriores. Se eliminó un umbral artificial
entry.FileSize < 1024enIsMetadataConfirmedque impedía a archivos menores a 1 KB usar el fast-path de metadata, causando re-hash SHA-256 innecesario y clasificaciones incorrectas de "necesita subir".
Interno
- Se agregó
docs/learning/system-text-json-timespan-converter.mddocumentando el gotcha de serialización deTimeSpan, la diferencia entrehhyHHcomo especificadores de formato, y el patrón de conversor retrocompatible.
v1.1.0 - Claude Bucket Customization and Auto-Save Confirmation
English
Features
- Customizable Claude Special Buckets: Added configuration fields in Settings under Advanced Options to set custom subfolder destination names for untracked workspace files (default: _sin-repo) and global Claude configurations, skills, and agent memories (default: _claude-config).
- Visual Auto-Save Feedback: Integrated live InfoBar toast notifications upon debounced auto-save triggers across all settings fields, providing immediate visual confirmation that changes have been safely persisted without requiring manual button clicks.
Maintenance
- Regression Prevention: Added unit tests verifying destination path generation for custom bucket configuration, bringing total test coverage to 66 passing tests.
- Version Bump: Synchronized assembly, installer, and documentation versioning to v1.1.0.
Español
Nuevas Funcionalidades
- Personalización de Carpetas Especiales de Claude: Se añadieron campos de configuración en Ajustes (dentro de Opciones Avanzadas) para definir nombres personalizados de subcarpetas en Google Drive para archivos sin repositorio Git (por defecto: _sin-repo) y configuraciones globales de Claude (skills, hooks, agentes y memorias; por defecto: _claude-config).
- Confirmación Visual de Guardado Automático: Se integró la notificación visual inmediata (InfoBar) tras cada guardado automático silencioso por debounce en cualquier ajuste, confirmando al usuario que sus cambios se han guardado correctamente.
Mantenimiento
- Prevención de Regresiones: Se incorporaron pruebas unitarias verificando la resolución de rutas en Drive para buckets personalizados, alcanzando 66 pruebas exitosas (100% de cobertura funcional).
- Actualización de Versión: Sincronización de ensamblados, script de Inno Setup y documentación bilingüe a la versión v1.1.0.
v1.0.1 - Error Handling & Thread Safety Hardening
English
Bug Fixes & Stability Hardening
- Error Formatting & Exception Unwrapping: Implemented
GetDisplayErrorMessageto recursively unwrap nested inner exceptions, filter generic wrapper messages, and normalize multi-line strings (\r\nto spaces) so WinUI 3TextBlockelements never truncate messages or render empty strings. - WinUI 3 Thread Affinity Protection: Introduced
DiagnosticLoggerwith thread-safe UI dispatching viaApp.DispatcherQueue, preventing cross-threadCOMException(RPC_E_WRONG_THREAD/0x8001010E) when mutating observable collections and UI properties from background threads. - Error Tooltip Affordance: Added
ToolTipService.ToolTipto the status text inWorkSyncViewfor complete error message inspection on hover. - Robust File Scanning: Protected
DriveSyncService.ClassifyFileagainst locked or unreadable files throwing uncaughtIOException, logging warnings to diagnostic logs instead of crashing the batch process. - Large Dataset UI Throttling: Limited the out-of-sync preview rendering to 200 items in
WorkSyncViewModelto prevent UI thread freezes during massive file traversals while preserving total counts.
Quality & Tests
- Added 6 new unit tests covering error formatting, nested exception extraction, and whitespace cleanup (all 65 unit tests passing).
Español
Corrección de Errores y Estabilidad
- Formateo de Errores y Desempaquetado de Excepciones: Se implementó
GetDisplayErrorMessagepara desenvolver recursivamente excepciones internas, filtrar mensajes genéricos de envoltura y normalizar saltos de línea (\r\na espacios) evitando que los elementosTextBlockde WinUI 3 truncasen el texto o mostrasen mensajes vacíos. - Protección de Afinidad de Hilos en WinUI 3: Se introdujo
DiagnosticLoggercon despacho seguro al hilo de interfaz medianteApp.DispatcherQueue, previniendo excepciones entre hilosCOMException(RPC_E_WRONG_THREAD/0x8001010E) al mutar colecciones observables y propiedades de UI desde tareas de fondo. - Tooltip de Inspección Completa: Se añadió
ToolTipService.ToolTipal texto de estado enWorkSyncViewpara permitir la inspección completa de errores al pasar el cursor. - Escaneo Seguro de Archivos: Se protegió
DriveSyncService.ClassifyFilecontra archivos bloqueados o inaccesibles que lanzabanIOExceptionno controladas, registrando advertencias en logs de diagnóstico sin detener el lote completo. - Limitación de Elementos en UI para Grandes Volúmenes: Se limitó la lista previa de archivos fuera de sincronización a 200 elementos para evitar bloqueos del hilo de interfaz durante el recorrido de miles de archivos, manteniendo el conteo total exacto.
Calidad y Pruebas
- Se agregaron 6 pruebas unitarias nuevas para el formateo de errores y extracción de excepciones internas (65/65 pruebas unitarias exitosas).
v1.0.0 - Google Drive Work Sync Initial Release
English
What's New
- Google Drive Work File Sync: SHA-256 incremental hashing with fast-path metadata, Google Apps Script batching (max 8 files / 9 MB), fail-soft error tracking and retries.
- Claude AI Context Discovery: Scans workspaces for project guidelines, subagents, skills, memory, and prompts with 3-tier secret protection.
- Out-of-Sync Default Mode: Automatically detects and displays pending un-synchronized files with quick preview dialogs; full sync is optional.
- Flexible Scheduler & System Tray: Set custom weekdays and execution times for background sync; minimizes cleanly to notification tray.
- Single Installer: Self-contained Windows x64 setup executable with optional Windows logon autostart.
Español
Novedades
- Sincronización de Archivos de Trabajo: Detección incremental por SHA-256 y metadatos, envío por lotes a Google Apps Script, reintentos con backoff exponencial.
- Detección de Contexto IA (Claude): Búsqueda de directrices, subagentes, skills y prompts con filtrado de secretos en 3 capas.
- Modo Desincronizado por Defecto: Detecta y resalta solo los archivos pendientes por sincronizar, con previsualización antes de la subida; sincronización completa opcional.
- Programador Flexible y Bandeja del Sistema: Programación por días de la semana y horas específicas; minimización silenciosa a la bandeja del sistema.
- Instalador Único: Instalador ejecutable autónomo para Windows x64 con soporte de inicio automático con Windows.