# Changelog ## [1.3.0] - Sécurité - Ajout d'une page de login (identifiant + mot de passe) - Session Flask sécurisée (HttpOnly, SameSite Lax, durée configurable) - Protection timing attack via `hmac.compare_digest` - Toutes les routes API protégées par `@login_required` - Bouton Déconnexion dans le header - Credentials configurables dans le `docker-compose.yml` (`APP_USERNAME`, `APP_PASSWORD`, `SECRET_KEY`) ## [1.2.0] - Pause et Stop - Bouton ⏸ Pause — suspend le transfert entre deux chunks - Bouton ⏹ Stop — annule le transfert et supprime le fichier partiel - Les boutons sont grisés quand aucun transfert n'est actif - État pause/stop correctement restauré à la reconnexion ## [1.1.0] - Cache et performance - Cache serveur avec TTL configurable (`CACHE_TTL`, défaut 60s) - Prefetch automatique des 5 premiers sous-dossiers en arrière-plan - Invalidation du cache après mkdir, rename et fin de transfert - Bouton ↻ Actualiser force un rechargement en bypass du cache ## [1.0.2] - Corrections - Fix : double ajout en queue lors d'un transfert (push local supprimé, sync via serveur uniquement) - Fix : `transfer_stop` / `transfer_pause` non déclarés en `global` dans `queue_worker`, coupant tous les transferts suivants après un premier Stop - Fix : IndentationError sur `transfer_thread = None` introduite par un patch sed ## [1.0.1] - Reconnexion et progression - Synchronisation de la file d'attente au rechargement de la page via `/api/queue` - Le transfert en cours et son pourcentage sont restaurés à la reconnexion - `current_percent` suivi côté serveur pour être exposé à la reconnexion ## [1.0.0] - Version initiale - Interface dual-pane Seedbox / NAS - File d'attente séquentielle avec progression WebSocket en temps réel - Navigation par double-clic avec breadcrumb - Sélection multiple côté seedbox - Création de dossiers sur les deux panneaux - Renommage côté NAS uniquement - Seedbox montée en lecture seule (`:ro`) - Serveur Flask + Eventlet pour les requêtes concurrentes pendant les transferts - Compatible smartphone ## [2.0.0] - Architecture plugin - Refonte complète en architecture plugin pour les systèmes de fichiers - Interface `AbstractFS` dans `plugins/base.py` — tout plugin hérite de cette classe - Plugin `LocalFS` (`plugins/local.py`) — remplace le code direct `os.*` précédent - Plugin `SFTPfs` (`plugins/sftp.py`) — accès SFTP via Paramiko avec prefetch - Registre auto-découverte (`plugins/__init__.py`) — tout fichier dans `plugins/` est chargé automatiquement - Ajouter un nouveau protocole = créer un seul fichier `plugins/monprotocole.py` - Gestion des connexions dans l'interface : ajout, suppression, test de connexion - Chaque panneau peut pointer vers n'importe quelle connexion configurée - Les connexions sont persistées dans `data/connections.json` (volume Docker) - Connexions par défaut (Seedbox/NAS locaux) créées automatiquement depuis les variables d'environnement - Moteur de copie universel : fonctionne entre n'importe quels deux FS (Local→SFTP, SFTP→Local, Local→Local…) - Ajout de `paramiko` dans les dépendances - Nouveau volume `./data:/app/data` pour la persistance des connexions