Files
sergio e65e9cc623 feat: llimphi standalone — framework UI soberano extraído del monorepo
Motor gráfico Llimphi como workspace independiente: bucle Elm
(input→update→view→layout→raster→present) sobre wgpu+vello+taffy+parley.
Núcleo (hal/raster/layout/text/ui/theme/surface/motion/icons) + ~40 widgets
+ módulos, sin dependencias al resto del monorepo. cargo check --workspace
pasa (64 crates). Puerta de entrada: cargo run -p llimphi-ui --example counter.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 04:23:42 +00:00

4.5 KiB

llimphi

Framework de UI nativa: HAL · raster · layout · text · theme · ui — más widgets y módulos.

llimphi es el motor gráfico que comparten todas las apps del monorepo. Pipeline retained-mode declarativa sobre vello + wgpu + taffy, con shaping fontdue/harfbuzz, theme Dark/Light/Aurora/Sunset, HAL multiplataforma (Wayland · X11 · Win32 · Android · Wawa).

Manual de uso: MANUAL.md — referencia completa (bucle Elm, DSL View<Msg>, los ~44 widgets y 10 módulos, GPU directo, gotchas) para humanos e IA. Diseño y roadmap: SDD.md.

Filosofía: un widget no se diseña pensando en mockups; se diseña con lo que vello y taffy pueden hacer.

Instalación

# usar como dep en otro crate:
[dependencies]
llimphi-ui = { workspace = true }
llimphi-theme = { workspace = true }
llimphi-widget-... = { workspace = true }

Compatibilidad

  • Linux/Wayland — backend principal.
  • Linux/X11 — via XWayland (mediante winit).
  • macOS / Windowswinit + wgpu.
  • Androidclear-screen-android, vello-hello-android, vello-text-android para validar el HAL móvil.
  • Wawa bare-metal — HAL alterno sobre framebuffer.

Crates: framework

Crate Rol
llimphi-hal Abstracción de superficie (winit / framebuffer / android).
llimphi-raster Rasterizer vello + cache de scenes.
llimphi-layout Layout taffy + extensiones.
llimphi-text Shaping + fonts (Fontdue/HarfBuzz).
llimphi-theme Themes Dark/Light/Aurora/Sunset + paleta.
llimphi-ui View<Msg> retained-mode + Elm-arch.

Crates: widgets (visuales reactivos)

Widget Función
button Botón con variantes.
text-input Input single-line.
text-area Textarea multi-line.
text-editor Editor (rope · cursor · undo · highlight · clipboard · find).
text-editor-lsp Editor + LSP.
tree Árbol jerárquico.
list Lista virtualizada.
tabs Tabs con cierre.
splitter Splitter horizontal/vertical.
tiled Tiled window manager dentro de la app.
slider Slider con tick marks.
gallery Grid de cards.
card Card base.
stat-card Card para métricas.
banner Banner / alerts.
app-header Header común de app.
context-menu Menú contextual (look distintivo).
theme-switcher Selector de tema.
nodegraph Lienzo de nodos + cables Bezier.

Crates: modules (feature funcional con estado)

Module Función
command-palette Paleta de comandos.
diff-viewer Diff side-by-side.
fif Find-in-files.
file-picker Picker de archivos.
mini-map Mini-mapa del editor.
bookmarks Bookmarks por archivo.
symbol-outline Outline de símbolos LSP.
plugin-host Host para plugins WASM.
shuma-term Terminal embebida (shell shuma).

Crates: android

Crate Rol
clear-screen-android Smoke test HAL Android.
vello-hello-android Vello hello-world Android.
vello-text-android Text shaping Android.

Consideraciones

  • Una sola API: View<Msg> declarativa. Sin imperativo, sin DOM virtual ajeno.
  • El mismo árbol corre en Wayland y Wawa: HAL abstrae la superficie, el resto es idéntico.
  • Los widgets son puramente visuales; los módulos encapsulan estado + comportamiento.