Nouveautés de Vlocal : versions et corrections datées
Chaque version de Vlocal est listée ici, avec sa date de publication et ce qu'elle change vraiment. Les corrections sont écrites en clair, cause comprise, sans « améliorations diverses ».
Les dates sont celles de la publication sur le canal de mise à jour. Les versions internes antérieures, numérotées 3.x en juin 2026, ne sont pas listées.
1.3.4, 11 septembre 2026
- Les mises à jour s'annoncent toutes seules. Quand une version plus récente est publiée, une pastille apparaît sur l'entrée « Mises à jour » de la barre latérale, un bandeau s'affiche en haut de la fenêtre, et l'icône de la barre des menus gagne une entrée « Mise à jour x.y.z disponible » en tête de son menu, qui ouvre l'onglet correspondant. Vlocal vérifie une fois au lancement, puis toutes les six heures, par une simple requête GET qui ne transporte aucune donnée personnelle. Avant, seule une visite à l'onglet « Mises à jour » révélait une nouvelle version, et personne n'y allait.
- Mode clair. Réglages, Apparence : une lune et un soleil. Le tableau de bord et la pastille de dictée basculent ensemble. La mise en page, les espacements et la typographie ne changent pas, seule la palette change, contrastes vérifiés. Le sombre reste le mode par défaut.
- Mails de version : un gabarit et
tools/release_mail.pycomposent l'annonce de chaque version à partir d'une courte fiche JSON. L'envoi reste une étape manuelle, après validation du texte et des destinataires par le mainteneur.
1.3.3, 11 septembre 2026
- Dictée mains libres par double appui. Demandée par un utilisateur qui connaissait la fonction chez Wispr Flow. Dans les Réglages, « Déclencheur » propose désormais « Maintenir, ou double appui pour garder le micro ouvert » : deux appuis rapides verrouillent le micro ouvert, l'appui suivant termine la dictée, le maintien continue de fonctionner comme avant. La pastille indique que le micro est ouvert et quelle touche y met fin. La logique d'appui se place au-dessus du décodeur de touches, donc elle vaut pour tous les raccourcis, présents et futurs : Ctrl + Cmd, Fn, Cmd droite, Option droite, Ctrl + Espace. Un appui court isolé est annulé, et le geste attendu est rappelé à l'écran.
- Changer le raccourci ou le déclencheur dans les Réglages prend effet tout de suite. Le message disait « Raccourci mis à jour » mais rien ne changeait avant le lancement suivant. Les anciens moniteurs sont maintenant retirés et les nouveaux armés sur place, ce que vérifie la porte de cycle de vie.
- Le verrou d'instance unique a deux couches, le dossier de support et le répertoire temporaire privé de la personne, indépendant de HOME, et seul un « déjà verrouillé » signifie qu'une autre instance tourne : un dossier personnel en réseau sans
flockn'empêche plus Vlocal de s'ouvrir.
1.3.2, 11 septembre 2026
- Le raccourci global et le fait de quitter l'app fonctionnent de nouveau. Depuis la 1.2.0, l'installation du raccourci levait une erreur à chaque lancement : un module était utilisé quelques lignes avant d'être importé dans la même fonction, ce que Python traite comme une variable locale qui n'existe pas encore. Cet appel est la première étape du démarrage, donc tout ce qui suit était sauté : le raccourci global, l'icône de la barre des menus, le chien de garde anti-gel et le délégué d'application. Sans ce délégué, fermer la fenêtre la cachait pour de bon, cliquer sur Vlocal dans le Dock ne faisait rien, et Quitter était refusé en silence, ne laissant que le forçage à quitter. La fenêtre et le bouton Dicter, eux, continuaient de marcher : c'est pour cela que rien n'a alerté. La 1.1.x n'était pas concernée.
- Rouvrir et quitter ne dépendent plus de la réussite du démarrage : le comportement est porté par le délégué d'application, mis en place avant même que la fenêtre existe.
- Les étapes de démarrage sont isolées : une étape en échec n'entraîne plus les autres, et elle est remontée sous forme de code d'incident (
hotkey_start_fail,startup_stage_fail), tout comme un premier lancement terminé sans l'Accessibilité (hotkey_untrusted). - Le redémarrage qui suit l'octroi de l'Accessibilité attend la sortie réelle du processus précédent, au lieu d'un délai fixe de deux secondes.
- Trois nouvelles portes de build : analyse statique des noms non définis et des noms utilisés avant affectation, suite complète de tests unitaires, et test de fumée qui lance la vraie app, la ferme, la rouvre et la quitte. Elles ont trouvé deux bugs plus anciens de la même famille : le message d'arrêt de réunion pour disque plein ne pouvait pas s'afficher, corrigé, et un plafonnement du nombre de locuteurs par durée de parole, annoncé en 1.0.26, n'avait jamais tourné, comportement laissé inchangé en attendant une validation sur audio réel.
- La 1.3.1 est sautée : un build portant ce numéro existe déjà hors du dépôt, et il doit recevoir cette mise à jour lui aussi.
1.3.0, 9 septembre 2026
- Le redémarrage exigé par macOS est enfin annoncé. L'Accessibilité n'est jamais accordée à un processus déjà lancé : cocher la case ne changeait rien tant que Vlocal n'avait pas redémarré, et le premier lancement le disait en une ligne grise. C'est maintenant un encadré numéroté, le redémarrage est l'action mise en avant, et l'app revient exactement à cette étape au lieu de reprendre la configuration depuis le début.
- L'usage est mesuré assez finement pour être lu. La durée de parole par jour, le modèle de Mac, la langue de l'interface, le raccourci choisi et le moteur réellement utilisé, carte graphique ou processeur, rejoignent la télémétrie déclarée, avec un comptage quotidien des incidents techniques par code, des compteurs seuls et jamais le détail d'un incident. Tout est listé dans les deux fichiers README, sur la page confidentialité, et verrouillé par un test.
- Une journée d'usage n'est plus perdue. L'app envoyait les trois derniers jours ; un Mac éteint une semaine perdait les jours intermédiaires. Elle envoie maintenant les trente derniers, que le serveur accepte et applique de façon idempotente.
- Console d'administration refaite : graphiques interactifs, chaque chiffre porte sa définition et sa période, une fiche détaillée par personne, répartition du matériel, rétention et incidents.
1.2.0, 9 septembre 2026
- Les chiffres du tableau de bord sont désormais exacts. Ils étaient recalculés à partir des entrées d'historique affichées à l'écran, plafonnées à 400, et vides si l'historique est désactivé. Sur une vraie base, l'app affichait 50 minutes gagnées pour un mois où les compteurs en totalisaient 4 h 05. Ils lisent maintenant les compteurs par jour, qui reprennent aussi l'historique déjà présent en base lors de la mise à jour, et comptent les réunions.
- Trois raccourcis qui n'avaient jamais fonctionné. Les Réglages proposaient « Fn », « Cmd droite » et « Option droite » ; le moteur ne les connaissait pas et retombait en silence sur Ctrl + Cmd. Chacun est maintenant un vrai raccourci, identifié par son propre code de touche, pour qu'une touche fléchée ou le modificateur de gauche ne déclenche pas une dictée. La touche Fn demande de régler « Appuyer sur la touche Fn pour : ne rien faire » dans les Réglages système, ce que l'app indique désormais.
- Adresse e-mail de contact facultative à l'installation et dans les Réglages, validée des deux côtés, ajoutée à la télémétrie déclarée avec l'horodatage de la dernière dictée et les compteurs de réunions.
1.1.2, 8 septembre 2026
Revue de sécurité avant l'annonce publique.
- Mise à jour intégrée : la version téléchargée doit être signée par l'équipe Apple de ce projet, identifiant d'équipe épinglé, en plus des vérifications de Developer ID et de notarisation. Une app notarisée par un autre développeur est refusée.
- Serveur : les rôles publics n'ont plus aucun privilège sur les tables ; la fonction de télémétrie est la seule surface ouverte à la clé publique de l'app, avec 300 nouvelles installations par heure au maximum, des noms assainis et des valeurs plafonnées ; le point d'entrée des retours est limité en débit ; les fonctions de l'époque payante répondent 410 ; la console d'administration est servie avec une Content-Security-Policy.
1.1.1, 7 septembre 2026
Transport de la télémétrie corrigé. La 1.1.0 écrivait ses compteurs quotidiens par un upsert PostgREST direct ; sous la sécurité au niveau des lignes, cet upsert a besoin d'un accès en lecture à la ligne, ce qui aurait exposé les noms à quiconque détient la clé publique. L'app appelle maintenant une seule fonction security definer, et les tables ne sont ni lisibles ni modifiables avec cette clé. Rien d'autre ne change.
1.1.0, 6 septembre 2026
Gratuit et open source.
- Le paiement, les clés de licence et tout le parcours d'achat sont supprimés. L'écran de premier lancement demande un prénom et un nom à la place, avec l'énoncé clair de ce que l'app envoie et une option « continuer sans partager ».
- Télémétrie déclarée : identifiant d'installation, noms, versions, et compteurs par jour, soit les dictées, les mots et le temps gagné estimé. Rien d'autre, et un test le verrouille.
- Régression de vitesse corrigée. Une seule inférence sur la carte graphique dépassant un délai fixe de 22 s basculait toute la session sur le moteur processeur. Mesuré : 1,0 s par dictée sur la carte graphique, 8,0 s sur le processeur, et 1,5 Go de mémoire en plus. Le délai est maintenant proportionnel à la durée de l'audio, la bascule devient une suspension de 10 minutes, et seuls trois gels en une heure désactivent la carte graphique pour la session.
- Transcription au fil de l'eau corrigée : la recherche d'un silence où couper une fenêtre était limitée à 16 s après la cible et ne s'élargissait jamais, si bien qu'une longue phrase la bloquait pour le reste de la dictée. Elle parcourt maintenant tout l'audio disponible, de façon incrémentale.
- Chien de garde de finalisation proportionnel à la longueur de la dictée, au lieu d'un délai fixe de 25 s.
- Réunions : comptage automatique des locuteurs par écart spectral, avec la silhouette en repli et en garde-fou. Sur une vraie réunion de 69 minutes à quatre voix, la silhouette hésitait entre 2 et 4, soit 0,296 contre 0,289, et choisissait 2 ; l'estimation spectrale trouve 4, garde 2 sur cinq réunions à deux voix et 1 sur des extraits à une seule voix. Précision des locuteurs au niveau des régions, sur les fenêtres annotées : de 81,6 % à 94,0 %, à égalité avec un forçage manuel à 4.
- Pastille de dictée : la pointe se place enfin sur le bord de la barre des menus, sur tous les écrans. L'ancien décalage supposait une barre de 37 px et poussait la pointe 4 px sous la barre sur les Mac 14 pouces à encoche, qui font 33 px, et entièrement dessous sur les 13 pouces.
- Obsidian : un coffre « Vlocal, ma voix » peut être créé depuis les Réglages. Les dictées vont dans une note du jour, chaque réunion reçoit une note avec ses locuteurs, les rappels sont listés, et un fichier CLAUDE.md à la racine décrit la structure pour un assistant.
- Console d'administration : jeton stocké sous forme d'empreinte SHA-256, verrouillages par adresse IP et verrouillage global.
- Import d'une réunion : délai sur la carte graphique proportionnel à la longueur du bloc, au lieu d'un délai fixe de 60 s.
- Code : transcription au fil de l'eau extraite dans son propre fichier, coordonnées du serveur centralisées, compilation Nuitka retirée du build, table des compteurs d'usage ajoutée en SQLite.
1.0.26, 16 août 2026
Réunions : un court enregistrement à une seule voix était découpé en plusieurs locuteurs. Les seuils de fusion des centroïdes s'adaptent maintenant à la durée de parole, et le nombre de locuteurs détectés est plafonné par la parole disponible, environ 15 s par locuteur.
1.0.25, 15 août 2026
- Réanalyse d'une réunion : frontières de locuteurs calées sur les trois chemins d'attribution, le chemin de repli ne le faisait pas ; avertissement visible quand la diarisation retombe sur ce chemin de repli ; barre de progression.
- Les processus auxiliaires sont lancés depuis
Contents/Helpers, ils n'affichent donc plus d'icône dans le Dock.
1.0.24, 15 août 2026
Le calage des frontières de locuteurs est câblé sur le chemin d'attribution de production ; la 1.0.23 ne l'avait que sur le chemin de repli. Précision des locuteurs au mot, mesurée sur le banc annoté : de 92,3 % à 96,9 %.
1.0.23, 14 août 2026
Réunions : l'attribution des mots aux locuteurs est calée sur la frontière de parole la plus proche, jusqu'à deux mots ; la reconnaissance des voix connues ignore les noms provisoires ; le seuil de correspondance passe à 0,75.
1.0.22, 13 août 2026
La capture du micro passe dans un sous-processus jetable, tué et relancé en une seconde environ s'il se fige. Les dictées s'enchaînent, une nouvelle peut commencer pendant que la précédente est transcrite, avec insertion dans l'ordre d'arrivée. Personne n'est bloqué plus de deux secondes par le micro.
1.0.21, 23 juillet 2026
Version de stabilité : auto-réparation du micro, battement de coeur pendant la finalisation, télémétrie des gels de la carte graphique.
1.0.13 à 1.0.17, du 24 au 26 juin 2026
Connecteur Obsidian, commande vocale « à la ligne », rapport de diagnostic envoyé depuis l'app.
1.0.1 à 1.0.12, du 17 au 21 juin 2026
Série de lancement : mise à jour intégrée avec vérification de signature, notarisation, droits du runtime durci, rappels en notifications natives, correction du déplacement de la fenêtre, parcours de bienvenue et d'autorisations.
Comment recevoir ces mises à jour
Ouvrez Vlocal, allez dans l'onglet « Mises à jour » et cliquez. L'app télécharge la nouvelle version, vérifie la signature Apple, la notarisation et l'identifiant d'équipe de l'auteur, remplace l'application et redémarre. Vous pouvez aussi télécharger la dernière version depuis cette page. Le détail ligne à ligne est lisible dans le dépôt public, et la page open source explique comment le projet est fait.