From 651ae06e1ddf3382a896f20b82ef4efed9c9f648 Mon Sep 17 00:00:00 2001 From: Nicolas Domenech Date: Fri, 25 Sep 2026 16:34:07 +0200 Subject: [PATCH] [Mod] chore: version 23.1.0 Le trigger redeclare $version avec son type : sans cette redeclaration PHPStan la refuse, la baseline fige le numero, et la release suivante casse la CI. Co-Authored-By: Claude Opus 5 (1M context) --- README.md | 10 +- RELEASE_NOTES.md | 141 +++++++----------- core/modules/modDoliCar.class.php | 2 +- ...ce_99_modDoliCar_DoliCarTriggers.class.php | 7 +- phpstan.baseline.neon | 6 - phpstan.neon | 9 ++ 6 files changed, 71 insertions(+), 104 deletions(-) diff --git a/README.md b/README.md index 5f2577c..f14c798 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ## Informations - Numéro du module : 436380 -- Dernière mise à jour : 15/07/2026 +- Dernière mise à jour : 25/09/2026 - Éditeur : [Evarisk](https://evarisk.com) - Thème : Eldy Menu - Licence : GPLv3 @@ -11,10 +11,10 @@ ### Version -- Version : 23.0.0 +- Version : 23.1.0 - PHP : 7.4.33 -- Compatibilité : Dolibarr 21.0.0 - 23.0.2 -- Saturne Framework : 23.0.0 +- Compatibilité : Dolibarr 23.0.0 - 24.0.0 +- Saturne Framework : 23.2.1 ## Liens @@ -22,7 +22,7 @@ - Demo : [Demo Dolicar](https://demodoli.digirisk.com) - ID: demo - Password: demo - Documentation : [Wiki DoliCar](https://wiki.dolibarr.org/index.php/Module_Dolicar) - Projet GitHub : [Projet DoliCar](https://github.com/Eoxia/Dolicar/projects?query=is%3Aopen) -- Saturne Framework : [Télécharger Saturne](https://dolistore.com/fr/modules/1906-Saturne.html) +- Saturne Framework : 23.2.1 - D'autres modules développés par Evarisk disponibles sur [Dolistore.com](https://dolistore.com) ## Fonctionnalités diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 03a3021..c7fb2b8 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,110 +1,69 @@ -# [DoliCar] [23.0.0] - Carnet de bord véhicule public (PWA) - Historique véhicule enrichi - PDF natifs - Import CSV +# [DoliCar] [23.1.0] - Carnet de bord affiné - Historique véhicule enrichi - Dolibarr 24 -Description : Cette version fait entrer DoliCar dans le suivi terrain avec une **PWA publique de carnet de bord** (prise/restitution de véhicule, photos, commentaires vocaux, signatures, signalement de problème) accessible sans compte Dolibarr. L'historique véhicule est considérablement enrichi (notes de frais, documents fournisseurs, contrôles DigiQuali, rapports de problème), les documents livret d'entretien et carnet de bord passent du modèle ODT à une **génération PDF native**, et un **import CSV des cartes grises** est ajouté. +Description : Cette version affine le **carnet de bord** : la restitution du véhicule note qui le rend, le seuil de kilométrage d'arrivée avertit au lieu de bloquer, et le signalement de problème s'appuie sur un **modèle d'email configurable**. L'**historique du véhicule** reçoit les factures validées et permet de corriger un kilométrage depuis le back-office, motif à l'appui. La création rapide gagne les champs du tiers et applique l'API de carte grise configurée. Le module est déclaré compatible **Dolibarr 24**, et les deux motifs de refus du contrôle de paquet du Dolistore sont corrigés. + +**Cette version demande Saturne 23.2.1 ou supérieur.** ## Nouvelles fonctionnalités et innovations -### Carnet de bord véhicule public (PWA) +### Carnet de bord -* Nouvelle application publique (PWA) accessible sans authentification pour la prise et la restitution de véhicule. -* Liste publique des véhicules : barre de recherche, affichage 2 colonnes avec plus d'informations, barre de navigation basse. -* Carte véhicule publique compacte + sélecteur de conducteur interne / externe. -* États **avant / après** avec photos, générés en fiches PDF. -* Écran des trajets : téléchargement du PDF par trajet, ouverture du PDF en ligne, photos départ / retour. -* Pré-remplissage du kilométrage avec la dernière valeur connue. -* Commentaires **photo et vocaux** lors de la prise / restitution du véhicule. -* Signatures des conducteurs intégrées au PDF du carnet de bord. -* **Signaler un problème** (commentaire, photo, message vocal) avec envoi d'un e-mail au gestionnaire. -* PWA forcée en pleine largeur sur mobile et sur tous les écrans. -* Création de réparation et de contrôle DigiQuali depuis le pied de page, ouverture du contrôle dans un nouvel onglet. +* La restitution du véhicule enregistre **qui le rend**. +* Le **signalement de problème** utilise un modèle d'email configurable, avec un lien vers la liste des modèles depuis la configuration. - +### Historique du véhicule -### Historique véhicule enrichi +* Les **factures validées** alimentent l'historique. +* Un **kilométrage** peut être corrigé depuis le back-office, avec motif obligatoire. -* Liaison de **lignes de note de frais** spécifiques (type, projet, commentaire) à un événement véhicule. -* Liaison des **documents fournisseurs et notes de frais** aux événements véhicule, avec configuration dans l'admin. -* Affichage dans l'historique des **rapports de problème** remontés depuis le carnet de bord public. -* Type d'événement rendu optionnel (repli sur « Autre ») pour pouvoir rattacher documents et lignes sans en choisir un. -* Aperçu PDF (loupe / magnifier) sur les documents liés d'un événement. +### Création rapide - +* Les **champs du tiers** sont proposés dans l'assistant de carte grise. +* La recherche par plaque applique l'**API de carte grise configurée**. -### Documents : passage au PDF natif +### Contrôle public -* Migration du **livret d'entretien** et du **carnet de bord** du modèle ODT vers une génération **PDF native**. -* Fiches d'état avant / après et photos intégrées au PDF. -* Libellé de catégorie et coût de facture ajoutés au livret d'entretien. +* L'onglet de contrôle public expose les **documents de la carte grise**. - +## Améliorations & corrections -### Import CSV des cartes grises +### Carnet de bord -* Nouvel import CSV des cartes grises (certificats d'immatriculation). +* Le seuil de kilométrage d'arrivée **avertit** au lieu de bloquer la saisie. +* Le bloc de signalement de problème n'étire plus la page de configuration. - +### Conformité du paquet Dolistore -### Carte grise / certificat d'immatriculation +* Le contrôle de paquet refusait le zip : `manifest.json.php` chargeait l'environnement Dolibarr par un `require` unique, alors que la règle demande **au moins deux tentatives** — une pour le module à la racine de Dolibarr, une pour le module dans `custom`. +* Second motif : les classes de DigiQuali étaient incluses par un chemin `/custom` en dur. Elles passent par `dol_include_once`, ce qui **répare au passage l'onglet historique du véhicule**, jusqu'ici fatal dès que DigiQuali n'était pas installé — son include n'était pas gardé par `isModEnabled`. -* Bannière refondue : liens stylés avec logos des modules (carnet de bord + contrôle qualité), logo DoliCar et lien vers l'interface de contrôle qualité. -* Objets liés : colonne **montant** avec total et filtre recherche / verdict, ligne de recherche par colonne façon listes natives Dolibarr. -* Bouton de **suppression** avec confirmation sur la fiche. -* Affichage de la plaque d'immatriculation sur la carte de contrôle public. +### Compatibilité -## Améliorations & corrections +* Le module déclare **Dolibarr 23 au minimum et 24 au maximum**. + +### Intégration continue + +* Les pull requests passent désormais **PHPStan**, un **lint PHP** et un contrôle de **parité des fichiers de langue** français / anglais. +* Les assets sont compilés par la chaîne du socle et vérifiés sur les pull requests, le gulpfile local est supprimé. +* La version du trigger est déclarée avec son type, et les classes bouchons des tests de Saturne sont sorties du périmètre analysé — deux pièges qui rendent la chaîne qualité cassante ou faussement verte d'une release à l'autre. + +## Comparaison des versions [23.0.0](https://github.com/Evarisk/dolicar/compare/23.0.0...23.1.0) et 23.1.0 -### Carnet de bord public - -* Densification du formulaire prise / restitution : réduction des marges, paddings et tailles pour limiter le défilement. -* Labels des champs masqués au profit des seuls titres de carte, inputs kilométrage / date réduits. -* Bloc carburant resserré, pad de signature agrandi pour le mobile. -* Alignement et taille homogènes des boutons média (photo / audio), neutralisation du style pico.css sur le bloc média Saturne. -* Icônes de la barre basse ne débordant plus du pied de page. - -### Historique / événements véhicule - -* Lecture directe des liens de lignes de note de frais (`fetchObjectLinked` ignorait le type hors module). -* Libellé du type de frais traduit via son code (langue « trips »), usage de `transnoentities` pour éviter les entités HTML. -* Affichage de la note à la place de la date dans le sélecteur de ligne de note de frais. -* Rendu des sauts de ligne des notes au lieu du `
` littéral. -* Suppression de l'adresse IP dans la note de rapport de problème. - -### Documents - -* Livret d'entretien : suppression de la colonne garage, repack de l'ODT avec le `mimetype` en première entrée, `dol_print_date` en remplacement de `dolOutputDates`. -* Suppression du modèle de document avant réajout pour éviter les doublons à la réinstallation. - -### Divers - -* `printFieldListOption` : ancrage de la regex de contexte pour éviter un objet null (`#430`). -* Numéro d'immatriculation masqué sur les cartes proposition et facture (`#411`). -* Sous-menu de création rapide rattaché au certificat d'immatriculation (`#419`). -* Recompilation de `dolicar.min.css` depuis les sources SCSS. - -## Comparaison des versions [22.0.0](https://github.com/Evarisk/dolicar/compare/22.0.0...23.0.0) et 23.0.0 - -* [#464] [VehicleHistory] feat: pdf preview magnifier on linked documents [`5972e7b`](https://github.com/Evarisk/dolicar/commit/5972e7b) -* [#466] [VehicleLogBook] departure/return photos in state sheet PDF, prefill mileage, photo editor modal, thumbnail sizing [`ec324c0`](https://github.com/Evarisk/dolicar/commit/ec324c0) [`4e8b034`](https://github.com/Evarisk/dolicar/commit/4e8b034) [`12efdb0`](https://github.com/Evarisk/dolicar/commit/12efdb0) [`8ea9eed`](https://github.com/Evarisk/dolicar/commit/8ea9eed) -* [#457] [VehicleLogBook] public trips screen with per-trip PDF & depart/return photos, before/after state PDF sheets, success screen [`32014ff`](https://github.com/Evarisk/dolicar/commit/32014ff) [`780e374`](https://github.com/Evarisk/dolicar/commit/780e374) [`9b4cee4`](https://github.com/Evarisk/dolicar/commit/9b4cee4) [`a51deba`](https://github.com/Evarisk/dolicar/commit/a51deba) -* [#456] [VehicleLogBook] bottom nav bar + public vehicles list, search bar, 2-column list, driver picker, repair/DigiQuali from footer, full-width PWA [`54b670b`](https://github.com/Evarisk/dolicar/commit/54b670b) [`f4f9001`](https://github.com/Evarisk/dolicar/commit/f4f9001) [`0baa676`](https://github.com/Evarisk/dolicar/commit/0baa676) [`c9fc272`](https://github.com/Evarisk/dolicar/commit/c9fc272) [`f776e04`](https://github.com/Evarisk/dolicar/commit/f776e04) [`6e736a8`](https://github.com/Evarisk/dolicar/commit/6e736a8) [`07fa80e`](https://github.com/Evarisk/dolicar/commit/07fa80e) [`7f6ac1e`](https://github.com/Evarisk/dolicar/commit/7f6ac1e) [`caf79ce`](https://github.com/Evarisk/dolicar/commit/caf79ce) [`80f9edb`](https://github.com/Evarisk/dolicar/commit/80f9edb) -* [#452] [VehicleEvent] link specific expense report lines (type, project, comment), optional event type, fee label fixes [`9847084`](https://github.com/Evarisk/dolicar/commit/9847084) [`3a9fe22`](https://github.com/Evarisk/dolicar/commit/3a9fe22) [`c512781`](https://github.com/Evarisk/dolicar/commit/c512781) [`9a34b86`](https://github.com/Evarisk/dolicar/commit/9a34b86) [`960c9ac`](https://github.com/Evarisk/dolicar/commit/960c9ac) [`9a40338`](https://github.com/Evarisk/dolicar/commit/9a40338) [`4b889a6`](https://github.com/Evarisk/dolicar/commit/4b889a6) -* [#448] [RegistrationCertificate] styled banner links with module logos, amount column with total/filter, per-column search row [`e0239bc`](https://github.com/Evarisk/dolicar/commit/e0239bc) [`29986c8`](https://github.com/Evarisk/dolicar/commit/29986c8) [`ce68d6c`](https://github.com/Evarisk/dolicar/commit/ce68d6c) [`b00b1fb`](https://github.com/Evarisk/dolicar/commit/b00b1fb) [`a3970d6`](https://github.com/Evarisk/dolicar/commit/a3970d6) [`258ea39`](https://github.com/Evarisk/dolicar/commit/258ea39) -* [#446] [PublicVehicleLogBook] photo & voice comments on pickup/return, densified form [`cf5af41`](https://github.com/Evarisk/dolicar/commit/cf5af41) [`6ea43fd`](https://github.com/Evarisk/dolicar/commit/6ea43fd) [`2448e57`](https://github.com/Evarisk/dolicar/commit/2448e57) [`a609119`](https://github.com/Evarisk/dolicar/commit/a609119) [`0c3f1a6`](https://github.com/Evarisk/dolicar/commit/0c3f1a6) [`a953efb`](https://github.com/Evarisk/dolicar/commit/a953efb) -* [#443] [PublicVehicleLogBook] report a problem (comment, photo, voice) with email to manager, show reports in history [`7ffabfa`](https://github.com/Evarisk/dolicar/commit/7ffabfa) [`829613d`](https://github.com/Evarisk/dolicar/commit/829613d) [`611bdc1`](https://github.com/Evarisk/dolicar/commit/611bdc1) [`46d700b`](https://github.com/Evarisk/dolicar/commit/46d700b) [`9515fa1`](https://github.com/Evarisk/dolicar/commit/9515fa1) [`382cfce`](https://github.com/Evarisk/dolicar/commit/382cfce) [`63e5f88`](https://github.com/Evarisk/dolicar/commit/63e5f88) [`58bb194`](https://github.com/Evarisk/dolicar/commit/58bb194) -* [#442] [PublicControl] add: show vehicle registration plate on public control card [`aafd105`](https://github.com/Evarisk/dolicar/commit/aafd105) -* [#439] [VehicleLogBook] add: driver signatures in logbook pdf, save public signature + submit feedback [`a862674`](https://github.com/Evarisk/dolicar/commit/a862674) [`1d6daa0`](https://github.com/Evarisk/dolicar/commit/1d6daa0) -* [#437] [VehicleHistory] feat: link supplier docs/expense reports to vehicle events + admin config [`c48d00f`](https://github.com/Evarisk/dolicar/commit/c48d00f) -* [#432] [LivretEntretien] rework: switch maintenance booklet and logbook from ODT to native PDF [`1888468`](https://github.com/Evarisk/dolicar/commit/1888468) -* [#430] [ExtraField] fix: anchor printFieldListOption context regex to avoid null object [`f90ac02`](https://github.com/Evarisk/dolicar/commit/f90ac02) -* [#424] [LivretEntretien] feat: add category label and invoice cost to livret [`e6f6376`](https://github.com/Evarisk/dolicar/commit/e6f6376) -* [#419] [Menu] fix: make quickcreation submenu of registrationcertificatefr [`6e71193`](https://github.com/Evarisk/dolicar/commit/6e71193) -* [#418] [VehicleHistory] feat: manage event types via actioncomm categories + backward compat migration [`fed63a5`](https://github.com/Evarisk/dolicar/commit/fed63a5) [`cef210e`](https://github.com/Evarisk/dolicar/commit/cef210e) -* [#416] [VehicleHistory] feat: link invoices, proposals and digiquali controls to vehicle events [`123a8d9`](https://github.com/Evarisk/dolicar/commit/123a8d9) -* [#415] [LivretEntretien] fix: odt mimetype repack, remove garage column, dol_print_date [`830362e`](https://github.com/Evarisk/dolicar/commit/830362e) [`9c54663`](https://github.com/Evarisk/dolicar/commit/9c54663) [`935aebd`](https://github.com/Evarisk/dolicar/commit/935aebd) -* [#413] [RegistrationCertificateFr] inline digiquali control creator widget on fk_lot row, api error messages, css [`d9d2b6f`](https://github.com/Evarisk/dolicar/commit/d9d2b6f) [`ca60654`](https://github.com/Evarisk/dolicar/commit/ca60654) [`ec26b11`](https://github.com/Evarisk/dolicar/commit/ec26b11) [`cdf5a67`](https://github.com/Evarisk/dolicar/commit/cdf5a67) [`cc61993`](https://github.com/Evarisk/dolicar/commit/cc61993) -* [#411] [ExtraField] fix: hide registration_number on propal and invoice card [`c298b73`](https://github.com/Evarisk/dolicar/commit/c298b73) -* [#410] [RegistrationCertificateFr] feat: merged actioncom list from card and vehicle history [`b679fb8`](https://github.com/Evarisk/dolicar/commit/b679fb8) [`a06c827`](https://github.com/Evarisk/dolicar/commit/a06c827) -* [#343] [Import] feat: import csv des cartes grises [`f025219`](https://github.com/Evarisk/dolicar/commit/f025219) -* [#336] [RegistrationCertificateFr] add: delete button and confirmation on card [`8fa9a7f`](https://github.com/Evarisk/dolicar/commit/8fa9a7f) -* [#266] [VehicleLogBookDocument] feat: add ODT document generation for vehicle logbook [`44324f0`](https://github.com/Evarisk/dolicar/commit/44324f0) -* [CSS] build: recompile dolicar.min.css from scss sources [`e701f0b`](https://github.com/Evarisk/dolicar/commit/e701f0b) +* [CI] fix: ajouter expensereport/class aux dossiers vus par PHPStan [`6a9a5e9`](https://github.com/Evarisk/dolicar/commit/6a9a5e9) +* [#505] [CI] feat: PHPStan, lint PHP et parité des langues [`f432e88`](https://github.com/Evarisk/dolicar/commit/f432e88) +* [#503] [Module] fix: inclure les classes de DigiQuali par dol_include_once [`08f6419`](https://github.com/Evarisk/dolicar/commit/08f6419) +* [#501] [Module] fix: bootstrap main.inc.php à deux tentatives, exigé par le Dolistore [`e2c6fb7`](https://github.com/Evarisk/dolicar/commit/e2c6fb7) +* [#499] [Module] rework: bornes de version Dolibarr 23 minimum, 24 maximum [`ebfe861`](https://github.com/Evarisk/dolicar/commit/ebfe861) +* [#488] [VehicleHistory] feat: correct a mileage from the back office, reason required [`f2c4af2`](https://github.com/Evarisk/dolicar/commit/f2c4af2) +* [#495] [VehicleLogBook] feat: name who returns the vehicle, drop the mileage warning [`057ee7f`](https://github.com/Evarisk/dolicar/commit/057ee7f) +* [#492] [Setup] add: link to the email templates list from the problem report block [`c8015fd`](https://github.com/Evarisk/dolicar/commit/c8015fd) +* [#492] [Setup] fix: stop the problem report block from stretching the setup page [`bea8c59`](https://github.com/Evarisk/dolicar/commit/bea8c59) +* [#492] [VehicleLogBook] feat: configurable email template for the problem report [`9d57d52`](https://github.com/Evarisk/dolicar/commit/9d57d52) +* [#489] [VehicleLogBook] fix: warn instead of blocking over the arrival mileage threshold [`c40a191`](https://github.com/Evarisk/dolicar/commit/c40a191) +* [#485] [CI] fix: basculer les assets en mode verify, le robot ne peut plus pousser [`59cfcf5`](https://github.com/Evarisk/dolicar/commit/59cfcf5) +* [#483] [CI] feat: vérifier les assets compilés à chaque push [`d42c1f2`](https://github.com/Evarisk/dolicar/commit/d42c1f2) +* [#481] [CI] rework: compiler les assets via le socle, supprimer le gulpfile local [`ab7cb60`](https://github.com/Evarisk/dolicar/commit/ab7cb60) +* [#464] [VehicleHistory] feat: push validated invoices into the vehicle history [`31efcfa`](https://github.com/Evarisk/dolicar/commit/31efcfa) +* [#476] [QuickCreation] fix: apply the configured registration certificate api to the plate search [`6805887`](https://github.com/Evarisk/dolicar/commit/6805887) +* [#473] [QuickCreation] feat: add third party fields to registration certificate wizard [`4d81572`](https://github.com/Evarisk/dolicar/commit/4d81572) +* [#470] [PublicControl] feat: expose registration certificate documents on public control tab [`95de420`](https://github.com/Evarisk/dolicar/commit/95de420) diff --git a/core/modules/modDoliCar.class.php b/core/modules/modDoliCar.class.php index 6e856ff..36dd18e 100644 --- a/core/modules/modDoliCar.class.php +++ b/core/modules/modDoliCar.class.php @@ -78,7 +78,7 @@ public function __construct($db) $this->editor_url = 'https://www.evarisk.com'; // Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated' or a version string like 'x.y.z' - $this->version = '23.0.0'; + $this->version = '23.1.0'; // Url to the file with your last numberversion of this module //$this->url_last_version = 'http://www.example.com/versionmodule.txt'; diff --git a/core/triggers/interface_99_modDoliCar_DoliCarTriggers.class.php b/core/triggers/interface_99_modDoliCar_DoliCarTriggers.class.php index f26c303..654bfce 100644 --- a/core/triggers/interface_99_modDoliCar_DoliCarTriggers.class.php +++ b/core/triggers/interface_99_modDoliCar_DoliCarTriggers.class.php @@ -34,6 +34,11 @@ class InterfaceDoliCarTriggers extends DolibarrTriggers */ protected $db; + /** + * @var string Trigger version. + */ + public $version; + /** * Constructor * @@ -46,7 +51,7 @@ public function __construct(DoliDB $db) $this->name = preg_replace('/^Interface/i', '', get_class($this)); $this->family = 'demo'; $this->description = 'DoliCar triggers.'; - $this->version = '23.0.0'; + $this->version = '23.1.0'; $this->picto = 'dolicar@dolicar'; } diff --git a/phpstan.baseline.neon b/phpstan.baseline.neon index e59235f..3ddce52 100644 --- a/phpstan.baseline.neon +++ b/phpstan.baseline.neon @@ -816,12 +816,6 @@ parameters: count: 1 path: core/triggers/interface_99_modDoliCar_DoliCarTriggers.class.php - - - message: '#^Property DolibarrTriggers\:\:\$version \(''''\|''development''\|''dolibarr''\|''experimental''\) does not accept ''23\.0\.0''\.$#' - identifier: assign.propertyType - count: 1 - path: core/triggers/interface_99_modDoliCar_DoliCarTriggers.class.php - - message: '#^PHPDoc tag @return has invalid value \(int \< 0 if KO, 0 when the invoice carries no vehicle or is already in the history, event ID otherwise\)\: Unexpected token "if", expected ''\>'' at offset 741 on line 13$#' identifier: phpDoc.parseError diff --git a/phpstan.neon b/phpstan.neon index 73b29cc..0dc8cc9 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -113,6 +113,15 @@ parameters: - CommonObject ignoreErrors: + # Le PHPDoc du coeur type DolibarrTriggers::$version comme une enumeration + # ('development', 'dolibarr', 'experimental'), alors que tous les modules y + # mettent leur numero de version. Fige dans la baseline, ce message casse la + # CI a chaque bump de version : il est ignore par motif. + - '#^Property DolibarrTriggers\:\:\$version \(.*\) does not accept .*\.$#' + # Contrepartie de cette redeclaration : le coeur type la propriete plus + # etroitement que string. Ce message-la ne contient aucun numero, il ne + # bouge donc pas d'une version a l'autre. + - '#^PHPDoc type string of property .*\:\:\$version is not covariant with PHPDoc type .* of overridden property DolibarrTriggers\:\:\$version\.$#' # Dolibarr ne documente jamais le type des valeurs d'un tableau (`@return array`), # donc cette erreur tomberait sur chaque nouveau fichier sans jamais pouvoir etre # resorbee.