Sobre el proyecto

Gancho — "hook" en español — es una biblioteca de fragmentos curados e historial de portapapeles local-first con licencia MIT para la familia de plataformas de Apple. El README lo describe como la versión pública v0.8.3 en desarrollo activo hacia la 1.0, con macOS como superficie de creación principal, aplicaciones para iPhone/iPad con soporte de extensiones, una versión para visionOS compatible con iPad planificada, y watchOS limitado a pines y elementos recientes. Android, Windows y Linux figuran solo como análisis futuros, sin compromiso de implementación. La captura y la privacidad en macOS se gestionan mediante un monitor de portapapeles que utiliza un sondeo adaptativo de bajo consumo que se pausa al bloquear la pantalla y en modo privado, suprime sus propias escrituras, marca los elementos del Universal Clipboard y conserva cargas útiles enriquecidas como texto, RTF, HTML, imágenes y URLs de archivos. Los tipos de portapapeles marcados como ConcealedType, TransientType o AutoGeneratedType vetan la captura antes de que se lea cualquier contenido, e incluye una lista negra precargada de gestores de contraseñas y banca, además de una acción de "ignorar siguiente copia". Un detector en el dispositivo busca números de tarjeta (Luhn), claves de AWS/Stripe/GitHub/Slack, claves PEM y posibles contraseñas, mostrando vistas previas enmascaradas con expiración corta. En iOS, iPadOS y visionOS, la captura es solo intencional; no hay sondeo de portapapeles en segundo plano. El proyecto establece que el contenido del portapapeles nunca se escribe en registros, telemetría, informes de errores, analíticas o paquetes de soporte. El almacenamiento utiliza GRDB/SQLite con blobs de disco direccionados por contenido, miniaturas perezosas, listas de solo metadatos paginadas, migraciones versionadas, deduplicación consciente del dispositivo y exportación JSON/CSV. La búsqueda se basa en FTS5 con modos exacto, difuso y regex, además de filtros por tipo, aplicación de origen y fecha, respaldada por un arnés de rendimiento de 100k elementos. Un índice de embeddings en el dispositivo de 512 dimensiones impulsa la función "Pregunta a tu portapapeles" y las sugerencias automáticas de tableros, mientras que la búsqueda de historial principal sigue siendo FTS5. Un motor de retención aplica expiraciones globales y por tipo, auto-expiración de datos sensibles y purga en segundo plano, quedando exentos los pines. La aplicación de macOS es un agente de barra de menú con un panel de historial flotante redimensionable (Shift-Cmd-V), búsqueda mediante escritura priorizando el teclado, filtros componibles, títulos editables, vistas previas por tipo, una vista previa de contenido completo de solo lectura y pegado inverso a través de un Cmd-V sintético. Se han implementado pines, tableros de membresía múltiple y una Biblioteca unificada para tableros y fragmentos, junto con adición por lotes a la pila, adición a tablero y eliminación con deshacer, selección múltiple, arrastre de clips de archivos, donación curada a Spotlight con redacción estructural y una importación guiada de historial de Maccy/CSV con vista previa de solo lectura, validación, deduplicación atómica y cancelación. Raycast no es explícitamente una fuente de importación, ya que su API de portapapeles documentada expone solo seis entradas recientes y su copia de seguridad cifrada no tiene un esquema de decodificación de terceros documentado. La aplicación para iPhone y iPad ofrece solo captura intencional a través de un botón de Guardar, UIPasteControl, una Extensión de Compartir y App Intents/Shortcuts, además de una extensión de teclado con historial, widgets, vista dividida de iPad y filtrado por aplicación de origen. Su pila de inteligencia en el dispositivo funciona sin red: un clasificador determinista de nivel 0 que reconoce 17 tipos de contenido en menos de 5 ms, títulos de Apple Intelligence, OCR de capturas de pantalla, indexación semántica, Dev Actions (decodificación JWT, formateo JSON, Base64, análisis de URL, conversión de colores, formatos UUID) también expuestos como App Intents, Smart Paste para reescritura/traducción/redacción de PII, Q&A fundamentado sobre el historial y sugerencias automáticas de tableros. Cada etapa tiene su propio interruptor en la pantalla de Inteligencia. La sincronización utiliza CKSyncEngine sobre la base de datos privada de iCloud del usuario detrás de un límite de SyncEngine, con un estado de sincronización visible. Las integraciones incluyen una CLI de gancho, un servidor MCP local opcional con concesiones por cliente revocables y con expiración, contexto explícito de tablero/tiempo, permisos de lectura/escritura independientes y un registro de acceso solo de metadatos, además de un comando "Save Selection" para VS Code. La monetización utiliza la infraestructura de compra, restauración y derechos de StoreKit 2 con un muro de pago contextual y límites de nivel gratuito; la versión de descarga directa puede comprar, activar, revalidar y desactivar una licencia Pro a través de Lemon Squeezy sin incrustar un secreto de pagos, y el nivel Pro desbloquea la sincronización cifrada de iCloud. Los diagnósticos anónimos opcionales permanecen desactivados hasta el consentimiento explícito, y el recibo de actividad del Centro de Privacidad mantiene totales por aplicación limitados en el dispositivo durante 13 meses móviles sin sincronizar ni exportar. Desde el punto de vista de ingeniería, el proyecto utiliza XcodeGen, concurrencia estricta de Swift 6, una puerta de String Catalog bilingüe inglés/español, soporte de accesibilidad y un único paquete SwiftPM (GanchoKit) que contiene ocho productos de biblioteca más una CLI. El CI cubre construcción, pruebas y lint, un piso de cobertura de fuente de producción obligatorio, automatización serializada de StoreKit y rendimiento a escala. La construcción requiere macOS 15.4+, Xcode 26+ y XcodeGen, con objetivos de make documentados para pruebas, instalaciones en dispositivos iOS, empaquetado, QA de lanzamiento y verificaciones del sitio. El README acredita a GRDB.swift, SQLCipher, KeyboardShortcuts, Sauce y TelemetryDeck como trabajos de código abierto subyacentes. Licencia: MIT, © 2026 Johnny Young.