Après plusieurs semaines de travail et une grosse phase de modernisation des outils de dev (évoquée précédemment), je suis ravi d’annoncer la sortie de SeedboxSync 4.0.0 !
Cette nouvelle version majeure marque un tournant dans le projet. Après une v1 pratique mais moche en Python 2, puis une v2 qui n’était qu’un portage vers Python 3, la dernière grande évolution était la v3 (qui reposait sur le framework Cement et l’ORM Peewee). Cette v3 avait introduit un frontend sous Flask. Mais jusqu’à présent, SeedboxSync (le moteur CLI) et SeedboxSyncFrontend (l’interface Web) vivaient dans deux dépôts et applications distinctes. Avec la v4, tout a été remis à plat pour regrouper l’ensemble sous une seule et même application, plus simple à déployer, plus fluide et bien plus robuste.
Voici un tour d’horizon des nouveautés et des changements majeurs.
Ce qui change : Fusion et migration de la configuration
Le plus gros chantier de cette v4 réside dans l’architecture même de l’application :
- Fusion du CLI et du Web (#114) : L’interface en ligne de commande a été totalement réécrite avec Click (qui fait partie du projet Flask utilisé pour le front, donc la boucle est bouclée). Le frontend Web et le CLI font désormais partie d’un seul et unique package. Fini le jonglage entre deux conteneurs ou deux dépôts distincts !
- Configuration en base de données (#115) : C’est le changement le plus important pour les utilisateurs existants. La configuration ne se fait plus via des fichiers YAML, mais est désormais stockée en base de données. Il faudra donc reconfigurer l’application lors de la mise à jour (voir à la fin de l’article).
- Gestionnaire de tâches Python natif (#124) : Le bon vieux cron a tiré sa révérence au profit d’un scheduler directement intégré en Python (huey), permettant un contrôle beaucoup plus fin de l’exécution des synchronisations.
- Passage au mode SQLite WAL : Pour accompagner la fusion et la gestion des tâches concurrentes, la base SQLite passe en mode WAL (Write-Ahead Logging), ce qui améliore nettement les performances lors des lectures/écritures simultanées entre le Web et le background worker.

Nouvelles fonctionnalités utilisateur
Outre ces changements sous le capot, cette v4 apporte plusieurs fonctionnalités facilitant le quotidien (et certaines demandées par les utilisateurs) :
- Planification personnalisée (#93) : Vous pouvez enfin définir une planification de la synchronisation sur mesure selon vos besoins.
- Désactivation de la synchro (#116) : Il est désormais possible de mettre en pause la synchronisation automatique directement depuis l’application.
- Lancement manuel à la demande : Un bouton permet désormais de déclencher immédiatement une tâche de synchronisation depuis l’interface Web.
- Personnalisation de l’IHM : Vous pouvez maintenant choisir votre thème (claire, sombre et auto) et votre langue (anglais, français et auto) directement dans les paramètres de l’interface.

Docker, Qualité et CI/CD
Côté conteneurisation et intégration continue, le projet en a profité pour faire un grand nettoyage :
- Healthcheck Docker unifié (#108) : Un nouveau healthcheck vérifie désormais la bonne santé de tous les services internes au conteneur.
- Outillage Dev moderne : Comme je l’évoquais dans mon récent article sur la modernisation de ma stack dev, le projet s’appuie désormais sur Just (remplaçant Make) #132, Ruff (remplaçant Flake8/isort/Black) #134 et basedpyright en complément de mypy #133.
Une documentation remise à neuf
Pour accompagner cette v4, la documentation a fait peau neuve :
- Migration du générateur de doc vers ProperDocs.
- Ajout du Changelog officiel directement dans la doc.
- Intégration de la référence d’API et des rapports de couverture de code.
Mettre à jour
Si vous utilisez l’image Docker officielle, la mise à jour se fait simplement en tirant le tag :latest. J’ai d’ailleurs mis à jour la documentation à ce sujet pour vous guider pas à pas.
Bons téléchargements et bonne synchronisation à tous !







