tawasuyu

tawasuyu/llimphi

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

Rust 660Markdown 302TOML 157RON 312382 Definiciones

⎇ main modules/selector/LEEME.md Markdown · 41 líneas · 1.5 KB Historia crudo

chore: refresco desde el monorepo — 27 crates nuevos (anim, lottie, svg, mesh, image, layer, test, wire-view, widgets rag-sidebar/router/lazy-list/rive-button) y sync de los 95 existentes 93253cc22 · Sergio ·

1# llimphi-module-selector
2
3*Read this in English: [README.md](README.md).*
4
5Abstracción de "abrir/guardar" portable entre host (paths del FS) y wawa (khipus por hash).
6
7## Por qué
8
9Una app tawasuyu que sólo conoce paths (`PathBuf`) se rompe en wawa,
10donde el almacenamiento es direccionado por contenido (BLAKE3 + DAG)
11y no existe el concepto de "carpeta /home/usuario". Pero la mayoría
12de las apps no necesitan saber la diferencia: sólo quieren preguntar
13"qué item quiere abrir el usuario" o "dónde guardo este blob".
14
15Este crate expone:
16- El trait `Selector` con dos métodos: `list_candidates()` (para
17  armar la UI del picker) y `realize(handle)` (para resolver el
18  item elegido a bytes).
19- Un `ItemHandle` opaco — la app no debe inspeccionarlo, sólo
20  pasarlo de vuelta al selector.
21- `HostSelector` con root path + extension filter (impl real).
22- `WawaSelector` como **placeholder** con la API definida — la
23  integración real con `akasha` / `wawa-kernel` ocurre cuando la
24  suite empiece a correr in-cage. Por ahora exporta tipos y panica
25  si se invoca, lo cual está bien: el código que lo construye
26  queda compilable y las apps pueden tipar contra el trait.
27
28## API mínima
29```ignore
30use llimphi_module_selector::{HostSelector, Selector};
31
32let sel = HostSelector::new("/home/usr/docs", &[".pluma", ".khipu"]);
33let items = sel.list_candidates()?;
34// (la app muestra `items.iter().map(|i| &i.display_name)` en su picker)
35// user elige el index N:
36let bytes = sel.realize(&items[N].handle)?;
37```
38
39---
40
41Parte de **llimphi** — ver [llimphi](../../LEEME.md).

LEEME.md

llimphi-module-selector

Read this in English: README.md.

Abstracción de "abrir/guardar" portable entre host (paths del FS) y wawa (khipus por hash).

Por qué

Una app tawasuyu que sólo conoce paths (PathBuf) se rompe en wawa, donde el almacenamiento es direccionado por contenido (BLAKE3 + DAG) y no existe el concepto de "carpeta /home/usuario". Pero la mayoría de las apps no necesitan saber la diferencia: sólo quieren preguntar "qué item quiere abrir el usuario" o "dónde guardo este blob".

Este crate expone:

API mínima

use llimphi_module_selector::{HostSelector, Selector};

let sel = HostSelector::new("/home/usr/docs", &[".pluma", ".khipu"]);
let items = sel.list_candidates()?;
// (la app muestra `items.iter().map(|i| &i.display_name)` en su picker)
// user elige el index N:
let bytes = sel.realize(&items[N].handle)?;

Parte de llimphi — ver llimphi.