Repository navigation
feat(sprint-10): excelencia UI/UX (auditoría 10/10) y paridad Windows/Linux - #12
Merged
Merged
Conversation
- Fuentes empaquetadas (Inter, Fira Code y DejaVu Sans para simbolos) que cubren todos los caracteres de la interfaz; nunca se usan fuentes del sistema. - Estilo Fusion forzado, tamanos en pixeles (no puntos), politica de escalado PassThrough e iconos de dialogo dibujados por la app. - Sin emojis (Segoe UI Emoji y Noto Color Emoji se ven distintos). - color-text-muted y la superficie elevada ajustados a 4.5:1; temas de alto contraste y claro; badge_style elige el texto legible. - Pruebas: cobertura de glifos, sin puntos ni emojis, y geometria identica con otro DPI logico y sin ninguna fuente del sistema. CI en Windows y Linux.
…licito de det(A) - diagnose_scalar_text explica coma decimal, letra O por cero, a/0, signos y caracteres extranos; decimal_hint da la aproximacion de una fraccion. - CalculationStep admite alert_rows y highlight_cells. - La triangulacion cierra con det(A) = (-1)^k (u11)(u22)... = valor y resalta la diagonal. - SystemAnalysis guarda el valor c de la fila contradictoria 0 = c.
- DynamicMatrixGrid: deshacer/rehacer, mensaje en linea de la celda invalida, vacio -> 0 al salir, Ctrl+Supr / Ctrl+Mayus+Supr, Ctrl+Intro para calcular, aviso con Deshacer y destello al pegar, resize_to. - Toasts no modales con accion y estado de carga (busy). - ScalarField/ScalarInput: borde rojo, explicacion, aproximacion decimal y chips. - MatrixSizeControl: dimensiones directas; ResponsiveRow para pantallas angostas. - Carrusel: salto a cualquier paso, teclado, alertas de fila nula y exportacion a PDF, HTML, LaTeX o texto. - Dashboard: aviso con boton de accion, copia de resultados y solucion en LaTeX. - Ventana: atajos (F1), apariencia (Ctrl+,), escala de interfaz y pestanas con rotulos cortos cuando el ancho no alcanza.
- Dimensiones directas, estado de carga y Ctrl+Intro al resolver. - Reiniciar y cargar casos se pueden deshacer; el caso activo queda marcado. - Cramer deshabilitado con explicacion si el sistema no es n x n, con atajos para igualar a n x n o pasar a Gauss-Jordan; det(A) = 0 ofrece clasificar. - Contradiccion concreta (fila y valor) en el carrusel y en el dashboard. - Leontief en cuadricula con suma de columnas en vivo; dieta y trafico editables; ejemplos quimicos; la vista lleva al usuario a la matriz cargada.
- Un solo boton Calcular, ajuste de dimensiones de B y muestras por pagina. - Inspector de celdas con badge, escalar con chips y diagnostico inline. - Transpuesta con B opcional, propiedades ternarias con intermedios. - Inversa singular salta al paso critico; reutilizar A^-1 como entrada. - TMI con tarjeta clave y filtros; comparacion de identidades AB vs BA. - CurrentPageStack: las paginas ocultas no reservan altura. - Pruebas de Sprint 10 para infraestructura, Modulo 1 y Modulo 2.
Modulo 3 (vectores en R^n):
- u +/- v y k.v con operador visible, intercambio u<->v deshacible y
carrusel componente a componente (core: trace_vector_sum/scale).
- Metricas con selector segmentado y un solo Calcular; inspector de u v^T
que resalta u_i y v_j.
- Conjuntos {v1..vk} en varias filas (FlowLayout), pegado de matriz como
columnas o [v1 .. vk | b], quitar vector con Deshacer, aviso k > n.
- Validacion en linea (sin modales), fila y valor de la contradiccion en
el SI con salto al paso, ejemplo SCI, veredictos marcados como
desactualizados al editar, dialogo de teoremas del Modulo 3.
Modulo 4 (A x = b y propiedades de A x):
- Un solo boton Resolver/Verificar, control m x n con Hacer cuadrada,
ajuste de b, errores en linea y reinicio deshacible.
- Insignia de solucion particular con variables libres resaltadas en SCI
y fila contradictoria concreta en SI.
- Vincular u y v a las columnas de A, LHS/RHS en una fila (apilables),
escalar c con pista decimal y chips, nota pedagogica para c = 0.
Transversal: casillas con marca de verificacion, temporizadores ligados a
la vida del widget (evita RuntimeError al cerrar).
Modulo 5 (determinantes): - Orden n con spinbox directo; errores en linea sin dialogos modales. - Sarrus fuera de 3x3 ofrece "Ajustar a 3x3" (badge y aviso deshacible); un paso por diagonal y esquema grafico que sigue al carrusel. - Laplace resalta la fila o columna de expansion en A y sugiere la de mas ceros (core: best_expansion_line). - Menores, cofactores, adjunta e inversa en pestanas; "Usar A^-1 como A" y "Enviar A^-1 a Matrices" (abre el Modulo 2 en la inversa). - Propiedades con B al lado de A, escalar k comun y desglose k^n = 2^2 = 4 => 4 . 9 = 36 (core: scaling_breakdown). Modulo 6 (LU): - Tamano m x n con spinboxes, panel de A que se ensancha con matrices anchas, filas permutadas marcadas en ocre con leyenda. - Etapas en pestanas y clasificacion de A x = b (SCI/SI con variables libres) cuando U tiene un pivote nulo o A no es cuadrada. Transversal: el resaltado de celdas vuelve a verse (la hoja de estilo de la cuadricula ya no lo tapaba), carrusel con senal stepChanged y opcion para ocultar cabeceras x1..xn fuera de sistemas, forma vectorial parametrica que salta de linea a 1366 px.
- Docs/Sprints/Sprint10/README.md con requerimientos por modulo, decisiones tecnicas y commits. - design-rules.md: tokens vigentes (WCAG AA, tres temas), tipografia empaquetada y patrones de interaccion del sprint. - README: tabla de atajos comunes; tooltips unificados en "Ctrl+Intro" como en la hoja de atajos.
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.
Resumen de Cambios
Este PR introduce la implementación completa del Sprint 10, correspondiente al cierre exhaustivo de todas las brechas heurísticas, casos límite y restricciones ergonómicas documentadas en la auditoría maestra de UI/UX (Módulos 1 al 7), garantizando un estándar de calidad 10/10 en cada flujo y logrando una apariencia idéntica y predecible en Windows y Linux. Los cambios abarcan ampliaciones aditivas en el motor (
prettycalc.core), componentes transversales y refinamiento integral de los seis módulos interactivos en la interfaz de escritorio (prettycalc.ui).Objetivos Cumplidos
text_muted#C9C3D6,surface_elevated#4A4257), tres temas completos (oscuro, alto contraste y claro) seleccionables en Apariencia (Ctrl+,) y cálculo dinámico de texto legible en badges.Ctrl+Z,Ctrl+Y) para cambios masivos (pegar, reiniciar, cargar ejemplos, intercambiar operandos); auto-completado de celda vacía a0al desenfocar; y ejecución universal conCtrl+Intro.0 = ccon salto al paso, inspección interactiva celda a celda en productos matriciales, traza componente a componente en vectoresu ± vyk·v, solución particular destacada en SCI, sincronización gráfica de diagonales de Sarrus, sugerencia de línea óptima en Laplace y clasificación completa con filas permutadas en PLU.Detalles de Implementación por Módulo
1. Motor Matemático (
prettycalc/core/)input_diagnostics.py):diagnose_scalar_text()para explicar en lenguaje natural errores comunes de digitación (coma decimal, letra 'O'/'o' por cero, división entre ceroa/0, signos duplicados o caracteres inválidos) ydecimal_hint()para ofrecer aproximaciones decimales útiles de fracciones.tracer.py):CalculationStepampliado con soporte dealert_rows(resaltado de contradicción/filas críticas) yhighlight_cells(coordenadas de celdas involucradas).determinants.py): Cierre explícito de triangulación con producto de la diagonal principal\det(A) = (-1)^k \prod u_{ii}, diagonales individuales en Sarrus, marcado de fila/columna en Laplace, funciónbest_expansion_line()para sugerir la línea con más ceros yscaling_breakdown()para la leyk^n \det(A).classifier.py): Incorporación deinconsistent_valueenSystemAnalysispara identificar el valor de la fila0 = c.vector_ops.py): Trazadores pedagógicostrace_vector_sum()ytrace_vector_scale()con explicación aritmética elemento por elemento.__init__.py): Contratos del núcleo matemáticamente exactos confractions.Fractionintactos; los nuevos diagnósticos y trazadores se consumen limpiamente por sus módulos.2. Capa de Presentación (
prettycalc/ui/)platform_setup.py,assets/fonts/): Carga y registro de familias Inter, Fira Code y DejaVu Sans; configuración de escaladoPassThrough; renderizado consistente sin depender de tipografías del SO.theme.py,preferences_dialog.py): Soporte de temas (oscuro, alto contraste, claro) y selector de escala de interfaz accesible medianteCtrl+,.matrix_grid.py,book_matrix.py): Historial de deshacer/rehacer por matriz, explicación en línea de celda errónea en badge inferior, relleno automático de vacíos con0, atajosCtrl+SupryCtrl+Mayús+Supr, pegado no modal con confirmación y restauración del fondo de celdas destacadas.feedback.py,scalar_field.py,size_control.py,responsive.py,export.py): Sistema de Toasts no modales con acción, estado «Calculando...», selector directoMatrixSizeControlm × n,ScalarFieldcon chips y pistas decimales,ResponsiveRowyCurrentPageStackque eliminan barras de scroll horizontales a 1366×768, y exportación a PDF, HTML, LaTeX y texto desde el carrusel (stepper_carousel.py).linear_systems_view.py,applied_models_panel.py,matrix_operations_view.py): Spinboxes directos, desactivación instructiva de Cramer con botón para igualar o resolver vía Gauss-Jordan, sumas en vivo en Leontief, botón único de cálculo conCtrl+Intro, inspector interactivo de entradasvectors_view.py,vector_set_editor.py,matrix_equations_view.py): Editor de conjuntos vectoriales enFlowLayout, botón deshacibleu ↔ v, advertencia previa sideterminants_view.py,sarrus_diagram.py,lu_factorization_view.py): Sarrus con botón deshacible «Ajustar a 3×3» y diagrama dinámico de diagonales; Laplace con sugerencia visual de ceros; pestañas para adjunta e inversa con opción «Enviar3. Pruebas Automatizadas (
tests/)tests/core/test_input_diagnostics.py: Pruebas unitarias de detección de coma decimal, 'O' por cero, divisiones entre cero y notación científica.tests/ui/test_cross_platform.py: Cobertura de glifos en fuentes empaquetadas, ausencia total de fuentes del SO y emojis, y paridad geométrica estricta de 113 widgets a 96 y 144 ppp.tests/ui/test_sprint10_ui.py: Pruebas de integración de componentes UI, atajos, desbordamiento, tokens de contraste WCAG AA, y flujos de Módulos 1 y 2.tests/ui/test_sprint10_vectors.py: Flujos del Módulo 3 (desglose de componentes, intercambio de vectores, advertenciatests/ui/test_sprint10_equations.py: Flujos del Módulo 4 (solución particular, reporte de fila en SI, propiedades de transformación lineal).tests/ui/test_sprint10_det_lu.py: Flujos de Módulos 5 y 6 (ajuste de orden en Sarrus, sugerencia en Laplace, filas permutadas por4. Documentación
Docs/Sprints/Sprint10/README.md: Memoria técnica completa del Sprint 10 con detalle de requerimientos, decisiones de arquitectura y registro de commits.Docs/design-rules.md: Actualización de tokens cromáticos, especificación de tipografías empaquetadas y reglas de interacción no modal.README.md: Inclusión de la tabla de atajos de teclado globales y soporte de visualización..github/workflows/tests.yml: Matriz de integración continua en Ubuntu y Windows con Python 3.10 y 3.13.Casos de Prueba Verificados
3,5,1O,5/0y aceptación de1e5Instrucciones de Ejecución
Ejecutar la aplicación gráfica
F1para abrir la hoja completa de atajos de teclado oCtrl+,para ajustar el tema y escala.Ctrl+Z/Ctrl+Ypara verificar deshacer/rehacer, oCtrl+Intropara calcular directamente.Ejecutar la suite de pruebas
En un entorno sin pantalla:
Checklist de Revisión
fractions.Fraction.StepTracercuando el sprint lo exige.pytestpasa, incluida la suite que ya existía antes del sprint.