À propos du projet
Gancho — « hook » en espagnol — est une bibliothèque de snippets organisés et un historique du presse-papiers local-first sous licence MIT pour la famille de plateformes Apple. Le README le décrit comme étant en version publique v0.8.3, en développement actif vers la version 1.0, avec macOS comme surface de création principale, des applications iPhone/iPad avec support d'extensions, un build visionOS compatible iPad prévu, et watchOS limité aux épingles et aux éléments récents. Android, Windows et Linux sont mentionnés uniquement pour analyse future, sans engagement d'implémentation.
La capture et la confidentialité sur macOS sont gérées par un moniteur de presse-papiers utilisant un sondage adaptatif à basse consommation qui s'interrompt lors du verrouillage de l'écran et du mode privé, supprime ses propres écritures, marque les éléments du Presse-papiers Universel et conserve des charges utiles riches telles que le texte, le RTF, le HTML, les images et les URL de fichiers. Les types de presse-papiers marqués ConcealedType, TransientType ou AutoGeneratedType bloquent la capture avant toute lecture du contenu, et une liste noire préchargée de gestionnaires de mots de passe et de banques, ainsi qu'une action « ignorer la prochaine copie », sont incluses. Un détecteur sur l'appareil recherche les numéros de carte (Luhn), les clés AWS/Stripe/GitHub/Slack, les clés PEM et les mots de passe probables, affichant des aperçus masqués avec une expiration courte. Sur iOS, iPadOS et visionOS, la capture est intentionnelle uniquement — aucun sondage du presse-papiers en arrière-plan. Le projet stipule que le contenu du presse-papiers n'est jamais écrit dans les journaux, la télémétrie, les rapports de plantage, les analyses ou les bundles de support.
Le stockage utilise GRDB/SQLite avec des blobs disque adressés par le contenu, des miniatures lazy, des listes de métadonnées paginées, des migrations versionnées, une déduplication sensible à l'appareil et un export JSON/CSV. La recherche est basée sur FTS5 avec des modes exact, flou et regex, plus des filtres par type, application source et date, supportés par un harnais de performance de 100k éléments. Un index d'embeddings sur l'appareil de 512 dimensions alimente la fonction « Ask your clipboard » et les suggestions automatiques de tableaux, tandis que la recherche d'historique principale reste sur FTS5. Un moteur de rétention applique une expiration globale et par type, une auto-expiration pour les données sensibles et un nettoyage en arrière-plan, les épingles étant exemptées.
L'application macOS est un agent de barre de menu avec un panneau d'historique flottant redimensionnable (Shift-Cmd-V), une recherche par saisie clavier, des filtres composables, des titres modifiables, des aperçus par type, un aperçu du contenu complet en lecture seule et un collage via un Cmd-V synthétique. Les épingles, les tableaux à appartenance multiple et une bibliothèque unifiée pour les tableaux et snippets sont implémentés, ainsi que l'ajout groupé à la pile, l'ajout au tableau et la suppression avec annulation, la multi-sélection, le glisser-déposer de clips de fichiers, un don Spotlight organisé avec rédaction structurelle, et un import d'historique Maccy/CSV guidé avec aperçu en lecture seule, validation, déduplication atomique et annulation. Raycast n'est explicitement pas une source d'importation, car son API de presse-papiers documentée n'expose que six entrées récentes et sa sauvegarde cryptée n'a pas de schéma de décodage tiers documenté.
L'application iPhone et iPad propose uniquement une capture intentionnelle via un bouton Save, UIPasteControl, une extension de partage et des App Intents/Shortcuts, plus une extension de clavier avec historique, des widgets, la vue fractionnée iPad et le filtrage par application source. Sa pile d'intelligence sur l'appareil fonctionne sans réseau : un classificateur déterministe de niveau 0 reconnaissant 17 types de contenu en moins de 5 ms, des titres Apple Intelligence, l'OCR de captures d'écran, l'indexation sémantique, des Dev Actions (décodage JWT, formatage JSON, Base64, analyse d'URL, conversion de couleurs, formats UUID) également exposées comme App Intents, le Smart Paste pour la réécriture/traduction/rédaction de PII, des Q&A basées sur l'historique et des suggestions automatiques de tableaux. Chaque étape possède son propre commutateur dans l'écran Intelligence.
La synchronisation utilise CKSyncEngine via la base de données iCloud privée de l'utilisateur derrière une frontière SyncEngine, avec un statut de synchronisation visible. Les intégrations incluent un CLI gancho, un serveur MCP local optionnel avec des autorisations par client expirables et révocables, un contexte de tableau/temps explicite, des permissions de lecture/écriture indépendantes et un journal d'accès aux seules métadonnées, ainsi qu'une commande VS Code « Save Selection ». La monétisation utilise StoreKit 2 pour l'achat, la restauration et les droits, avec un paywall contextuel et des limites pour le niveau gratuit ; le build en téléchargement direct peut acheter, activer, revalider et désactiver une licence Pro via Lemon Squeezy sans intégrer de secret de paiement, et le mode Pro déverrouille la synchronisation iCloud cryptée. Les diagnostics anonymes optionnels restent désactivés jusqu'au consentement explicite, et le reçu d'activité du Privacy Center conserve des totaux par application bornés sur l'appareil pendant 13 mois glissants sans synchronisation ni export.
Côté ingénierie, le projet utilise XcodeGen, la concurrence stricte de Swift 6, un catalogue de chaînes bilingue anglais/espagnol, le support de l'accessibilité et un package SwiftPM unique (GanchoKit) contenant huit produits de bibliothèque plus un CLI. La CI couvre le build, les tests et le lint, un seuil de couverture de source de production imposé, l'automatisation sérialisée de StoreKit et la performance à l'échelle. La compilation nécessite macOS 15.4+, Xcode 26+ et XcodeGen, avec des cibles make documentées pour les tests, les installations sur appareils iOS, le packaging, la QA de release et les vérifications du site. Le README crédite GRDB.swift, SQLCipher, KeyboardShortcuts, Sauce et TelemetryDeck comme travaux open-source sous-jacents. Licence : MIT, © 2026 Johnny Young.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.