Sous-titre : utilitaire macOS natif pour la conversion documentaire en lot, localement, de façon fiable et prévisible.
MuniConversion est une application macOS (Swift + SwiftUI) qui orchestre des conversions de documents en lot via LibreOffice en mode headless, avec filtrage strict, journalisation claire et mode simulation.
- Rôle: outil spécialisé de conversion dans l'écosystème Orchiviste.
- Orchiviste reste le cockpit/hub; MuniConversion reste un outil autonome dédié.
- Standardiser les conversions documentaires bureautiques de façon locale, fiable et auditable.
- Réduire la manipulation manuelle répétitive avant archivage et traitement métier.
- Éviter les manipulations manuelles répétitives de conversion fichier par fichier.
- Standardiser les traitements bureautiques (archives, administration, dossiers partagés).
- Garder un outil simple, local, auditable, open source et maintenable.
- Réduire les erreurs humaines grâce au filtrage strict et au mode simulation.
- Préparer des lots de documents bureautiques pour archivage PDF.
- Migrer des anciens formats (
.doc,.xls,.ppt) vers des formats récents. - Uniformiser un dossier de travail avant diffusion.
- Vérifier en simulation ce qui serait converti avant toute exécution réelle.
- Sélection d’un dossier source (sélecteur natif macOS)
- Scan avec ou sans sous-dossiers
- Profils de conversion prédéfinis :
- DOC -> DOCX
- DOC -> PDF
- DOCX -> PDF
- DOCX -> DOC
- XLS -> XLSX
- XLS -> PDF
- XLSX -> PDF
- XLSX -> XLS
- PPT -> PPTX
- PPT -> PDF
- PPTX -> PDF
- PPTX -> PPT
- RTF -> DOCX
- RTF -> PDF
- TXT -> PDF
- ODT -> PDF
- ODS -> PDF
- ODP -> PDF
- Filtrage strict par extension source, insensible à la casse
- Recherche rapide de profil dans la zone Conversion
- Résumé explicite du profil actif (filtre source, cible, format LibreOffice)
- Exclusion des fichiers temporaires/système (
~$*,.DS_Store, fichiers cachés selon option) - Sortie au choix : dossier source ou dossier de sortie distinct
- Option de préservation de l’arborescence relative
- Gestion des collisions : ignorer, remplacer, renommer automatiquement
- Journal détaillé :
matched,ignored,converted,failed,skippedExisting,dryRun - Export du journal en
.txt - Mode simulation (dry run)
- Détection et test de LibreOffice
- Arrêt en cours de traitement
- Mémorisation des derniers réglages
- Interface multilingue (Français / English / Español) avec sélection de langue dans l'app
MuniConversion ne modifie pas et ne supprime pas les fichiers d’origine.
- Les conversions créent uniquement de nouveaux fichiers de sortie.
- En mode simulation, aucune conversion réelle n’est exécutée.
- En cas d’erreur sur un fichier, le lot continue sur les autres fichiers.
- Toujours commencer par un passage en mode simulation sur un nouveau lot.
- Vérifier le dossier de sortie et la politique de collision avant lancement.
- Conserver des sauvegardes de vos dossiers sensibles.
- Contrôler un échantillon de fichiers convertis avant diffusion massive.
MuniConversion est une interface graphique : le moteur de conversion repose sur LibreOffice (soffice).
Chemins testés automatiquement :
/Applications/LibreOffice.app/Contents/MacOS/soffice/Applications/LibreOfficeDev.app/Contents/MacOS/soffice/opt/homebrew/bin/soffice/usr/local/bin/soffice
Sans LibreOffice exécutable, la conversion réelle est bloquée avec un message explicite.
- macOS 13+
- Xcode 15+ (recommandé)
- LibreOffice installé
Le projet est un Swift Package macOS ouvrable dans Xcode.
- Ouvrir
Package.swiftdans Xcode. - Sélectionner le schéma
MuniConvert. - Lancer l’application.
En ligne de commande :
swift build
swift run MuniConvertMode canonique OrchivisteKit (CLI JSON V1) :
swift run municonversion-cli run --request request.json --result result.json- Choisir un dossier source.
- Choisir le profil de conversion.
- Configurer les options (sous-dossiers, sortie, collisions).
- Choisir la langue de l’interface dans
Paramètressi besoin. - Optionnel : activer
Simulation seulement. - Cliquer sur
AnalyserpuisLancer la conversion. - Contrôler le journal et exporter le log si nécessaire.
Le mode canonique est disponible via municonversion-cli avec la commande:
municonversion-cli run --request <file> --result <file>Points de sécurité:
dry_run=truepar défaut- conversion réelle uniquement avec
dry_run=falseetconfirm_convert=true - sans confirmation explicite, la commande retourne une erreur canonique et n'exécute aucune conversion destructive
MuniConversion/
├── Package.swift
├── Sources/
│ └── MuniConvert/
│ ├── App/
│ ├── Models/
│ ├── Services/
│ ├── Utilities/
│ ├── ViewModels/
│ └── Views/
├── .github/workflows/ci.yml
├── docs/RELEASES.md
├── ROADMAP.md
├── README.md
├── LICENSE
├── CONTRIBUTING.md
└── CHANGELOG.md
- Qualité de conversion dépendante de LibreOffice et des documents d’entrée.
- Traitement séquentiel (pas de parallélisation dans ce MVP).
- Traduction actuellement fournie en 3 langues (FR/EN/ES).
- Ajouter des tests unitaires (filtrage, collisions, chemins cibles)
- Ajouter davantage de profils de conversion
- Ajouter un packaging
.appsigné/notarisé - Améliorer le reporting de fin de lot
Feuille de route détaillée: voir ROADMAP.md.
- Plan de releases : voir
docs/RELEASES.md - Guide build/release : voir
docs/BUILD_AND_RELEASE.md - CI GitHub :
swift build+swift testsur macOS à chaquepush/pull_request - Workflow de release macOS (
.app+.zip) :.github/workflows/release-macos.yml
- Guide distribution :
docs/MACOS_DISTRIBUTION.md - Setup secrets Apple pour signature/notarisation :
docs/APPLE_SECRETS_SETUP.md - Icône app personnalisée : déposer
assets/AppIcon.png(le build génère automatiquementassets/AppIcon.icns)
MuniConversion peut être distribué sans signature/notarisation:
- Le workflow release publie un ZIP ad-hoc signé (
*-unsigned.zip) mais non notarisé - L'application reste utilisable localement
Premier lancement sur macOS (app non signée):
- Clic droit sur l'app >
Ouvrir - Confirmer l'ouverture
- Si nécessaire:
Réglages Système > Confidentialité et sécurité > Ouvrir quand même
Si macOS affiche MuniConvert est endommagé (nom technique actuel du bundle):
- Supprimer l'ancienne copie de
MuniConvert.app - Télécharger une release >=
v1.0.3 - Redécompresser puis relancer avec clic droit >
Ouvrir
Ce projet est distribué sous licence GNU General Public License v3.0.
- Voir LICENSE
- Les fichiers source incluent un en-tête court
SPDX-License-Identifier: GPL-3.0-only
- Le projet suit
Semantic Versioning. - Référence actuelle:
1.3.0.
Le nom public est MuniConversion.
Certains identifiants techniques internes historiques restent temporairement en MuniConvert (package, targets, nom d'app dans les scripts et commandes) pour éviter un refactor applicatif dans cette passe.
- Politique de sécurité : SECURITY.md