RemoteFilePanel appelait sftp.listdir_attr/mkdir/rename/remove/chmod/get
directement depuis le thread GUI : un dossier distant lent ou une latence
reseau gelait toute l'interface. Seuls upload/download passaient deja par un
thread dedie (TransferWorker), et celui-ci reutilisait le meme SFTPClient que
la navigation - paramiko.SFTPClient n'est pas concu pour etre pilote par
plusieurs threads a la fois.
- app/sftp/worker.py : SftpWorker, un thread proprietaire exclusif d'un canal
SFTP, avec une file de jobs (callables) et les resultats renvoyes par signal
Qt (marshalling automatique vers le thread GUI).
- RemoteFilePanel soumet desormais toutes ses operations via ce worker avec
callbacks succes/erreur ; un compteur de generation ignore les reponses de
navigations devenues obsoletes (double-clic rapide, edition puis navigation
ailleurs pendant le renvoi).
- TransferWorker ouvre son propre canal SFTP (`sftp_factory`) au lieu de
partager celui de la navigation : un gros transfert ne bloque plus le
listage de dossiers. SFTPPanel(sftp, transfer_sftp_factory=...) permet
d'injecter ce second canal (paramiko.SFTPClient.from_transport) ; a defaut,
le canal de navigation est reutilise tel quel (cas des tests).
- SessionTabWidget/SFTPTabWidget ouvrent ce second canal et appellent
SFTPPanel.shutdown() a la fermeture de l'onglet (arrete proprement les
threads avant destruction des widgets).
tests/test_sftp.py adapte pour pomper la boucle d'evenements Qt apres les
operations desormais asynchrones (meme couverture, timing different).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Edition SFTP facon WinSCP : clic droit sur un fichier distant > "Editer".
Le fichier est telecharge dans un temporaire, ouvert avec l'application
associee du systeme, et renvoye automatiquement a chaque enregistrement.
Beaucoup d'editeurs enregistrent en remplacant le fichier plutot qu'en le
reecrivant : le chemin surveille disparait alors du QFileSystemWatcher, il est
donc reinscrit apres chaque renvoi pour que les enregistrements suivants
fonctionnent aussi.
Journalisation : un bouton dans la barre de l'onglet enregistre toute la
session dans un fichier. Les sequences d'echappement ANSI sont retirees pour
que le journal reste lisible dans un editeur de texte.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reunit en un seul outil les fonctions utiles de MobaXterm, Termius et Bitvise,
sans compte ni service tiers, avec toutes les donnees en local.
- Terminaux multi-onglets : sessions SSH et terminaux Windows locaux
(PowerShell / cmd) via la pseudo-console native ConPTY
- Gestionnaire de fichiers SFTP facon WinSCP : double panneau, colonnes
triables, glisser-deposer, renommage, permissions, file de transferts.
Ouvrable sur une connexion en cours sans creer de favori
- Gestion des cles SSH : generation Ed25519/RSA, import, export
- Gestion du fichier known_hosts, avec remplacement guide d'une cle d'hote
modifiee (cas frequent des serveurs en DHCP)
- Trois themes (clair, bleu nuit, noir), commutables a chaud
- Authentification automatique reprenant le comportement de la commande ssh
(agent SSH et cles ~/.ssh), mot de passe demande seulement en secours
Aucun mot de passe n'est stocke sur le disque.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>