🚀 Objectif du projet
Un client de transfert de fichiers natif pour macOS, pensé pour un usage personnel puis professionnel. Le parti pris : la sécurité n'est pas une couche ajoutée après coup, c'est un objectif de conception — les secrets vivent exclusivement dans le trousseau macOS, la liste des profils n'affiche jamais l'hôte, et les mises à jour sont signées.
🧱 Stack
- Backend : Rust, via Tauri v2 — binaire natif léger, pas de Chromium embarqué
- Interface : Angular 20 (signals, OnPush, prêt pour le zoneless)
- Terminal intégré : xterm.js sur la session SSH déjà authentifiée
- Typographie : Satoshi pour l'interface, JetBrains Mono pour les données — polices embarquées, aucune ressource distante
⚙️ Fonctionnalités
Connexions
- SFTP en protocole principal, FTPS (certificats validés par le système), FTP legacy accepté mais avec un avertissement « en clair » permanent
- Clé SSH auto-détectée dans
~/.ssh(ed25519 en priorité), passphrase supportée, mot de passe en repli - Profils multi-serveurs avec environnements Dev / Staging / Prod — badge rouge pulsant impossible à rater sur la prod
- Pool de connexions persistant : un transfert long ne bloque ni la navigation ni les autres transferts
Explorateur
Un dock façon éditeur de code : 8 panneaux à glisser, empiler en onglets, redimensionner — serveur, local, arborescence, aperçu, transferts, journal, suivi de logs en direct (tail -F), terminal SSH. La disposition est persistée et le DOM n'est jamais recréé : le terminal et les positions de scroll survivent aux réagencements.
Transferts
- Streaming par chunks de 1 Mio : mémoire bornée quel que soit le poids du fichier
- Reprise après coupure : écriture vers
*.charonpartpuis renommage atomique — un transfert interrompu repart là où il s'était arrêté - Écrasement protégé : détection de conflit si la version serveur est plus récente, avec aperçu de diff côte à côte façon GitHub
Garde-fous
- Toute suppression distante exige de retaper le nom d'hôte
- Mode lecture seule par serveur : tout chemin d'écriture est refusé côté service
- Fermeture d'inactivité réglable, suspendue tant qu'un transfert, un terminal ou une édition est en cours
Productivité
- Palette de commandes
Cmd+K: profils, navigation, panneaux, thèmes, réglages - Édition externe : le fichier distant s'ouvre dans ton éditeur et se re-uploade automatiquement à chaque sauvegarde
🔒 Statut
Privé, macOS uniquement pour l'instant — mises à jour signées intégrées à l'application.