SyncTrans 1.0.0 a été livré à la mi-août. L'étiquette finale (build 13, 19 août) comporte une toute dernière modification par rapport à la build fournie par le bouton de téléchargement, et il s'agit d'un ajustement administratif plutôt que d'une fonctionnalité : à la demande de l'examen App Store, la build pour le Mac App Store ne propose plus les mises à jour intégrées que le magasin distribue déjà. Depuis lors, rien de plus récent n'a été livré. Si vous voulez savoir ce qu'une build spécifique contient, les notes de version restent la seule page qui compte.
Le dépôt n'est cependant pas resté inactif. Deux chantiers ont atterri sur les branches de développement dans la semaine qui a suivi l'étiquetage. Cet article les décrit en toute franchise, ce qui commence par une mise au point : tout ce qui suit est en cours de développement, non publié et sans promesse de date. Nous en parlons parce que l'alternative serait un silence de journal des modifications qui pourrait être perçu comme de l'inactivité.
Un moteur hybride : trois emplacements au lieu d'un seul plan
Dans la 1.0.0, le mode de moteur est un choix unique : sur l'appareil, cloud géré ou service personnalisé, et ce choix s'applique conjointement à la reconnaissance, à la traduction et à la voix. C'est la forme appropriée pour une première version, mais c'est aussi trop rigide pour les demandes que nous recevons en pratique — des personnes qui souhaitent la qualité de traduction du cloud avec la reconnaissance sur l'appareil, ou une traduction locale associée à une meilleure voix hébergée.
Le travail en développement remplace le plan unique par trois emplacements indépendants — reconnaissance, traduction, voix — chacun alimenté par ses propres sources autorisées. La conception a d'abord été pensée sur le papier avant d'écrire la moindre ligne de code : le premier jet a été revu, rejeté avec une liste de points bloquants, puis révisé jusqu'à ce que les relecteurs s'accordent. Les règles qui ont survécu à ce processus en disent long sur les aspérités de la 1.0.0 :
- Aucun repli silencieux. Si un emplacement échoue en cours de session, le tour échoue visiblement dans la chronologie et désigne l'emplacement en cause. La session attend la phrase suivante plutôt que de basculer discrètement vers une autre source — après des échecs répétés, un bandeau suggère de modifier cet emplacement, et le changement reste toujours un choix explicite de l'utilisateur.
- Le plan est figé au démarrage de la session. Modifier les réglages en pleine conversation ne peut pas altérer une session en cours ; le nouveau réglage ne s'appliquera qu'au prochain démarrage. Cela élimine toute une catégorie d'états partiellement appliqués.
- La facturation ne peut pas compter deux fois le même appel. Lorsqu'un emplacement cloud est impliqué, chaque opération logique porte une clé d'idempotence stable sur laquelle le serveur déduplique, de sorte qu'une requête réessayée est répondue à partir de l'enregistrement de la première tentative sans être facturée à nouveau.
- Les langues sont vérifiées par rapport à la combinaison, pas au plan. Les paires qu'une session peut proposer sont calculées comme l'intersection de ce que les trois sources choisies peuvent faire, validées avant le démarrage de la session — ainsi, une configuration mixte ne peut pas promettre une langue que seulement deux de ses trois étapes prennent en charge.
Rien de tout cela ne change ce qui a été livré : les trois modes de moteur de la 1.0.0 restent exactement ce qu'ils sont, et la configuration mixte est un ajout, pas un remplacement.
Durcissement du mode local
Le second chantier est plus modeste et plus tactique : trois correctifs ciblant l'expérience sur l'appareil, développés ensemble sur une branche de durcissement.
Les téléchargements de modèles reprennent désormais là où ils s'étaient arrêtés au lieu de redémarrer de zéro, et un téléchargement échoué affiche son échec sur la carte du modèle plutôt que de disparaître. L'annulation a bénéficié du même traitement — interrompre un téléchargement touche chaque fragment en transit, et un téléchargement annulé indique clairement qu'il a été annulé au lieu de ressembler à une erreur. Le troisième correctif concerne la transparence de l'interface : l'application indique désormais d'emblée dans quels cas c'est la voix système de macOS que vous obtiendrez réellement (les ensembles de modèles GGUF n'intégrant aucun paquet vocal, ils utilisent la voix système), et les langues que la voix système ne sait pas prononcer — l'indonésien en est le cas concret — sont signalées comme telles avant même que vous ne construisiez une configuration autour d'elles.
Chacun de ces points fait partie de ces détails qui ne vous dérangent qu'une seule fois, puis à chaque utilisation. Ils sont fusionnés entre eux, mais pas encore intégrés dans une quelconque version publique.
Ce que nous ne disons délibérément pas
Aucun numéro de version ni aucune date ne sont associés à tout cela, car ni l'un ni l'autre n'existent encore. Le moteur hybride en particulier représente une modification majeure d'une partie de l'application qui touche simultanément à la facturation et à la confidentialité, et il ne sera livré que lorsque ses propres critères de qualité seront atteints, sans suivre un calendrier imposé. Lorsque l'une de ces fonctionnalités sortira, elle figurera dans les Nouveautés avec un numéro de version associé — cette page, et non ce blog, constitue la source faisant foi quant au contenu d'une build.
Si l'une de ces orientations compte pour vous — ou si vous en espérez une autre — vos avis sur le tableau des retours influencent directement ce qui est finalisé en priorité.