tawasuyu/llimphi
Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.
chore: refresco desde el monorepo (pin tawasuyu.git v0.3.0)
1[package]
2name = "llimphi-test"
3version.workspace = true
4edition.workspace = true
5license.workspace = true
6authors.workspace = true
7publish.workspace = true
8description = "llimphi-test — arnés de golden-image headless y determinista para Llimphi. Renderiza un `View` a una textura por el adapter de SOFTWARE (llvmpipe/lavapipe, mismo píxel host-a-host y en CI) y lo diffea contra un golden con tolerancia perceptual. Convierte 'renderiza y mira' (caro en tokens, subjetivo) en `assert_golden!` (barato, objetivo). Certifica cambios visuales por texto (DiffStats) según CLAUDE.md §8."
9
10[dependencies]
11llimphi-hal = { path = "../llimphi-hal", version = "0.1.0" }
12llimphi-raster = { path = "../llimphi-raster", version = "0.1.0" }
13llimphi-compositor = { path = "../llimphi-compositor", version = "0.1.0" }
14llimphi-text = { path = "../llimphi-text", version = "0.1.0" }
15llimphi-layout = { path = "../llimphi-layout", version = "0.1.0" }
16pollster = { workspace = true }
17image = { workspace = true }
18
19[dev-dependencies]
20llimphi-theme = { path = "../llimphi-theme", version = "0.1.0" }
21# Widgets reales para el test de semántica accesible (`tests/semantica_widgets.rs`).
22# Ningún widget dev-depende de `llimphi-test`, así que no hay ciclo.
23llimphi-ui = { workspace = true }
24llimphi-widget-tabs = { path = "../widgets/tabs", version = "0.1.0" }
25llimphi-widget-tree = { path = "../widgets/tree", version = "0.1.0" }
26llimphi-widget-list = { path = "../widgets/list", version = "0.1.0" }
27llimphi-widget-progress = { path = "../widgets/progress", version = "0.1.0" }
28llimphi-widget-transport = { path = "../widgets/transport", version = "0.1.0" }
29llimphi-widget-calendar = { path = "../widgets/calendar", version = "0.1.0" }
30llimphi-widget-splitter = { path = "../widgets/splitter", version = "0.1.0" }
31llimphi-widget-toolbar = { path = "../widgets/toolbar", version = "0.1.0" }
32# El atlas de glifos: el otro camino a texto, el que se compara contra vello en
33# `tests/texto_gpu_directo.rs`.
34llimphi-glifos = { path = "../llimphi-glifos", version = "0.1.0" }
35# Sólo para armar una `peniko::ImageBrush` sintética en `boundary_gradiente_imagen`.
36llimphi-image = { path = "../llimphi-image", version = "0.1.0" }
37llimphi-widget-detail-table = { path = "../widgets/detail-table", version = "0.1.0" }
38llimphi-widget-scroll = { path = "../widgets/scroll", version = "0.1.0" }
39llimphi-widget-datetime-picker = { path = "../widgets/datetime-picker", version = "0.1.0" }
40llimphi-widget-form = { path = "../widgets/form", version = "0.1.0" }
41llimphi-widget-accordion = { path = "../widgets/accordion", version = "0.1.0" }
42llimphi-widget-stepper = { path = "../widgets/stepper", version = "0.1.0" }
43llimphi-widget-table = { path = "../widgets/table", version = "0.1.0" }
44llimphi-widget-field = { path = "../widgets/field", version = "0.1.0" }
45llimphi-widget-spinner = { path = "../widgets/spinner", version = "0.1.0" }
46# El botón Rive: el único widget cuyo dibujo lo produce un clip Lottie
47# (`foreign-lottie`) y no código de pintado propio. Ver `rive_button_pinta.rs`.
48llimphi-widget-rive-button = { path = "../widgets/rive-button", version = "0.1.0" }
49# El puente a Lottie, para preguntarle si lo que "degrada con gracia" además
50# se ve (`lottie_degrada_pero_pinta.rs`).
51llimphi-lottie = { path = "../llimphi-lottie", version = "0.1.0" }
52chrono = { workspace = true }