SyncTrans 1.0.0 se lanzó a mediados de agosto. La etiqueta final (compilación 13, 19 de agosto) incluye un último cambio sobre la compilación servida por el botón de descarga, y es más una cuestión de mantenimiento que una función: a petición de la revisión, la compilación de Mac App Store ya no ofrece actualizaciones integradas en la app que la propia tienda ya distribuye. Desde entonces, no se ha publicado nada más reciente. Si deseas saber qué hace una compilación determinada, las notas de la versión siguen siendo la única página de referencia.
Sin embargo, el repositorio no ha estado inactivo. Dos líneas de trabajo aterrizaron en ramas de desarrollo en la semana posterior a la etiqueta. Este artículo las describe con sinceridad, lo que implica empezar con una aclaración: todo lo que figura a continuación está en desarrollo, no se ha publicado y no está comprometido para ninguna fecha. Escribimos sobre ello porque la alternativa es un silencio en el registro de cambios que suele interpretarse como inactividad.
Un motor híbrido: tres ranuras en lugar de un solo plan
En 1.0.0, el modo de motor es una elección única: en el dispositivo, nube gestionada o servicio personalizado, y esa elección se aplica a reconocimiento, traducción y voz en conjunto. Esa es la forma adecuada para una primera versión, pero también resulta demasiado rígida para las peticiones que recibimos en la práctica: usuarios que desean la calidad de traducción en la nube pero con reconocimiento en el dispositivo, o traducción local combinada con una mejor voz alojada.
El trabajo en desarrollo sustituye el plan único por tres ranuras independientes —reconocimiento, traducción y voz—, cada una de ellas provista a partir de sus propias fuentes permitidas. El diseño pasó por papel antes que por código: el primer borrador fue revisado, rechazado con una lista de bloqueos y modificado hasta que los revisores llegaron a un consenso. Las reglas que sobrevivieron a ese proceso dicen mucho sobre dónde estaban los puntos críticos de 1.0.0:
- Sin alternativas silenciosas. Si una ranura falla a mitad de sesión, el turno falla de manera visible en la cronología y nombra la ranura responsable. La sesión espera a la siguiente frase en lugar de cambiar discretamente a otra fuente; tras fallos repetidos, un aviso sugiere cambiar esa ranura, y el cambio siempre es una decisión explícita del usuario.
- El plan se congela al iniciar la sesión. Cambiar los ajustes en mitad de una conversación no modifica la sesión en curso; el cambio se aplica en el siguiente inicio. Esto elimina toda una categoría de estados a medio aplicar.
- La facturación no puede cobrar dos veces por una misma llamada. Cuando interviene una ranura en la nube, cada operación lógica lleva una clave de idempotencia estable con la que el servidor desduplica, de modo que una solicitud reintentada se responde a partir del registro del primer intento en lugar de facturarse de nuevo.
- Los idiomas se comprueban contra la combinación, no contra el plan. Los pares que una sesión puede ofrecer se calculan como la intersección de lo que las tres fuentes elegidas pueden hacer de forma individual, validándose antes de que la sesión empiece; así, una configuración mixta no puede prometer un idioma que solo dos de sus tres etapas admiten.
Nada de esto cambia lo ya publicado: los tres modos de motor de 1.0.0 siguen siendo exactamente lo que son, y la configuración mixta es un añadido, no una sustitución.
Endurecimiento del modo local
La segunda línea de trabajo es más reducida y táctica: tres correcciones dirigidas a la experiencia en el dispositivo, desarrolladas juntas en una rama de endurecimiento.
Las descargas de modelos ahora se reanudan en el punto donde se quedaron en lugar de reiniciarse, y una descarga fallida muestra su error en la tarjeta del modelo en vez de desaparecer. La cancelación recibió el mismo tratamiento: detener una descarga alcanza a cada fragmento en curso, y una descarga cancelada indica claramente que se canceló en lugar de parecer un error. La tercera corrección tiene que ver con la honestidad en la interfaz: la app ahora indica de antemano en qué casos lo que obtendrás realmente es la voz del sistema macOS (los paquetes de modelos GGUF no incluyen paquete de voz, por lo que utilizan la voz del sistema), y los idiomas que la voz del sistema no puede hablar —el indonesio es el caso concreto— se etiquetan como tales antes de que configures el sistema a su alrededor.
Cada una de estas mejoras es de esas que solo molestan una vez, pero luego se notan en cada uso. Están integradas entre sí, pero aún no forman parte de ningún lanzamiento.
Lo que deliberadamente no estamos diciendo
Ningún número de versión ni fecha acompañan a nada de esto, porque ninguno de los dos existe todavía. El motor híbrido, en particular, representa un cambio sustancial en la parte de la aplicación que gestiona dinero y privacidad al mismo tiempo, y se publicará cuando alcance su propio listón de calidad, no según un calendario prefijado. Cuando cualquiera de estas mejoras se lance, aparecerá en Novedades con un número de versión asociado; esa página, y no este blog, es la fuente de verdad sobre lo que contiene cada compilación.
Si una de estas direcciones te resulta importante —o si tienes en mente otra diferente—, el panel de comentarios influye de forma directa en lo que se termina primero.