CodeHub by Wilson.E · Actualizado: Agosto 2026
Qué hace:
- Botón micrófono
#emi-mic-btnen.ai-input-row→ voz a texto (Web Speech API). - Toggle "Voz EMI" inyectado en
.ai-bottom-bar→ EMI lee las respuestas en voz alta (auto-speak). - Idioma automático:
es-GT/en-USsegúnch_langde localStorage; sincronizado en vivo vía eventoch:langchangedesdeapplyLang()en index.html. - Fallback: si el navegador no soporta voz, el botón muestra un tooltip y un toast de aviso.
Archivos tocados (ya aplicado):
index.html→ botón micrófono +<script src="js/emi-voice.js" defer>+applyLang()dispatch.css/components.css→ estilos#emi-mic-btn, ripple, toast (después de#ai-send-btn).vercel.json→Permissions-Policy:microphone=(self)(⚠️ si se bloquea conmicrophone=(), la voz NO funciona).sw.js→js/emi-voice.jsycss/components.cssen el PRECACHE para que EMI funcione offline.
CSS embebido: el bloque CSS vive al final de js/emi-voice.js en comentario, como referencia; la copia activa está en css/components.css.
pages/blog.html, blog/, js/admin-blog-static.js, autoposter/ y
autoposter-workflow.yml fueron removidos. La sección frontal fue reemplazada
por #news-section en index.html (feed RSS de BBC Mundo).
| Test | Resultado esperado |
|---|---|
| Abrir EMI → clic micrófono | Botón rojo pulsante, placeholder "Habla ahora…" |
| Hablar algo | El texto aparece en el textarea |
| Activar "Voz EMI" → enviar mensaje | EMI responde en voz alta |
| Preguntar a EMI "¿qué lenguajes dominas?" | Lista actualizada (TypeScript, SQL, Shell/Bash, Java/Kotlin) |
| admin-hub → tabs | Ya NO aparece el tab "Blog" |