Releases: PierreEbele/cadenas
Release list
v1.4.0 - README en anglais, tags signes, provenance des releases
README en anglais, projet documenté (badge OpenSSF Best Practices, niveau
silver) et publication renforcée : tags de version signés, provenance jointe
aux releases. Aucun changement du format de fichier ni du chiffrement.
Ajouté
- README en anglais (
README.md, affiché par défaut sur GitHub et npm) ; la version française devientREADME.fr.md, avec un lien de l'un à l'autre. - Badge OpenSSF Best Practices (niveau silver) dans le README.
- Documentation du projet : gouvernance et rôles (
GOVERNANCE.md), code de conduite (Contributor Covenant 2.1), feuille de route (ROADMAP.md), architecture (docs/ARCHITECTURE.md), argumentaire de sécurité avec modèle de menace (docs/ASSURANCE.md). - ESLint (configuration recommandée) :
npm run lint, imposé par la CI, et style de code décrit dansCONTRIBUTING.md. - CI : couverture des tests de
src/etbin/mesurée à chaque push, avec un minimum de 80 % (npm run test:coverage).
Modifié
- Paquet npm : description en anglais, mots-clés plus complets, page d'accueil pointant vers le site.
- Publication npm : le npm fourni avec Node.js 24 est utilisé (et sa version vérifiée) au lieu d'installer une autre version non épinglée.
Sécurité
- Tags de version signés (SSH) : les workflows de publication (release, npm, Docker) vérifient la signature du tag avec
scripts/verify-tag.jset refusent de publier une version non signée. Procédure dansCONTRIBUTING.md, vérification dansSECURITY.md. - Releases GitHub : la provenance signée est jointe à chaque release (
.sigstore.jsonet.intoto.jsonlau format SLSA), pour une vérification hors ligne. SECURITY.md: processus de traitement des signalements de vulnérabilité (délais, publication, crédit).
Historique complet : CHANGELOG.md
v1.3.0 — hors ligne et exécutables autonomes
Site installable et utilisable hors ligne, exécutables autonomes de la CLI.
Aucun changement du format de fichier.
Ajouté
- Site installable et utilisable hors ligne (application web progressive) : manifeste, icônes, et service worker qui met en cache tous les fichiers du site. Une nouvelle version s'installe en arrière-plan et ne s'applique qu'après un clic sur « Mettre à jour », jamais au milieu d'un chiffrement.
- Image Docker : le service worker reçoit sa propre politique de sécurité (
connect-src 'self', pour mettre le site en cache) ; la page gardeconnect-src 'none'. Manifeste servi avec le bon type MIME. - Exécutables autonomes de la CLI, sans Node.js à installer : Windows x64, macOS arm64, Linux x64 et arm64. Construits par la CI (Node.js « Single Executable Application »), testés sur chaque plateforme avant publication, joints à chaque release avec empreintes et attestation de provenance.
npm run build:execonstruit celui de la plateforme courante. - Le workflow de release peut être lancé à la main pour tout construire et tester sans rien publier.
Modifié
- README : captures d'écran à jour (générateur de phrase de passe, sélecteur de langue), installation hors ligne.
Historique complet : CHANGELOG.md
v1.2.0 — plusieurs fichiers et dossiers, gros fichiers, entrée/sortie standard
Plusieurs fichiers et dossiers, fichiers de toute taille sur le site, et CLI
prête pour les scripts de sauvegarde. Aucun changement du format de fichier.
Ajouté
- Archives : plusieurs fichiers ou un dossier sont regroupés en une archive
.zipproduite en flux (src/archive.js, bibliothèque client-zip), puis chiffrés en un seul fichier. Arborescence et noms Unicode préservés, chemins nettoyés (ni chemin absolu ni..), doublons renommés, Zip64 au-delà de 4 Go, fichiers ouverts un par un. - Site : plusieurs fichiers ou un dossier entier, par glisser-déposer ou par sélection (bouton « Choisir un dossier entier »). Ils sont réunis dans
dossier.zip(oucadenas-AAAA-MM-JJ.zip) puis chiffrés ; au déchiffrement, le site rappelle qu'il suffit d'ouvrir l'archive. - Site : au-delà de 256 Mio, le résultat est écrit directement sur le disque (Chrome, Edge : le site demande où l'enregistrer avant de commencer), en mémoire constante quelle que soit la taille. Sur les autres navigateurs, un message conseille Chrome, Edge ou la ligne de commande pour plusieurs Go.
- CLI :
cadenas lockaccepte plusieurs fichiers et des dossiers (parcourus récursivement, liens symboliques ignorés) →dossier.zip.cadenasoucadenas-AAAA-MM-JJ.zip.cadenas. - CLI :
-pour l'entrée standard (cadenas lock -,cadenas unlock -) et-o -pour la sortie standard ; refus d'écrire du binaire dans un terminal. - CLI : option
--password-file <fichier>; quand l'entrée standard porte les données, le mot de passe est demandé directement au terminal.
Modifié
- CLI : les messages de réussite (« ✔ Fichier chiffré… ») passent sur la sortie d'erreur, pour que la sortie standard ne contienne que des données.
Historique complet : CHANGELOG.md
v1.1.0 — phrases de passe, version anglaise, publication vérifiable
Générateur de phrases de passe, site en anglais, et chaîne de publication
entièrement vérifiable. Aucun changement du format de fichier.
Ajouté
- Générateur de phrases de passe : bouton « Générer une phrase de passe » sur le site (avec copie en un clic) et commande
cadenas passphrase [--words n] [--lang fr|en]. 5 mots tirés sans biais par le générateur aléatoire du système, plus de 64 bits d'entropie. Listes de mots : Tails (français, CC0) et EFF (anglais, CC BY 3.0 US), chargées seulement à la demande sur le site. - Site : bouton « Annuler » pendant le chiffrement ou le déchiffrement.
- Site : le navigateur demande confirmation avant de quitter la page pendant un traitement, ou si le résultat n'a pas encore été téléchargé.
- Site en anglais : langue choisie d'après le navigateur, bouton « English / Français » en pied de page, choix mémorisé. Le générateur de phrases de passe utilise la liste de mots de la langue affichée.
Sécurité
- Dependabot : mises à jour hebdomadaires des dépendances npm, des actions GitHub et de l'image de base Docker ; correctifs de sécurité automatiques.
- Analyse CodeQL du code et des workflows à chaque push et chaque semaine.
- OpenSSF Scorecard : note publique des bonnes pratiques, badge dans le README.
- Signalement privé de vulnérabilités activé sur GitHub.
- Actions GitHub mises à jour vers leurs dernières versions majeures.
- Image Docker signée avec cosign (sans clé, Sigstore), avec SBOM et attestation de provenance.
- Releases GitHub créées automatiquement par la CI : notes tirées du CHANGELOG, site archivé (
cadenas-site-vX.Y.Z.zip), empreintesSHA256SUMSetsite-files.sha256, attestation de provenance vérifiable avecgh attestation verify. - SECURITY.md : comment vérifier le paquet npm, l'image Docker, les fichiers des releases et un site auto-hébergé.
- Dépendances de la CI épinglées : actions GitHub par empreinte de commit, images Docker de base par empreinte, version de npm fixée (Dependabot les tient à jour).
- Branche
mainprotégée contre la suppression et la réécriture d'historique. - Tests de propriétés (fuzzing avec fast-check) : aller-retour pour tout contenu, mot de passe et découpage ; détection de toute modification, troncature ou ajout d'octets ; refus propre d'entrées arbitraires.
Modifié
- README : capture d'écran du site, en version claire et sombre selon le thème du lecteur.
Historique complet : CHANGELOG.md
v1.0.2 — publication npm automatique
Première version publiée automatiquement par GitHub Actions, avec attestation de
provenance vérifiable sur npm. Aucun changement de code.
Ajouté
- Publication automatique sur npm à chaque tag de version (
.github/workflows/npm.yml), par publication de confiance (OIDC) : aucun jeton stocké, attestation de provenance jointe à chaque version, contrôle que le tag correspond àpackage.json.
Historique complet : CHANGELOG.md
v1.0.1 — publication sur npm
Première publication sur npm : npm install -g cadenas. Aucun changement de code.
Modifié
- README : installation via npm (
npm install -g cadenas,npx cadenas) et badge de version npm. package.json: les tests sont lancés automatiquement avant chaque publication (prepublishOnly) ; publication publique par défaut.
Historique complet : CHANGELOG.md
v1.0.0 — première version stable
Première version stable. Le format .cadenas v1 est désormais figé : les fichiers
chiffrés avec cette version resteront lisibles par toutes les versions futures.
En résumé :
- Site 100 % navigateur pour chiffrer / déchiffrer un fichier avec un mot de passe,
en ligne sur https://pierreebele.github.io/cadenas/. - Image Docker auto-hébergeable :
docker run -p 8080:8080 ghcr.io/pierreebele/cadenas. - Ligne de commande :
cadenas lock/cadenas unlock. - Format
.cadenasv1 (Argon2id + XChaCha20-Poly1305), spécifié dansdocs/FORMAT.md. - Compatibilité age en lecture et en écriture.
Ajouté
- README complet : utilisation du site, hébergement Docker, ligne de commande, comparaison des formats, sécurité, API, développement.
CONTRIBUTING.md: principes du projet, règles d'évolution du format, processus de publication.
Historique complet : CHANGELOG.md
v0.7.0 — intégration continue et publication
Ajouté
- Intégration continue GitHub Actions (
.github/workflows/ci.yml) :- tests et build sur Linux, Windows et macOS avec Node.js 22 et 24 ;
- interopérabilité réelle avec l'outil
ageofficiel, dans les deux sens ; - construction de l'image Docker et vérification des en-têtes de sécurité, du contenu servi et de l'exécution non-root.
- Déploiement automatique du site sur GitHub Pages à chaque push sur
main(pages.yml). - Publication de l'image sur GitHub Container Registry à chaque version, pour
linux/amd64etlinux/arm64(docker.yml).
Modifié
- Node.js 22 minimum (Node.js 20 n'est plus maintenu depuis avril 2026).
Historique complet : CHANGELOG.md
v0.6.0 — interface en ligne de commande
Ajouté
- Interface en ligne de commande
cadenas(bin/cadenas.js, aucune dépendance supplémentaire) :cadenas lock <fichier>→<fichier>.cadenas, ou<fichier>.ageavec--age;cadenas unlock <fichier>: format détecté automatiquement ;- alias
encrypt/decrypt; - options
-o/--output,-f/--force,--password-stdin,-h/--help,-v/--version.
- Saisie masquée du mot de passe avec confirmation (
src/prompt.js). - Écriture atomique : en cas de mauvais mot de passe ou de fichier altéré, aucun fichier partiel n'est laissé.
- Refus d'écraser un fichier existant sans
-f. - Progression affichée dans le terminal ; codes de sortie 0 (succès), 1 (erreur), 2 (mauvaise utilisation), 130 (annulation).
- Tests de la CLI de bout en bout (processus réels).
package.json: champsbin,exportsetfilespour une future publication npm.
Historique complet : CHANGELOG.md
v0.5.0 — image Docker
Ajouté
- Image Docker auto-hébergeable (
Dockerfile) :- construction en deux étapes : Vite dans
node:24-alpine, puis service parnginx-unprivileged(utilisateur non-root, port 8080) ; - le conteneur ne sert que des fichiers statiques : le serveur ne voit jamais ni fichier ni mot de passe ;
- vérification de santé intégrée.
- construction en deux étapes : Vite dans
- Configuration nginx (
docker/) : en-têtes de sécurité stricts, dont une CSPconnect-src 'none'qui interdit techniquement à la page toute connexion réseau ; cache long pour les fichiers versionnés ; aucun journal d'accès. compose.yaml: lancement en une commande, conteneur en lecture seule sans privilèges.- La même CSP est injectée dans le HTML au build, pour les hébergeurs sans en-têtes personnalisés (GitHub Pages).
Historique complet : CHANGELOG.md