Roadmap¶
Plan orientativo hacia la 1.0. Las versiones se ordenan por valor para quien construye apps, no por facilidad de implementación. Cada hito termina con algo que se puede usar.
Leyenda: ✅ hecho · 🚧 en curso · ⏳ planificado
v0.1 — Fundamentos ✅¶
La tesis funciona: Python describe, Rust pinta, y el resultado se ve profesional.
- ✅ Puente PyO3 + maturin, wheel abi3 (Python ≥ 3.11), integración con uv
- ✅ Layout flexbox con Taffy:
gap,padding, alineación,grow/shrink,wrap,%, posicionamiento absoluto - ✅ Render con Skia: esquinas redondeadas, bordes, sombras con blur, gradientes lineales, opacidad
- ✅ Texto con shaping real, herencia de estilos, alineación por baseline,
max_linescon elipsis - ✅ Ventana nativa (winit) con el bucle de eventos fuera del GIL
- ✅ Hover y pressed animados en Rust,
press_scale - ✅ Clics con burbujeo hasta el ancestro interactivo y barreras de eventos (
capture) para modales - ✅
Signal, temas con tokens (MIDNIGHT,DAYLIGHT) y tema reactivo - ✅ Componentes base:
button(3 variantes),card,badge,stat - ✅ Render headless a PNG, tests y workflows de CI (lint, tests en 3 SO, release a PyPI)
v0.2 — Apps de verdad ✅¶
Lo mínimo para construir herramientas que se usen a diario.
- ✅ Scroll: contenedor
scrollcon clipping, rueda suave, trackpad, encadenado y barra arrastrable - ✅ Input de texto: cursor, selección, copiar/pegar, IME, deshacer;
text_inputytextarea - ✅ Teclado y foco: navegación con Tab, atajos (
on_key), anillo de foco visible - ✅ Imágenes: PNG/JPEG/WebP/SVG con
fit(cover, contain, fill, none) y caché - ✅ Más componentes:
checkbox,switch,select,tabs,tooltip,divider,avatar - ✅ Despertar el bucle cuando un
Signalcambia desde otro hilo o una corrutinaasyncio(app.spawn) - ✅ Piloto headless (
app.pilot()) para tests de interacción y capas (layer="overlay")
v0.3 — Rendimiento ✅¶
Escalar a miles de elementos manteniendo 60 fps.
- ✅ Reactividad de grano fino:
@componentregistra losSignalque lee y solo se reconstruye si cambian ellos o sus argumentos - ✅ Caché de layout y de párrafos entre frames (con mediciones de texto memorizadas)
- ✅ Diff del árbol por
key: el layout de las ramas que no cambian se reutiliza al reconstruir - ✅ Invalidación por fases (estilo → layout → pintura → composición): solo se repinta la zona que cambió
- ✅ Backend GPU de Skia (Vulkan en Windows y Linux, Metal en macOS) detrás de un trait
Surface, con la CPU de respaldo - ✅ Listas virtualizadas (
virtual_list, filas de alto fijo) y eventoon_scroll - ✅ Suite de benchmarks reproducible en CI (lista de 10k ítems, dashboard de 50 paneles, escritura)
v0.4 — Datos y gráficos ✅¶
Dashboards de nivel profesional sin librerías externas.
- ✅
canvas: API de dibujo inmediato desde Python, enviada en lote a Rust - ✅ Charts nativos (líneas, barras, áreas, dispersión) alimentados con numpy/polars sin copias
- ✅ Downsampling (LTTB) en Rust para millones de puntos, zoom y pan
- ✅
tablecon ordenación, columnas redimensionables y virtualización
v0.5 — Experiencia de desarrollo ✅¶
- ✅ Hot reload que conserva el estado de los
Signal(aurora dev app.py) - ✅ Inspector visual del árbol y profiler de frames
- ✅ Animaciones declarativas (
animate.spring(), transiciones de entrada/salida y de layout) - ✅
aurora build: empaquetado a ejecutable con un comando - ✅ Documentación publicada con ejemplos vivos
Hacia la 1.0 🚧¶
- ✅ Accesibilidad completa con AccessKit (lectores de pantalla, navegación por teclado)
- ✅ Integración con el escritorio:
- ✅ Multi-ventana (
app.window(...), ciclo de vida y cierre por ventana) - ✅ Diálogos nativos (abrir/guardar archivo)
- ✅ Bandeja del sistema
- ✅ Menús nativos (barra de la app y contextuales)
- ✅ Notificaciones del sistema (
app.notify, con callback de clic) - ✅ Política de estabilidad de la API: qué es público, plazos de obsolescencia y avisos (AuroraDeprecationWarning)
- ✅ Wheels precompiladas en PyPI para Windows, macOS (x86_64/arm64) y Linux
¿Quieres impulsar algún punto? Abre un issue con la etiqueta roadmap explicando tu caso de uso:
los casos reales son lo que más pesa al priorizar.