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-widget-terminal"
3version.workspace = true
4edition.workspace = true
5license.workspace = true
6authors.workspace = true
7publish.workspace = true
8description = "llimphi-widget-terminal — superficie de terminal infinita y virtualizada (ver 02_ruway/shuma/SDD-TERMINAL.md). Fase 0: store de scrollback append-only (acceso O(1), cap por memoria). Fase 1: virtualización modo línea (sólo se pinta la ventana visible, numeración global + color, scroll propio del widget — costo de render constante a scrollback ilimitado)."
9
10repository.workspace = true
11[dependencies]
12# El COMPOSITOR y no el shell: este widget compone `View`s, no abre ventanas.
13# Tomarlo del shell fijaba el backend, y con eso el terminal —y todo lo que lo
14# monte— quedaba imposible de correr en un proceso aparte.
15llimphi-compositor = { path = "../../llimphi-compositor", version = "0.1.0", default-features = false }
16llimphi-theme = { workspace = true }
17llimphi-widget-scroll = { path = "../scroll", version = "0.1.0", default-features = false }
18# Acceso a `wgpu` (re-exportado por `llimphi-hal`) para el pipeline GPU
19# del cell renderer (Fase 4 del SDD-TERMINAL).
20llimphi-hal = { path = "../../llimphi-hal", version = "0.1.0", optional = true }
21# Rasterizador de glifos para el atlas GPU del modo grilla (Fase 4 del
22# El rasterizador de glifos, compartido con el resto de llimphi. Antes acá había
23# un `fontdue` propio, y eso dejaba DOS rasterizadores en el árbol; ver el
24# encabezado de `src/glyph_atlas.rs`. Lo que sigue siendo de este widget es la
25# GRILLA de celdas: es la especialización correcta de un terminal.
26llimphi-glifos = { path = "../../llimphi-glifos", version = "0.1.0", optional = true }
27
28[dev-dependencies]
29# El shell, SÓLO para los demos, los pantallazos y los tests: abren ventana o
30# rasterizan de verdad. La lib no lo toma —es lo que deja correr esto en un
31# proceso aparte—, pero un example que no puede abrir ventana no es un example.
32llimphi-ui = { workspace = true }
33# `fontdue` sobrevive como ORÁCULO, no como implementación: `tests/metricas_fontdue.rs`
34# compara la celda que sale del rasterizador nuevo contra la que salía del viejo.
35# Sale del binario, no del repo.
36fontdue = "0.9"
37png = { workspace = true }
38pollster = { workspace = true }
39tempfile = { workspace = true }
40
41[[example]]
42name = "dump_terminal"
43path = "examples/dump_terminal.rs"
44
45[[example]]
46name = "dump_blocks"
47path = "examples/dump_blocks.rs"
48
49[features]
50# El backend lo elige quien ensambla. Excluyentes entre sí.
51default = ["vello", "std", "gpu"]
52vello = ["llimphi-compositor/vello", "llimphi-widget-scroll/vello"]
53cpu = ["llimphi-compositor/cpu", "llimphi-widget-scroll/cpu"]
54wire = ["llimphi-compositor/wire", "llimphi-widget-scroll/wire"]
55std = ["llimphi-compositor/std", "llimphi-widget-scroll/std"]
56libm = ["llimphi-compositor/libm", "llimphi-widget-scroll/libm"]
57
58# **El camino GPU-directo del modo grilla** (`cell_pipeline` + `glyph_atlas`):
59# atlas de cobertura y quads instanciados, en vez de mandarle cada glifo al
60# rasterizador. Trae `llimphi-hal`, o sea wgpu.
61#
62# Va detrás de una perilla y no adentro porque **ya estaba apagado**: quien lo
63# enciende es `SHUMA_GPU_GRID=1`, y sin esa variable el modo grilla pinta por el
64# camino de siempre. O sea que arrastrar wgpu era el precio de una función que
65# por defecto no corre — y ese precio lo pagaba también cualquiera que quisiera
66# sacar el terminal del proceso, porque wgpu FIJA el backend.
67#
68# Encendida (el default) no cambia absolutamente nada. Apagada, el modo grilla
69# sigue andando por vello y `SHUMA_GPU_GRID` no tiene efecto.
70gpu = ["dep:llimphi-hal", "dep:llimphi-glifos"]