Repository navigation
feat(i18n): migrar los paneles de suscripción a los catálogos ES/EN — T2c slice 2 C1b (#66) - #217
Merged
Merged
Conversation
… T2c slice 2 C1b (egdev6#66) Claude, Codex, Gemini, Grok, Cursor, Copilot, MiniMax, z.ai y OpenCode Go pasan sus textos a settings.providers.panels.* (44 claves; reusa las compartidas de C1a). Paneles extraídos verbatim para SSR: SubscriptionPanel, CursorPanel, CopilotPanel, MiniMaxPanel, ZaiPanel y OpenCodeGoPanel; con es todo se ve igual. Tests de aria-current/aria-expanded en ProvidersCard y SettingsNav (nota 3 de egdev6#204) y ProviderDrawerHead deja de tapar t() (nota 4).
egdev6
approved these changes
Oct 30, 2026
egdev6
left a comment
Owner
There was a problem hiding this comment.
@danielgap revisado: aprobada, sin bloqueos.
Contrastado:
esidéntico amain. Extraje mecánicamente los literales eliminados deSettings.tsx: los textos de interfaz están verbatim enes.ts, incluidoskickerOAuth,credentialsFile,authJsonFileywsl/wslUser, con el punto de «. Para WSL:» fuera de la clave para que se vea igual. Lo demás queda literal, como dice el alcance: marcas con plan, rutas y variables de entorno,grok login, rótulos de terceros y los planes de Copilot con cifra.- Notas de #204:
- Nota 3: los tests de
aria-currentyaria-expandedsiguen el estado enProvidersCardySettingsNav. - Nota 4:
ProviderDrawerHeadusa(entry) =>.
- Nota 3: los tests de
- OpenCode Go incluido, como pedí en #201. Antigravity se resolverá al rebasear #207, según lo acordado en #66.
- En local, sobre
4e7f3a5: 785/785 en Vitest (10 casos nuevos de paneles), typecheck limpio e inventario en verde. Los cinco checks pasan en CI.
Sobre lo que preguntas:
- Errata de MiniMax: sí, corrígela en esta PR. «su fallo no lo degrada» es un error real y vale la excepción a la regla de
esidéntico. Solo cambiaes.tsy la aserción que lo cite. Regenera el inventario si hace falta. - Claves reutilizadas de
accountEditor.*: opcional y no bloquea. Prefiero moverlas asettings.providers.*, donde ya están las compartidas de C1a, para que cambiar un texto del editor de cuentas no cambie los paneles sin querer. Puede ir aquí o en C2, como te resulte más cómodo.
Adelante con C2 cuando quieras.
eichhorn-micaela
added a commit
to eichhorn-micaela/quorb
that referenced
this pull request
Oct 30, 2026
…aneles Mismo patrón que el resto de paneles migrados en C1b (egdev6#217): español verbatim con locale es e inglés sin restos de español con locale en. Refs: coordinación C1b / egdev6#207
1 task done
egdev6
pushed a commit
that referenced
this pull request
Oct 30, 2026
…207) * feat(providers): proveedor Antigravity con cuota por modelo del IDE Antigravity no deja una sesión reutilizable en disco y su cuota es un grupo propio, distinto del de Gemini CLI. El proveedor consulta el servidor de lenguaje local que arranca el IDE (GetUserStatus, no oficial): token CSRF desde la línea de comandos del proceso lanzado con --app_data_dir antigravity y puerto HTTP desde language_server.log del arranque actual (mismo pid). La petición va solo a 127.0.0.1 y el token no se guarda. Un medidor por modelo agrupando las variantes de esfuerzo (High/Medium/ Low), el más gastado primero; plan desde userTier.description. La ventana (5 h o semanal) se deduce del tiempo hasta el reinicio. Con el IDE cerrado el informe queda en Warning con instrucciones. Config AntigravityConfig { enabled } (sin cuentas adicionales), pestaña en Ajustes, tipos TS, visibilidad, dataKey, i18n, monograma AG y filas en los README. * chore(i18n): regenerar inventario con los textos de Antigravity * fix(providers): deducir la ventana de Antigravity sin depender de un instante Una cuota semanal a la que le quedan menos de 5 h para el reinicio se clasificaba como ventana de 5 h, con ventana y ritmo incorrectos en sus últimas horas. Ahora la ventana sale de señales fiables: más de 5 h hasta el reinicio solo puede ser semanal; un reinicio ya visto conserva la ventana deducida entonces (memoria en proceso por medidor); un reinicio que cambió y cae dentro de 5 h es una ventana de 5 h; y los modelos con el mismo resetTime exacto comparten ventana. Sin ninguna señal, window_seconds queda en None. Tests del borde semanal con menos de 5 h, del aprendizaje de 5 h por reinicio cambiado, del grupo y de reinicios lejanos o pasados. Refs: feedback de review en #207 * docs(providers): Antigravity solo verificado en Windows y endpoint no documentado Indica en los README y en la pestaña de Ajustes que por ahora solo se verificó en Windows, y añade Antigravity (GetUserStatus interno) al aviso de endpoints no documentados. Refs: feedback de review en #207 * chore(i18n): regenerar inventario tras la nota de Windows de Antigravity * chore(i18n): regenerar inventario tras integrar main * test(settings): cubrir el panel de Antigravity en los tests i18n de paneles Mismo patrón que el resto de paneles migrados en C1b (#217): español verbatim con locale es e inglés sin restos de español con locale en. Refs: coordinación C1b / #207 * chore(i18n): regenerar inventario tras los tests del panel de Antigravity * fix(providers): no deducir 5 h de Antigravity tras una pausa entre consultas Un reinicio que cambia y cae dentro de 5 h solo demuestra una ventana de 5 h si la consulta anterior es reciente. Si el reinicio cambió, la ventana nueva empezó después de esa consulta; una semanal acabaría al menos 7 días después de ella y no podría quedarle ≤ 5 h antes de 7 días − 5 h. Ahora se guarda cuándo se vio cada reinicio y, tras una pausa mayor (Antigravity cerrado), la transición es ambigua y queda en None en vez de aprender 5 h. Tests: el salto semanal tras una pausa (27 oct → 5 nov) del review y la cota del intervalo a ambos lados del límite. Refs: feedback de review en #207 * chore(i18n): regenerar inventario tras el ajuste de ventanas de Antigravity * fix(providers): aislar la consulta local de Antigravity de proxies y del log de otros procesos P1: la consulta usaba el cliente HTTP compartido, que respeta HTTP_PROXY/ALL_PROXY; sin un NO_PROXY que excluya loopback, el token X-Codeium-Csrf-Token llegaba al proxy aunque la URL fuese 127.0.0.1. Ahora va con un cliente dedicado (local_client) con no_proxy(), sin seguir redirecciones y con timeout propio. P2: http_port buscaba «pid N» como subcadena (pid 123 coincidía con pid 1234) y, si el bloque de ese pid no tenía puerto HTTP, seguía por los arranques posteriores. Ahora compara el pid completo del marcador de arranque y solo mira su bloque, hasta el siguiente «Starting…». Regresiones (RED observado antes del arreglo): pid exacto, bloque delimitado, proxy configurado que no recibe la consulta y redirección que no se sigue, con servidores de prueba en loopback. Refs: feedback de review en #207 * chore(i18n): regenerar inventario tras aislar la consulta de Antigravity
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related issue / Issue relacionada
Refs #66
ODD: fase T2c, slice 2, C1b. Sigue a #216 (C1a,
CliConnecty editor de cuentas). Reparto de C1 aprobado en issues/66#issuecomment-6509608432 y tu OK en #66.Scope / Alcance
Los paneles por proveedor de suscripción pasan por los catálogos. Con
estodo se ve igual que hoy.Mostrar en el widget, campos con sus ayudas, etiquetas deSecretInput,aria-labelde los pasos y los desplegables «Avanzado» (settings.providers.panels.*, 44 claves).showInWidget,apiKey,planLabel) y las deaccountEditor.*cuyo texto es idéntico (usuario y plan de Copilot, token de solo lectura,createIn,apiKeyOf), en vez de duplicarlas. Si prefieres moverlas a claves compartidas desettings.providers.*, es un renombrado mecánico.t()):SubscriptionPanel(Claude/Codex/Gemini/Grok),CursorPanel,CopilotPanel,MiniMaxPanel,ZaiPanelyOpenCodeGoPanel.Settings()les pasa unpanelcompartido con estado y handlers.aria-current/aria-expandedsiguen el estado. EnProvidersCard, solo la tarjeta seleccionada con el panel abierto; ninguna con el panel cerrado. EnSettingsNav,aria-current="page"solo en la sección activa yaria-expandedsegún el plegado. Forzando los valores fallan los 5.ProviderDrawerHeadusa(entry) =>y ya no tapa at().<code>,<Link>y<b>, como en C1a.TU_USUARIOdentro de la ruta WSL de Claude es clave (YOUR_USERenen), por ser una palabra en español dentro de la ruta.Claude (Pro / Max),ChatGPT (Plus / Pro · Codex),Gemini (Google AI Pro / Code Assist),Grok (SuperGrok)), marcas, rutas y variables de entorno,grok login, rótulos de terceros o ya en inglés (Gemini CLI,Subscription Key,API key PAYG,Base URL,z.ai › API Keys,OpenCode › Console) y los planes de Copilot con cifra.Una errata del original: el
paygHintde MiniMax dice «su fallo no lo degrade» y debería ser «degrada». La dejé verbatim por la regla deesidéntico; enenva bien. Si quieres, la corrijo aquí mismo.Fuera de alcance:
NanConnect,NanProbe,NineRouterConnectyCodexInstall.Nota 2 de #204: con C1b, los placeholders en inglés de
SecretInputya no quedan dentro de paneles en español en los proveedores de suscripción. Quedan los de C2.Tamaño: +993/−279. 434 líneas son el test nuevo (
src/Settings-panels-i18n.test.tsx) y unas 200 son inventario y claves. Para revisar, el foco está ensrc/Settings.tsx: la extracción de los 6 paneles y elpanelcompartido deSettings().Commits:
594eec0(feat) y4e7f3a5(inventario regenerado), sobremain2bd3e78.Coordination / Coordinación
Contribuidor: @danielgap
Evidencia: asignación en #66 y anuncio de C1a/C1b.
Acceptance and validation / Aceptación y validación
esidéntico a hoy;encompleto en esos paneles; notas 3 y 4 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.npx vitest run --dir src: 785/785. 15 tests nuevos: 10 de paneles y 5 dearia-*. Con el código demainfallaban los 10 de paneles. Tras extraer los componentes sin migrar, los 5 deesya pasaban (extracción verbatim) y fallaban los 5 deen.npx tsc --noEmit: OK.node --test scripts/*.test.mjs scripts/security/*.test.mjs: 250 pasan.node scripts/i18n-inventory.mjs --check: OK sobre4e7f3a5.setup-signing, 1 enprovision-tools). Los mismos fallan enmain.cargo test, porque la rama no toca Rust. El panel de Codex con el CLI ausente no se testea por SSR: pintaCodexInstall(C2), que usauseSyncExternalStoresingetServerSnapshot.4e7f3a5,tauri dev), con OK. Siguen en español por plan los paneles de C2 y los textos de Rust (slice 3).