Skip to content

fix(ui): no pisar idioma/parámetros guardados al auto-cargar un preset - #174

Closed
Alejandro-Cuautli wants to merge 1 commit into
devnen:mainfrom
Alejandro-Cuautli:fix/preset-autoload-should-not-override-user-language
Closed

Alejandro-Cuautli wants to merge 1 commit into
devnen:mainfrom
Alejandro-Cuautli:fix/preset-autoload-should-not-override-user-language

Conversation

@Alejandro-Cuautli

Copy link
Copy Markdown

Resumen

Bug real reportado por el owner de nuestro despliegue (synaptic-model-manager / Synaptic Voice Studio): el selector de idioma vuelve solo a inglés cada vez que abre la Web UI con el cuadro de texto vacío, aunque siempre trabaja en español y ya lo había guardado como default.

Causa

Los 15 presets incluidos (Load Example Preset) son todos demos en inglés (language: "en" en cada uno, exaggeration de 0.3 a 1.4). loadInitialUiState():

  1. Carga primero el idioma/parámetros guardados por el usuario desde generation_defaults (correcto).
  2. Si el cuadro de texto está vacío, restaura en silencio el último preset usado vía applyPreset(defaultPreset, false, false) -- isUserInteraction=false.

applyPreset() ya tenía el flag isUserInteraction (para decidir si dispara debouncedSaveState()), pero aplicaba language/exaggeration/cfg_weight/temperature/speed_factor/seed del preset sin mirar ese flag. Resultado: cualquier usuario que borre el texto para escribir uno nuevo (flujo normal) ve sus parámetros guardados pisados por los del preset en cada carga de página, sin haber tocado nada.

Fix

El override de esos seis parámetros ahora solo ocurre cuando isUserInteraction es true (el usuario hizo clic en un botón de preset a propósito -- ahí sí tiene sentido adoptar también idioma/tono del ejemplo). La restauración silenciosa al cargar la página sigue reponiendo el texto de ejemplo y el resaltado visual del botón, pero ya no toca los parámetros que el usuario había guardado.

Cambio de una función en ui/script.js, sin tooling de test en el repo (validado con node --check).

🤖 Generated with Claude Code

applyPreset() ya distinguía isUserInteraction (para decidir si persistir el
estado con debouncedSaveState), pero igual aplicaba language/exaggeration/
cfg_weight/temperature/speed_factor/seed del preset sin importar el flag.

Todos los presets incluidos son demos en inglés. loadInitialUiState() carga
primero el idioma/parámetros guardados por el usuario desde
generation_defaults (correcto), pero si el cuadro de texto está vacío,
restaura en silencio el último preset usado (isUserInteraction=false) --
eso pisaba de vuelta esos mismos valores con los del preset en cada carga
de página. Un usuario que siempre trabaja en español y borra el texto para
escribir uno nuevo (flujo normal) veía el idioma volver a inglés en cada
sesión, sin haber tocado nada.

Ahora el override de esos parámetros solo ocurre cuando isUserInteraction
es true, es decir, cuando el usuario hace clic en un botón de preset a
propósito -- ahí sí tiene sentido adoptar también el idioma/tono de ese
ejemplo. La restauración silenciosa al cargar la página solo repone el
texto de ejemplo y el resaltado visual del botón, sin tocar los parámetros
que el usuario ya había guardado.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 21, 2026 05:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Alejandro-Cuautli

Copy link
Copy Markdown
Author

Cerrando: esto se abrió por error contra el upstream (gh pr create sin --repo tomó el remoto upstream de mi fork en vez de origin). El fix es válido pero por ahora se queda solo en mi fork; si más adelante decido contribuirlo, lo vuelvo a abrir a propósito. Disculpas por el ruido.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants