feat: UX-B · Pulido transversal (tipografía, jerga, confirmaciones, a11y)#59
Merged
Conversation
Fuentes (next/font Manrope/JetBrains) + minors de UX-A; primitivos shadcn/Radix nuevos (InfoTooltip, Select, AlertDialog) + glosario de jerga; tooltips aplicados + traducción de kinds; skeletons consistentes; confirmaciones en acciones que mutan (Aprobar/Rechazar→PR/ ticket/self-heal); a11y del grafo; reordenar Integrations. Un sub-proyecto, plan de varias tareas. No rompe negocio (solo UI/UX). Sub-proyecto B de la mejora UX. Claude-Session: https://claude.ai/code/session_0198KfgRWvAM8BhiVz24uTok
T1 tipografía next/font + 3 minors de A; T2 primitivos Radix (tooltip/InfoTooltip, select, alert-dialog) + glosario; T3 jerga aplicada + etiquetas humanas; T4 skeletons; T5 confirmaciones (AlertDialog en Aprobar/Rechazar) + Select unificado; T6 a11y del grafo + Integrations. No rompe negocio. Verificación local=CI. Claude-Session: https://claude.ai/code/session_0198KfgRWvAM8BhiVz24uTok
- layout.tsx: carga Manrope y JetBrains Mono via next/font/google con
variables --font-sans-loaded / --font-mono-loaded; html recibe las
clases de variable.
- globals.css: --font-sans y --font-mono usan var(…-loaded) con
fallback a los nombres literales; fuente siempre disponible.
- topbar.tsx: elimina el <p>Mnemo</p> redundante (subtítulo duplicado).
- onboarding/page.tsx: empty-state sin org enlaza a /app/org
("Ir a Organización") en vez de /app/knowledge.
- app/page.tsx: fila de accesos rápidos deriva de NAV_ITEMS filtrado
por href; ya no es un literal array.
- tests: topbar verifica ausencia del subtítulo duplicado; onboarding
verifica href=/app/org en el CTA del empty-state.
Claude-Session: https://claude.ai/code/session_0198KfgRWvAM8BhiVz24uTok
- Añade @radix-ui/react-tooltip, @radix-ui/react-select, @radix-ui/react-alert-dialog - lib/glossary.ts: GLOSSARY con 10 términos de dominio (foso, triaje, self_heal…) - ui/tooltip.tsx: Tooltip/TooltipTrigger/TooltipContent con Portal (Radix + cn, zinc-900) - ui/InfoTooltip.tsx: botón HelpCircle que consume GLOSSARY por term o content directo - ui/select.tsx: Select/SelectTrigger/SelectValue/SelectContent/SelectItem (shadcn-style, rounded-xl) - ui/alert-dialog.tsx: AlertDialog/Trigger/Content/Title/Description/Action/Cancel con overlay - Tests: 9 tests (InfoTooltip ×5, Select ×2, AlertDialog ×2) — jsdom, userEvent, todos verdes - CI gate: lint:ci=0 warnings, tsc clean, npm build OK Claude-Session: https://claude.ai/code/session_0198KfgRWvAM8BhiVz24uTok
- ActionsPanel: KIND_LABEL (quarantine→Cuarentena, ticket→Ticket, self_heal→Auto-reparación) + InfoTooltip en encabezado "Acciones" - TriageVerdictList: CATEGORY_LABEL (real→Fallo real, flaky→Flaky, maintenance→Mantenimiento, infra→Infra, unknown→Desconocido) + InfoTooltip en encabezado + leyenda de colores inline - CertificateCard: InfoTooltip en "certificado" y "risk score" - GateCard: InfoTooltip en "Gate (check run)" - calibration/page: InfoTooltip en "Calibración" y "foso" - graph/page: SEVERITY_LABEL (alta→Alta, media→Media, baja→Baja) + InfoTooltip en "Coverage Gaps" - defects/page: InfoTooltip en "Defect DNA" y "Linaje" - Tests ActionsPanel+TriageVerdictList: 6 tests (2→6) con cleanup() Claude-Session: https://claude.ai/code/session_0198KfgRWvAM8BhiVz24uTok
Reemplaza los 7 textos "Cargando…" por <Skeleton> con forma aproximada del contenido final en graph, integrations, knowledge, onboarding, test-plan y BriefingCard. Añade data-testid a cada skeleton; actualiza los tests afectados para verificar el testid en vez del texto plano. Claude-Session: https://claude.ai/code/session_0198KfgRWvAM8BhiVz24uTok
- ActionsPanel: Aprobar/Rechazar ahora abren AlertDialog; la mutación solo se ejecuta al confirmar, nunca al cancelar - defects/page RootCausePanel: InfoTooltip no-bloqueante junto al botón Analizar causa raíz - Reemplaza <select> nativo por <Select> de Radix UI en org-switcher, knowledge/page (Tipo), FamilyLabelControl y assurance/page (Formato) - Tests: 5 nuevos casos en ActionsPanel (dialog open, confirm, cancel, rechazar confirm/cancel); FamilyLabelControl y org-provider actualizados para Radix Select con userEvent - 34 test files, 176 tests verdes; lint:ci 0; tsc clean; build OK Claude-Session: https://claude.ai/code/session_0198KfgRWvAM8BhiVz24uTok
- knowledge-graph-view: añade role="application" + aria-label="Grafo de conocimiento" al contenedor; región aria-live="polite" que anuncia el nodo seleccionado - graph/page: panel de gaps envuelto en <ul aria-label="Gaps de cobertura"> + <li>; badge de severidad con icono (▲◆▼) + texto (no solo color); actualiza test de orden para ignorar el icono en textContent - integrations/page: badge "✓ Conectado" (data-testid="github-connected-badge") cuando githubConfig.configured; help-text de formato para Installation ID (gh-install-id-hint) y owner/repo (gh-repo-hint) - Tests: 7 nuevos tests RED→GREEN (aria-label, aria-live, ul a11y, icono en badge, badge Conectado, hints de formato); 185/185 pasan Claude-Session: https://claude.ai/code/session_0198KfgRWvAM8BhiVz24uTok
…ribedby en Integrations
I1: <ul>/<li className="contents"> en graph/page.tsx sustituido por flex flex-col gap-3 / list-none
para preservar el rol de lista en Safari/VoiceOver sin cambio visual.
I2: aria-describedby añadido en integrations/page.tsx a los inputs gh-install-id y gh-repo,
enlazando los hints ya existentes para lectores de pantalla.
Claude-Session: https://claude.ai/code/session_0198KfgRWvAM8BhiVz24uTok
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Qué hace este PR
Sub-proyecto B de la mejora de UX (auditoría 2026-06-28, A→B→C). Pulido transversal de calidad percibida, claridad y accesibilidad — sin tocar la lógica de negocio.
Cambios (6 tareas)
next/font/google(estaban declaradas pero nunca se cargaban) + los 3 minors que dejó UX-A.InfoTooltip,Select,AlertDialog+ un glosario término→definición.quarantine→"Cuarentena",self_heal→"Auto-reparación"…).<Skeleton>.AlertDialogen Aprobar/Rechazar (que crean PR/ticket/self-heal reales) — la mutación solo corre tras confirmar +<select>crudos →<Select>.role/aria-label/aria-liveen el grafo, panel de gaps como lista semántica, severidades con icono+texto; Integrations reordenado (config→indexar) + badge "✓ Conectado" + help-text.Plan de pruebas
lint:ci0 + 185 tests +build.git diff src/ db/vacío.<Select>preservan value/onChange.display:contents;aria-describedbyen Integrations).Siguiente
https://claude.ai/code/session_0198KfgRWvAM8BhiVz24uTok