What's new in v1.0.9
🌐 Internationalization (i18n)
- Systematic audit: removed all hardcoded Spanish strings leaking into English mode
- Fixed Training Zones, BMI card, profile form, recovery badges, percentile tooltip, AI summary and more
- Dates in the weight log now respect the selected language
- Imperial / metric toggle in the profile form (ft·in·lbs ↔ cm·kg)
🤖 AI Summary
- Card now collapses to 5 lines with a "Read more / Read less" button
- Model markdown (
#,**) is stripped automatically before rendering
🔧 Bug fixes
- "Demo data" badge no longer appears when credentials are valid but Garmin fails temporarily — new orange badge ("Garmin temporarily unavailable")
- Resting HR floor lowered from 30 to 20 BPM for elite athletes
- Connection error message now translates correctly
🪟 MFA / Windows
get-garmin-tokens.jsscript fully rewritten:- Patches the instance (not the prototype) → works on all platforms
- Double safety net: instance patch + axios response interceptor
- Removed
form-datadependency → uses nativeURLSearchParams - Vercel pipe now compatible with Windows CMD / PowerShell
🧪 Tests
- 72 unit tests with Jest covering all pure algorithms
- Scoring: sleep, recovery, strain, training zones, VO2max, median, sleep debt
- i18n: variable interpolation
- Commands:
npm test·npm run test:watch·npm run test:ci
📸 Screenshots
- Screenshots section added to the bilingual README with 5 real app images
Qué hay de nuevo en v1.0.9
🌐 Internacionalización (i18n)
- Auditoría sistemática: eliminados todos los strings hardcodeados en español que aparecían en modo inglés
- Corregidas Training Zones, BMI card, perfil, badges de recuperación, tooltip de percentil, resumen IA y más
- Fechas en el registro de peso ahora respetan el idioma seleccionado
- Sistema imperial / métrico en el formulario de perfil (ft·in·lbs ↔ cm·kg)
🤖 AI Summary
- El card ahora se colapsa a 5 líneas con botón "Ver más / Ver menos"
- El markdown del modelo (
#,**) se limpia automáticamente antes de mostrar
🔧 Bug fixes
- El badge "Datos demo" ya no aparece cuando las credenciales son válidas pero Garmin falla temporalmente — nuevo badge naranja ("Garmin temporalmente no disponible")
- RHR floor bajado de 30 a 20 BPM para atletas de élite
- El texto de error de conexión ahora se traduce correctamente
🪟 MFA / Windows
- Script
get-garmin-tokens.jsreescrito completamente:- Parchea la instancia (no el prototipo) → funciona en todas las plataformas
- Doble seguro: patch + interceptor de axios
- Elimina dependencia
form-data→ usaURLSearchParamsnativo - Pipe a Vercel compatible con Windows CMD/PowerShell
🧪 Tests
- 72 tests unitarios con Jest cubren todos los algoritmos puros
- Scoring: sueño, recuperación, strain, zonas de entrenamiento, VO2max, mediana, deuda de sueño
- i18n: interpolación de variables
- Comandos:
npm test·npm run test:watch·npm run test:ci
📸 Capturas de pantalla
- Sección de screenshots añadida al README bilingüe con 5 imágenes de la app real