Repository navigation
Releases: kerviaHerve/kervia-vault
Release list
Kervia-vault v1.8.3
Kervia-vault v1.8.3 — 2026-10-25
- Extension Firefox — XPI signé AMO servi par la webui + mises à jour
automatiques. La webui sert désormais en priorité un XPI signé
déposé dans le data dir (extension-firefox.xpià côté de la DB —
lu à chaque requête, sans redémarrage), en retombant sur l'embarqué
non signé en son absence.scripts/amo-sign-extension.shsigne via
l'API AMO (web-ext sign --channel unlisted --id coffre@kervia-vault)
avec les identifiants JWT lus dans le vault (REST agent — passés à
web-ext par variables d'environnement, jamais en argv) et dépose
l'XPI signé au bon endroit : installation permanente dans Firefox
(finiabout:debugging). Le workflow Release sait aussi signer
via les secrets repoAMO_API_KEY/AMO_API_SECRETs'ils sont
présents (fallback silencieux sinon, la release n'échoue jamais).
Le manifest déclareupdate_urlvers
vault.kervia.ch/ui/extension-updates.json— généré par chaque
release (version courante → lien de l'XPI servi) : Firefox propose
la mise à jour tout seul aux installations. Première soumission
manuelle faite côté AMO (data_collection_permissions:
authenticationInforequis — le token d'extension part vers le
coffre de l'utilisateur ; rien d'autre ne quitte le navigateur).
Install
sudo bash install.shThe installer verifies the sha256 checksum before installing.
Updates: webui → Settings → Version → Update now (self-update, data untouched).
Full history: CHANGELOG.md
Kervia-vault v1.8.2
Kervia-vault v1.8.2 — 2026-10-25
- Extension Firefox — exigences AMO (publication). Conformité au
consentement de collecte intégré à Firefox (obligatoire pour toute
nouvelle extension depuis le 3 nov. 2025) : déclaration
browser_specific_settings.gecko.data_collection_permissionsavec
authenticationInfoen requis — l'extension transmet le token
d'extension vers le serveur du coffre (service à compte de
l'utilisateur) ; rien d'autre ne quitte le navigateur (aucune
télémétrie, aucune donnée de navigation envoyée, remplissage purement
local).js/lucide.jsconstruit désormais les SVG viaDOMParser
(document inert) au lieu d'une affectationinnerHTML: plus aucun
avertissement du validateur AMO sur ce point. Avertissement restant,
sans impact :permissions.requestnon implémentée sur Firefox pour
Android 115 — l'extension vise le desktop (raccourcis clavier,
popup) ; le fallback Android reste la configuration manuelle.
Install
sudo bash install.shThe installer verifies the sha256 checksum before installing.
Updates: webui → Settings → Version → Update now (self-update, data untouched).
Full history: CHANGELOG.md
Kervia-vault v1.8.1
Kervia-vault v1.8.1 — 2026-10-22
- Extension Firefox — refonte visuelle. Le popup et les réglages
passent au design system Kervia : tokens exacts de
kervia.tokens.jsonv1.0.0 (charbon, citron, menthe), police
Space Grotesk embarquée (woff2 local, 22 Ko — aucune requête
externe), anneaux de focus menthe, états survol/actif, défilement
fin. Uniquement des icônes Lucide (celles de shadcn/ui) en SVG
inline — zéro image, zéro emoji : géométrie exacte de
lucide-static v0.548.0 (ISC) viajs/lucide.js, hydratation
data-lucidepour les gabarits statiques et helperlucide()pour
les lignes dynamiques. Écran verrouillé repensé (tuile citron, œil
afficher/masquer), TOTP en pastille mono menthe, liste avec états
survol, générateur en carte, toasts avec icône, réglages avec cartes
titrées et verrouillage auto en contrôle segmenté. - Correctif popup.
no_token: l'élément#session-urlinexistant
faisait planter le handler avant l'ouverture des paramètres webui ;
l'onglet s'ouvre désormais via l'URL du serveur configuré.
Install
sudo bash install.shThe installer verifies the sha256 checksum before installing.
Updates: webui → Settings → Version → Update now (self-update, data untouched).
Full history: CHANGELOG.md
Kervia-vault v1.8.0
Kervia-vault v1.8.0 — 2026-10-22
- Extension Firefox pour le Coffre. Remplis tes sites directement
depuis ton coffre : l'extension détecte les formulaires et y colle
identifiant, mot de passe et code TOTP — uniquement sur ton clic
(bouton « Remplir » ouCtrl+Shift+L;Ctrl+Shift+Kouvre le
coffre). Aucune interface n'est jamais injectée dans les pages —
exactement le comportement des extensions classiques qui cassait la
webui est exclu par conception. Popup : déverrouillage, éléments
correspondant à la page, recherche, copie (effacement presse-papier
30 s), TOTP vivant, générateur, synchronisation, auto-lock. Le coffre
déverrouillé ne vit qu'en mémoire du processus d'arrière-plan. - Token d'extension dédié (nouvelle surface serveur minimale).
Paramètres → Extension : Créer le token (affiché une seule fois,
seul son hash Argon2id est stocké — même schéma que les clés agents),
statut dernière utilisation, révocation, régénération. Le token
n'ouvre qu'une route :GET /ext/coffre(Bearer) qui renvoie
enveloppe + blobs chiffrés en un aller-retour. Aucune surface admin,
aucune surface agent (/v1, MCP) — testé, tripwire intact. Sans le
mot de passe maître, le token ne révèle rien : zero-knowledge
préservé de bout en bout. Ce modèle remplace la piste « session
webui » abandonnée :SameSite=Strictrend le cookie inutilisable
depuis une extension (Firefox strippe même un header Cookie manuel —
vérifié). - Installable depuis la webui. L'XPI est construit par CI, embarqué
dans le binaire (servi par la carte Paramètres → Extension) et joint
à la release GitHub. Installation : Télécharger l'extension →
ouvrir le fichier dans Firefox. Sans signature AMO, Firefox le
charge comme extension temporaire (about:debugging) ; la signature
one-click (compte AMO requis) sera ajoutée en option. - Validation. Go : tests du cycle de vie complet (création → statut
→ usage → 401s, clé agent refusée sur /ext, token refusé sur /admin,
révocation) + forme /ext/coffre. Extension : crypto vérifiée (même
schéma que la webui, mauvais mot de passe → message clair) ;
E2E sur vrai Firefox 158.0.1 (macOS, Apple Silicon) — install
XPI, auto-déverrouillage par token (3 éléments déchiffrés),
correspondance URL → formulaire, remplissage complet vérifié champ
par champ + soumission. E2E webui complet toujours 21/21.
Install
sudo bash install.shThe installer verifies the sha256 checksum before installing.
Updates: webui → Settings → Version → Update now (self-update, data untouched).
Full history: CHANGELOG.md
Kervia-vault v1.7.3
Kervia-vault v1.7.3 — 2026-10-22
- Perf gros coffres (6 500 items et plus). Le coffre rendait TOUTES
les lignes d'un coup (6 500 lignes DOM) et chaque ligne avec TOTP
montait son propre timer — des centaines d'intervalles par seconde
saturaient le navigateur ; chaque sauvegarde re-téléchargeait et
re-déchiffrait l'intégralité du coffre. Tout cela est corrigé :- Pagination de la liste : 100 lignes rendues, bouton « Afficher
les suivants » par paliers de 500 — le DOM reste léger quel que
soit la taille du coffre. - Un SEUL timer TOTP pour toute la page (ticker partagé) au lieu
d'un interval par ligne. - Sauvegarde/corbeille = mise à jour locale de l'élément : plus
de re-téléchargement + re-décryptage des 6 500 items à chaque
enregistrement. Le rechargement complet reste pour l'import en lot. - Recherche précalculée (
_searchindexé au chargement) et
filtres/dossiers/tags mémoïsés ; spinner « Chargement du coffre… »
pendant le déverrouillage. - Mesuré sur un coffre de 3 000 items (chromium) : déverrouillage
complet 260 ms, clic « Nouveau » → picker 138 ms, recherche 18 ms,
création complète d'un item 533 ms, ouverture d'un item 86 ms.
E2E complet 21/21 toujours vert.
- Pagination de la liste : 100 lignes rendues, bouton « Afficher
Install
sudo bash install.shThe installer verifies the sha256 checksum before installing.
Updates: webui → Settings → Version → Update now (self-update, data untouched).
Full history: CHANGELOG.md
Kervia-vault v1.7.2
Kervia-vault v1.7.2 — 2026-10-22
- Dialogs : peinture instantanée, zéro animation. Dernier maillon
du bug « premier clic → flou, deuxième clic → ça marche » (Firefox
158/macOS) : l'animation d'entréepopinpartait deopacity: 0—
dans cet environnement, la progression vers l'état final ne se
peignait pas au premier rendu (GPU/extension), laissant le contenu
invisible derrière le scrim. Toutes les animations des dialogs
(entrée ET sortie) sont retirées : l'overlay et le contenu n'ont plus
JAMAIS d'état initial invisible — ils se peignent d'emblée à l'état
final. Structurellement impossible d'avoir un dialog invisible ou un
scrim suspendu, quel que soit l'environnement. Le blur du scrim et
l'ombrage du panneau restent (statiques). Validé : E2E chromium
complet 21/21, Firefox 158.0.1 réel — premier clic : dialog peint
immédiatement (animationName: none, opacité 1), fermetures Échap et
× en boucle propres.
Install
sudo bash install.shThe installer verifies the sha256 checksum before installing.
Updates: webui → Settings → Version → Update now (self-update, data untouched).
Full history: CHANGELOG.md
Kervia-vault v1.7.1
Kervia-vault v1.7.1 — 2026-10-22
- Robustesse dialogs : plus jamais de page floue figée. Les overlays
Radix attendaient l'événementanimationenddes animations de sortie
pour se démonter — si cet événement ne part jamais (extension du
navigateur qui interfère, quirk de rendu), le scrim restait suspendu à
vie : écran flou et page morte, sans aucune erreur console. Les
animations de sortie sont retirées : Radix voitanimationName: none
et démonte immédiatement à la fermeture. Les animations d'entrée sont
conservées. Validé sur Firefox 158.0.1 réel (binaire officiel via
geckodriver) : fermetures Escape et bouton × en boucle, overlay
proprement retiré à chaque fois ; E2E chromium complet toujours 21/21. - Filet de sécurité : écran d'erreur au lieu de page blanche. Un
boundary React englobe l'application — tout crash de rendu affiche
désormais une carte claire avec le message d'erreur et un bouton
« Recharger » (auto-contenu, aucun import : le crash peut venir de
n'importe quel module). Les données ne risquent jamais rien : tout est
chiffré côté serveur. - Diagnostic coffre (informatif) : le « flou bloquant » constaté sur
un poste (Firefox 158/macOS, profil normal) ne se reproduit ni en
fenêtre privée, ni sur le même Firefox officiel headless avec
l'artefact release exact — la cause est une extension du navigateur
(probablement le gestionnaire de mots de passe) qui injecte son
autofill dans les dialogs. Exclure vault.kervia.ch dans les réglages
de l'extension.
Install
sudo bash install.shThe installer verifies the sha256 checksum before installing.
Updates: webui → Settings → Version → Update now (self-update, data untouched).
Full history: CHANGELOG.md
Kervia-vault v1.7.0
Kervia-vault v1.7.0 — 2026-10-22
- Le Coffre v2 — un vrai gestionnaire de mots de passe. Le coffre
personnel (zero-knowledge, agents JAMAIS accès — inchangé) passe du
« login + note » à une organisation type 1Password : 14 modèles
d'éléments, imports Bitwarden / 1Password / CSV et TOTP avancé.
Tout reste côté navigateur : le serveur ne voit toujours que des
blobs AES-256-GCM opaques — aucune modification de l'API ni du
schéma serveur, aucune nouvelle dépendance npm (WebCrypto +
DecompressionStream natifs).- 14 modèles : Identifiant, Note, Carte bancaire, Compte bancaire,
Identité, Passeport, Wallet crypto, Clé SSH, Serveur, Base de
données, Wi-Fi, Licence logicielle, Abonnement/Membre, Code TOTP.
Chaque modèle pré-remplit ses champs (numéro masqué, expiration,
CVV, IBAN, seed…) ; des champs personnalisés (7 types : texte,
secret, TOTP, lien, mois, date, multiligne) complètent n'importe
quel élément ; étiquettes (tags) et dossiers. - Imports (détection automatique du format) : Bitwarden /
Vaultwarden JSON (identifiants, notes, cartes, identités,
champs personnalisés), 1Password .1pux (ZIP officiel, lu par
DecompressionStream natif — zip zéro dépendance) et 1PIF
(legacy 1Password 7), CSV de Chrome, Firefox, Safari, LastPass,
Dashlane, KeePass, Proton, NordPass… (colonnes auto-détectées,
cartes bancaires reconnues), et le format Kervia (round-trip
complet). Exports : Kervia JSON (fidèle à 100 %) et Bitwarden
JSON (ré-importable dans Vaultwarden). - TOTP v2 : plusieurs seeds par élément, URI
otpauth://
complètes (SHA-1/SHA-256/SHA-512, 6-8 chiffres, périodes 30/60 s)
validées contre les vecteurs RFC 6238 ; code vivant en liste et en
vue détaillée. - Migration douce : les items v1 existants sont normalisés v2 à
la lecture et réécrits au prochain enregistrement — les vieux
blobs restent lisibles pour toujours, aucune action requise. - E2E navigateur (chromium headless) : 21 étapes vertes —
création, 14 modèles, carte bancaire (sous-titre •••• 4242), filtre
par catégorie, import CSV + Bitwarden, TOTP SHA-256 8 chiffres
vivant, export Kervia + round-trip, verrouillage/déverrouillage.
Suite lib Node : 31 tests (schéma, migration, imports, exports,
vecteurs RFC 6238).
- 14 modèles : Identifiant, Note, Carte bancaire, Compte bancaire,
Install
sudo bash install.shThe installer verifies the sha256 checksum before installing.
Updates: webui → Settings → Version → Update now (self-update, data untouched).
Full history: CHANGELOG.md
Kervia-vault v1.6.3
Kervia-vault v1.6.3 — 2026-10-22
- Coffre réparé : écran blanc au premier clic. Le coffre personnel était
cassé depuis sa naissance (v1.2.0) : les cinq dialogs (nouvel item,
générateur, import, export, réglages) étaient rendus sans le<Dialog>
Root de Radix — Radix jette « must be used within Dialog » au premier
rendu et React démonte l'arbre complet. Résultat : déverrouiller le
coffre marchait, mais cliquer « Nouveau » (ou tout autre bouton ouvrant
un dialog) provoquait un écran blanc. Personne ne l'avait vu car la
validation E2E de l'époque couvrait la crypto (Node/WebCrypto) et les
API (HTTP) — jamais l'UI au clic. Chaque dialog est désormais enveloppé
dans son<Dialog open onOpenChange>, le même pattern que les pages
secrets/agents. Validé par un parcours complet en navigateur headless :
création du coffre, nouvel item, vue détaillée, générateur, import,
export, réglages, verrouillage/déverrouillage, item TOTP — 12/12 verts,
zéro erreur console.
Install
sudo bash install.shThe installer verifies the sha256 checksum before installing.
Updates: webui → Settings → Version → Update now (self-update, data untouched).
Full history: CHANGELOG.md
Kervia-vault v1.6.2
Kervia-vault v1.6.2 — 2026-10-22
- Journal des versions dans Paramètres. Un panneau à droite affiche les
trois dernières releases (tag, date, notes complètes) — collant
(sticky), déroulant, masqué sur petit écran. La release la plus récente
porte le badge « Mise à jour » quand elle n'est pas encore installée.
Un seul fetch côté serveur alimente le journal ET les notes de l'update
à venir (recent[]dans le statut,notesdérivé) ; URL overridable
(KERVIA_VAULT_RECENT_URL), tolérant aux pannes — pas de réponse =
pas de panneau, jamais un check cassé.
Install
sudo bash install.shThe installer verifies the sha256 checksum before installing.
Updates: webui → Settings → Version → Update now (self-update, data untouched).
Full history: CHANGELOG.md