L’application de bureau associe une interface React et TypeScript à un noyau Rust via Tauri 2 : l’interface s’affiche dans le WebView du système, la partie native gère le programme de mise à jour, le pont de l’extension et les intégrations de plateforme. La persistance du coffre fonctionne sur wa-sqlite avec une enveloppe de schéma versionnée.
L’extension de navigateur est un build TypeScript Manifest V3 pour Chromium et Firefox, et l’application Android est un projet Tauri Android avec liaison biométrique AndroidKeyStore. L’hôte de messagerie native et le pont IPC résident dans l’espace de travail Rust, où la logique du jeton d’appairage, du bail et du chiffrement des trames est la plus aisée à auditer.
Le site lui-même est du HTML simple validé dans le dépôt — pas d’étape de build pour le déploiement — avec des scripts générateurs et des garde-fous de qualité archivés à côté des pages qu’ils produisent.
Vérification des types et 2204 tests unitaires
248 fichiers de tests avec des seuils de couverture imposés : 90 % de lignes, 90 % d’instructions, 85 % de fonctions, 80 % de branches. Une régression sous le seuil fait échouer la compilation, pas un tableau de bord.
Garde-fous de fuzzing, de mutation et de sécurité
Des tests de propriétés avec fast-check martèlent l’importateur, les sauvegardes et les pièces jointes avec des entrées malformées. Les tests de mutation avec Stryker évaluent la qualité des tests. Des garde-fous dédiés contrôlent le durcissement de la CSP, les artefacts de version, les marqueurs de débogage et les secrets.
Analyse de la chaîne d’approvisionnement en CI
CodeQL analyse le code, OpenSSF Scorecard note la posture du dépôt, gitleaks bloque les secrets validés, et la politique de dépendances échoue sur toute alerte haute ou critique, les autres étant acceptées avec une justification documentée.