tawasuyu

tawasuyu/llimphi

Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.

Rust 660Markdown 302TOML 157RON 312382 Sutichaykuna

LEEME.md

llimphi

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

una UI densa compuesta sólo con primitivas del compositor: tema oscuro, top bar con tabs, sidebar, editor de código con resaltado sintáctico, texto rico, tarjetas de métricas con gradientes y sombras, un gráfico de barras de puros rects y un toast flotante

llimphi es el motor gráfico que comparten todas las apps del monorepo. Pipeline retained-mode declarativa sobre vello 0.9 + wgpu 29 + taffy 0.12, con shaping parley 0.6 (DejaVu Sans embebida como fallback de símbolos), theme Dark/Light/Aurora/Sunset, accesibilidad AccessKit, HAL multiplataforma (Wayland · X11 · Win32 · Android · Wawa).

Manual de uso: MANUAL.md — referencia completa (bucle Elm, DSL View<Msg>, los 79 widgets y 11 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

Crates: framework

CrateRol
llimphi-halAbstracción de superficie (winit / framebuffer / android).
llimphi-rasterRasterizer vello + cache de scenes (feature opt-in hybrid: renderer CPU+GPU sin compute shaders).
llimphi-layoutLayout taffy + extensiones.
llimphi-textShaping + fonts (parley; DejaVu Sans embebida como fallback).
llimphi-themeThemes Dark/Light/Aurora/Sunset + paleta + tokens de motion/elevation.
llimphi-uiView<Msg> retained-mode + Elm-arch + puente AccessKit.
llimphi-compositorNúcleo declarativo sin winit: árbol View<Msg>, mount taffy, paint a scene, hit-test.
llimphi-imageDecode PNG/JPEG → peniko::Image.
llimphi-svgPuente vello_svg → Llimphi (SVG real, íconos .desktop).
llimphi-iconsÍconos vectoriales propios (grid 24×24).
llimphi-motionTweens e interpolación (incl. transform afín).
llimphi-surfaceTexturas externas.
llimphi-workspaceChasis tipo tmux: splits resizables sobre widget-panes.
llimphi-galleryDemo único del kit de elegancia (todos los widgets juntos).
llimphi-gpu-benchBench standalone del path GPU directo.
llimphi-layerCorre un App como superficie wlr-layer-shell (barra anclada a un borde) en vez de ventana: así se pintan pata y el daemon de notificaciones.
llimphi-testArnés golden-image headless y determinista — la razón por la que un cambio de UI se puede certificar como texto en vez de mirando una captura.
llimphi-3d · llimphi-voxel · llimphi-voxel-app · llimphi-voxel-studioEl motor 3D (ray-march de voxels + mallas en una pasada de profundidad), la capa de contenido (worldgen procedural, personajes articulados, director de escenas) y el creador de mundos.
llimphi-animMáquina de estados de animación estilo Rive, clip-agnóstica.
llimphi-anim-studioLos documentos serializables que autora el editor de animación (el grafo de estados).
llimphi-lottiePuente fino a velato (reproductor Lottie de Linebender).
llimphi-meshRender de mallas deformables (huesos y skinning) a una vello::Scene.
llimphi-video-planePlano de video.
llimphi-term-graphicsDecodificador agnóstico de protocolos de gráficos de terminal.
llimphi-wire-viewIR serializable de un subset de View<Msg> — el cable entre guest y host.
llimphi-wasm-app-sdkLado guest de las apps WASM Tier 3: una app implementa WasmApp con su propio modelo y pinta un View<Msg> normal.
llimphi-wasm-runnerLado host sobre wasmi: carga un .wasm que sigue ese ABI.
llimphi-wasm-core · -dist · -net · -registry · -openDistribución por hash de apps WASM: el núcleo puro, la cara con baterías, el transporte P2P sobre Brahman, el puente data-driven a registros públicos y la apertura.
llimphi-wasm-wasiCorre apps WASI de consola sobre wasmi — el catálogo no es trampa.
llimphi-wasm-demo-{counter,form}Las apps guest de ejemplo.

Crates: widgets (visuales reactivos)

WidgetFunción
buttonBotón con variantes.
text-inputInput single-line.
text-areaTextarea multi-line.
text-editorEditor (rope · cursor · undo · highlight · clipboard · find).
text-editor-lspEditor + LSP.
treeÁrbol jerárquico.
listLista virtualizada.
tabsTabs con cierre.
splitterSplitter horizontal/vertical.
tiledTiled window manager dentro de la app.
sliderSlider con tick marks.
galleryGrid de cards.
cardCard base.
stat-cardCard para métricas.
bannerBanner / alerts.
app-headerHeader común de app.
context-menuMenú contextual (look distintivo).
theme-switcherSelector de tema.
nodegraphLienzo de nodos + cables Bezier.

Y además (catálogo completo con firmas en MANUAL.md §13): avatar · badge · breadcrumb · calendar · carousel · chip · clipboard · color-picker · dock-rail · edit-menu · empty · fab · field · fitted-box · gauge · grid · hero · menubar · modal · navigator · panel · panes · progress · range-slider · rating · scaffold · scroll · segmented · select · shortcuts-help · skeleton · spinner · splash · status-bar · switch · table · terminal · text-editor-core · timeline · toast · tooltip · transport · waveform · wawa-mark · wrap.

Crates: modules (feature funcional con estado)

ModuleFunción
command-palettePaleta de comandos.
diff-viewerDiff side-by-side.
fifFind-in-files.
file-pickerPicker de archivos.
mini-mapMini-mapa del editor.
bookmarksBookmarks por archivo.
symbol-outlineOutline de símbolos LSP.
plugin-hostHost para plugins WASM.
shuma-termTerminal embebida (shell shuma).
allichayRenderizador único de configuración declarativa (allichay::Schema → rail + controles).
selectorAbstracción portátil abrir/guardar (trait Selector: host con PathBuf, Wawa content-addressed).

Crates: android

CrateRol
clear-screen-androidSmoke test HAL Android.
vello-hello-androidVello hello-world Android.
vello-text-androidText shaping Android.

Demo

En vivo: https://tawasuyu.net/02_ruway/llimphi/demo/ — tour autocontenido tipo prezi: arquitectura, bucle Elm, kit de widgets y pantallazos headless de ~10 apps reales corriendo sobre llimphi (cosmos · pluma · nada · takiy · tullpu · supay · dominium · nahual · shuma…). Espacio / flechas / click para navegar; auto-advance cada 6 s — listo para grabar como video.

Fuente en demo/ (HTML+CSS+JS plano, sin build). Local: python3 -m http.server -d demo.

Consideraciones

Para leer más

Licencia

Doble licencia, a elección: MIT o Apache-2.0.