Skip to content

feat(i18n): migrar CliConnect y el editor de cuentas a los catálogos ES/EN — T2c slice 2 C1a (#66) - #216

Merged
egdev6 merged 4 commits into
egdev6:mainfrom
danielgap:feat/i18n-t2c-c1a-shared
Oct 29, 2026
Merged

egdev6 merged 4 commits into
egdev6:mainfrom
danielgap:feat/i18n-t2c-c1a-shared

Conversation

@danielgap

Copy link
Copy Markdown
Contributor

Related issue / Issue relacionada

Refs #66

ODD: fase T2c, slice 2, C1a. Sigue a #204 (PR-B, armazón de Proveedores). Anuncio del reparto de C1 en C1a/C1b: issues/66#issuecomment-6509608432.

Scope / Alcance

Las piezas compartidas de conexión de cuentas pasan por los catálogos. Con es todo se ve igual que hoy.

  • Pasos de conexión por CLI (CliConnect, Claude/Codex/Gemini/Grok y sus cuentas adicionales): instalar el CLI, iniciar sesión, notas de sesión y comprobación (settings.providers.cliConnect.*). El estado sale de un hook, así que la vista se extrae verbatim a CliConnectView para renderizar cada estado por SSR, como HealthStepView en feat(i18n): migrar el armazón de la página de Proveedores a los catálogos ES/EN — T2c slice 2 PR-B (#66) #204.
  • Editor de cuentas adicionales (AccountEditor, todos los proveedores): nombre, visibilidad, pasos, token de Cursor, usuario y plan de Copilot, API keys, admin keys y presupuesto, carpeta de sesión y eliminar cuenta (settings.providers.accountEditor.*).
  • 4 claves compartidas que C1b reutilizará: settings.providers.{showInWidget,checkTitle,apiKey,planLabel}. «Guardar y comprobar» reutiliza health.saveAndCheck.
  • Nota 1 de feat(i18n): migrar el armazón de la página de Proveedores a los catálogos ES/EN — T2c slice 2 PR-B (#66) #204: CLI_INSTALL gana whereKey. CliMissing traduce por clave en vez de comparar con 'una terminal'. Codex y Gemini dejan su where en español (solo lo leía CliMissing); Claude conserva where: 'PowerShell'. El tipo admite where o whereKey, nunca los dos.
  • Texto con elementos dentro: las frases se parten alrededor de <code> y <Link>, como accentHint. La nota de la carpeta de sesión interpola el rótulo del botón cliConnect.reopenLogin, así en en apunta al botón real.
  • Quedan literales: /login, los planes de Copilot con su cifra (Pro · 300…), nan_community/nan_member/GLM Premium, los rótulos de UIs de terceros (GitHub › Fine-grained tokens, openrouter.ai › Keys, z.ai › API Keys, OpenCode › Console, como GitHub Releases) y las marcas.

Fuera de alcance:

Nota 2 de #204: en en, dentro del editor de cuentas siguen en español el bloque de conexión de NaN y el instalador del CLI de Codex hasta C2, igual que los paneles por proveedor hasta C1b. El test lo documenta y solo comprueba lo que pinta AccountEditor.

Tamaño: +871/−118. 476 líneas son el test nuevo (src/Settings-accounts-i18n.test.tsx) y el resto es mayormente mecánico (inventario y 58 claves por catálogo). Para revisar, el foco está en src/Settings.tsx y en src/lib/accounts.ts.

Commits: 5606cef (feat) y af9b271 (inventario regenerado).

Coordination / Coordinación

Contribuidor: @danielgap
Evidencia: asignación en #66 y anuncio de C1a/C1b.

Acceptance and validation / Aceptación y validación

  • Criterios cumplidos: CliConnect, AccountEditor y el where de CliMissing por catálogo; es idéntico a hoy; en completo en esas piezas.
  • Comprobaciones ejecutadas (RED→GREEN):
    • npx vitest run --dir src: 760/760. 7 tests nuevos: con el código de main fallaban 6 (exports y whereKey). Tras extraer los componentes sin migrar, los de es ya pasaban (salida idéntica) y fallaban los 4 de en/whereKey.
    • npx tsc --noEmit: OK.
    • Suite completa node --test scripts/*.test.mjs scripts/security/*.test.mjs: 250 pasan.
    • node scripts/i18n-inventory.mjs --check: OK sobre af9b271.
  • Comprobaciones con fallos ambientales: 4 fallos EPERM de symlink en Windows (3 en setup-signing, 1 en provision-tools). Los mismos fallan en main.
  • Comprobaciones no ejecutadas: cargo test, porque la rama no toca Rust.
  • Prueba manual EN: hecha por el contribuidor en Windows sobre la rama (af9b271, tauri dev), con OK. Siguen en español por plan los paneles por proveedor (C1b), NaN/9Router/APIs/CodexInstall (C2) y los textos de Rust (slice 3).
  • Bloqueos pendientes: ninguno.

… T2c slice 2 C1a (egdev6#66)

CliConnect (vía CliConnectView, extraída verbatim para SSR) y AccountEditor
pasan sus textos a settings.providers.{cliConnect,accountEditor}.* con 4 claves
compartidas; con es todo se ve igual. CLI_INSTALL gana whereKey para que
CliMissing traduzca por clave y no comparando 'una terminal' (nota 1 de egdev6#204).
Marcas, rutas, comandos, planes con cifra y rótulos de UIs de terceros quedan
literales.
Copilot AI balanced review requested due to automatic review settings October 29, 2026 22:40

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 insufficient remaining quota.

@egdev6 egdev6 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

@danielgap revisado: aprobada, sin bloqueos.

Contrastado:

  • es idéntico a main. Extraje mecánicamente los literales eliminados de Settings.tsx y accounts.ts. Los 54 textos de interfaz están verbatim en es.ts, con placeholders donde había interpolación (apiKeyOf, sessionNoteAfter con {reopen}). Los 11 restantes son marcas, rutas y comandos que quedan literales, como dice el alcance (/login, GitHub › Fine-grained tokens, los npm install…).
  • Nota 1 de #204 resuelta: CLI_INSTALL usa whereKey: 'settings.providers.cliMissing.terminal', y el tipo CliInstallWhere impide declarar where y whereKey a la vez. CliMissing ya no compara con 'una terminal'.
  • Nota de la carpeta de sesión: toma el rótulo de cliConnect.reopenLogin, así que en en apunta al botón real.
  • Tests: los 7 casos cubren CliConnect por estado, AccountEditor y whereKey, con español verbatim en es y negativas de español en en.

Lo que hice en tu rama: #210 entró en main después de abrirse la PR y dejó un conflicto en docs/i18n-inventory.md. Para no reescribirte el historial, integré main con un merge (8d24f98) y regeneré el inventario (763d1ce). Tus commits 5606cef y af9b271 quedan intactos. En local, tras el merge: 770/770 en Vitest, typecheck limpio e inventario en verde. Los cinco checks pasan sobre 763d1ce.

Adelante con C1b. Recuerda la coordinación con el panel de Antigravity que dejé en #66.

@egdev6
egdev6 merged commit 2bd3e78 into egdev6:main Oct 29, 2026
5 checks passed
@danielgap
danielgap deleted the feat/i18n-t2c-c1a-shared branch October 29, 2026 23:17
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.

3 participants