# Cargo.toml raíz STANDALONE de mirada — front-door público. # GENERADO por scripts/actualizar-standalone.py desde el monorepo tawasuyu.git # (v0.3.0). No editar a mano: se regenera. Lo fundacional se consume por # git-dep al tag; sólo el código del dominio vive en este repo. [workspace] resolver = "2" # ============================================================ # Cuadrantes — agregar a medida que se migran # ============================================================ members = [ "02_ruway/mirada/asistente-puente", "02_ruway/mirada/mirada-acceso", "02_ruway/mirada/mirada-app-llimphi", "02_ruway/mirada/mirada-asistente-llimphi", "02_ruway/mirada/mirada-aware", "02_ruway/mirada/mirada-bar-core", "02_ruway/mirada/mirada-body", "02_ruway/mirada/mirada-boot-core", "02_ruway/mirada/mirada-bootmenu-llimphi", "02_ruway/mirada/mirada-brain", "02_ruway/mirada/mirada-cad", "02_ruway/mirada/mirada-compositor", "02_ruway/mirada/mirada-ctl", "02_ruway/mirada/mirada-entrada", "02_ruway/mirada/mirada-filechooser", "02_ruway/mirada/mirada-fondo", "02_ruway/mirada/mirada-greeter", "02_ruway/mirada/mirada-launcher", "02_ruway/mirada/mirada-layout", "02_ruway/mirada/mirada-link", "02_ruway/mirada/mirada-overlap-notify-proto", "02_ruway/mirada/mirada-plugin-host", "02_ruway/mirada/mirada-plugin-sdk", "02_ruway/mirada/mirada-portal", "02_ruway/mirada/mirada-procedural", "02_ruway/mirada/mirada-progman", "02_ruway/mirada/mirada-protocol", "02_ruway/mirada/mirada-screencast", "02_ruway/mirada/mirada-teclado/mirada-teclado-core", "02_ruway/mirada/mirada-teclado/mirada-teclado-llimphi", "02_ruway/mirada/mirada-teclado/mirada-teclado-widget", "02_ruway/mirada/mirada-toplevel-icon-proto", "02_ruway/mirada/mirada-wallpaper", ] # `wawa/` se excluye del workspace global porque corre en target # `x86_64-unknown-none` y `panic = "abort"`, incompatibles con los # perfiles globales. Los crates compartidos se referencian por `path` # cruzando la frontera. # `llimphi-wawa` está EXCLUIDA, no ausente por olvido. Enciende # `llimphi-text/cpu`, que es el backend EXCLUYENTE del `vello` que todo el resto # del workspace usa por default — y la unificación de features de cargo los # junta, disparando el `compile_error!` que llimphi-text tiene justo para # delatarlo. Vive en el mismo mundo que el kernel: se compila aparte, con su # propio lock. Sus tests se corren así: # cargo test --manifest-path 02_ruway/llimphi/llimphi-wawa/Cargo.toml \ # --no-default-features --features std # # `llimphi-jaula` está excluida por lo MISMO, del otro lado: enciende # `llimphi-text/wire`, el tercer backend excluyente (W4). Es la cáscara de una # app dentro de la jaula WASM — el gemelo de `llimphi-wawa`—, y que las dos estén # afuera del workspace no es una molestia sino el diseño: son dos procesos en dos # lados de una frontera, y forzarlos a compartir un lock sería fingir lo # contrario. Sus tests: # cargo test --manifest-path 02_ruway/llimphi/llimphi-jaula/Cargo.toml \ # --no-default-features --features std # # `llimphi-hybrid-android` está excluida **por contagio**: consume `llimphi-wawa` # y por lo tanto arrastra el mismo `llimphi-text/cpu`. Es la tercera cáscara de # la familia —kernel, jaula, teléfono— y cae del mismo lado de la frontera por # el mismo motivo. Se compila así: # cargo check --manifest-path \ # 02_ruway/llimphi/android/llimphi-hybrid-android/Cargo.toml # y se empaca con `02_ruway/llimphi/android/scripts/build-android.sh`. exclude = [ "02_ruway/mirada/mirada-bar-web", "vendor/smithay", ] [workspace.package] version = "0.1.0" edition = "2021" rust-version = "1.80" license = "MIT" authors = ["Sergio "] publish = false repository = "https://git.tawasuyu.net/tawasuyu/mirada" [workspace.dependencies] # === Configuración declarativa (vocabulario de esquemas) === allichay = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } allichay-plano = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } marca = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Escala única de `nice` de la sesión (compositor · marco · app · segundo plano # · lote) + las tres formas de aplicarla (propia / pid vivo / pre_exec). prioridad = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } ron-ralo = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Telemetría local de desarrollo (stderr+panics+tracing → $XDG_STATE_HOME/tawasuyu//.log) bitacora = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # default = [] (núcleo liviano sin vello); `bake` es opt-in. Declaramos # default-features = false aquí para que el `default-features = false` de los # consumidores (splash/greeter/compositor) se honre y no quede el warning. mirada-fondo = { path = "02_ruway/mirada/mirada-fondo", default-features = false } mirada-teclado-core = { path = "02_ruway/mirada/mirada-teclado/mirada-teclado-core" } mirada-teclado-widget = { path = "02_ruway/mirada/mirada-teclado/mirada-teclado-widget" } # === Registro de apps / menú global === app-bus = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } app-iconset = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # === Centro de eventos (notificaciones + capturas + clipboard + …) === willay-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } willay-checkpoint = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } willay-hilo = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } willay-store = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } socket-local = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } willay-emit = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } sandokan-seguridad-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } sandokan-salud-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } sandokan-monitor-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # El censo de red de la máquina (netstat completo: socket → proceso → unidad) + # huella de red + drift de puertos + contabilidad por unidad. Ver `shared/PLAN-RED.md`. sandokan-red-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # La baliza de LAN: el descubridor por multicast, con el payload opaco. Promovido # de `uya-app::lan`, que es el de los tres del arbol que resuelve los tres modos # de fallo reales. Ver `shared/PLAN-RED.md` §F1. baliza = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } matilda-apply = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } matilda-plan = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } matilda-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } matilda-discover = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } rag-motor = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } churay-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } churay-welcome = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } churay-welcome-runner = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # === Puente de drag-and-drop compositor → app (suple winit en Wayland) === drop-bridge = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # === Serialización === serde = { version = "1", features = ["derive"] } serde_json = "1" lsp-types = "0.97" serde-big-array = "0.5" postcard = { version = "1", features = ["use-std"] } toml = "0.8" ron = "0.8" bincode = "1" base64 = "0.22" # === Errores === thiserror = "2" # bump uniforme; arje (era 1) puede requerir ajustes menores anyhow = "1" # === Async === tokio = { version = "1", features = ["full"] } tokio-util = { version = "0.7", features = ["compat"] } async-trait = "0.1" futures = "0.3" # === Observabilidad === tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] } # Sonda de librerías del sistema en build.rs. La usa `auth-huellita` para # detectar `libfprint` sin volverla una dependencia dura del workspace. pkg-config = "0.3" # === Linux primitives (arje) === nix = { version = "0.29", features = ["signal", "process", "sched", "mount", "fs", "socket", "net", "user", "reboot"] } libc = "0.2" # DRM/KMS legacy (dumb buffer) para el splash nativo del arranque sin parpadeo. # Misma versión que reexporta smithay (mirada-compositor) — el lock ya la fija. drm = "0.14" font8x8 = { version = "0.3", default-features = false } # === IDs / Hash / Crypto === ulid = { version = "1", features = ["serde"] } uuid = { version = "1", features = ["v4", "rng-getrandom"] } sha2 = "0.10" blake3 = "1.5" ed25519-dalek = "2" aes-gcm = "0.10" chacha20 = "0.9" chacha20poly1305 = "0.10" argon2 = "0.5" rand = "0.8" # TOTP (RFC 6238) del segundo factor de nakui: HMAC-SHA1 es lo que hablan # Google Authenticator, Aegis y los tokens de hardware — no es elección # nuestra, es el formato del ecosistema. base32 para el secreto del QR. hmac = "0.12" sha1 = "0.10" data-encoding = "2" # === WASM (arje) === # wasmi 1.0: unifica la versión con wawa (su kernel ya corre 1.0), para # que el ABI WASM del host sea idéntico en Linux y en bare-metal. wasmi = "1.0" wat = "1" # wasmtime 46 (Fase 1 del pipeline JS): tier 0 de puriy-js pasa de wasmi # (intérprete) a Wasmtime AOT (Cranelift → nativo) en Linux — quita la doble # interpretación de QuickJS.wasm. En wawa bare-metal el runtime es Pulley (spike # Q1 cerrado); mismo crate, distinto backend. wasmtime = "46" # === Storage / DB === sled = "0.34" rusqlite = { version = "0.31", features = ["bundled", "blob"] } # === Ingesta de documentos (iniy-ingest: PDF / EPUB) === pdf-extract = "0.7" epub = "2.1" # === Bulk import Wikipedia (iniy-wiki dump) === bzip2 = "0.4" # === Compresión (minga multi-bundle) === zstd = "0.13" xz2 = "0.1" # Contenedores adicionales del visor Archive de nahual (sólo listado). sevenz-rust = "0.6" unrar = "0.5" # === HTTP server (iniy-server) === axum = "0.7" # WebSocket pelado (sin framework HTTP): lo usa `shuma-ide-host`, que sirve el # protocolo de integración de IDE de Claude Code en loopback. Ya estaba en el # lock por transitividad; acá se declara para poder usarlo directo. tokio-tungstenite = "0.24" tower = "0.5" # === ANN sobre embeddings (iniy nli --ann) === instant-distance = "0.6" # === P2P (minga) === libp2p = { version = "0.56", features = ["tokio", "tcp", "dns", "noise", "yamux", "macros", "kad", "identify", "relay", "dcutr", "autonat", "mdns"] } libp2p-stream = "=0.4.0-alpha" libp2p-allow-block-list = "0.6" # === SSH (ssh, sandokan RemoteEngine, matilda) === russh = "0.54" # === Math determinista cross-platform (dominium) === libm = "0.2" # === SMF (takiy-midi) === # midly: parser/emitter SMF tipo 0/1, no_std-friendly, sin allocs en hot path. midly = "0.5" # === Code parsing (minga) === # `wayland-data-control` trae el backend wl-clipboard-rs: bajo mirada (Wayland # propio, sin Xwayland para apps nativas) arboard-x11 fallaba a no-op silencioso # y el clipboard de los text-editor quedaba muerto. Con la feature habla # zwlr_data_control_manager_v1 (que mirada expone) y cae a X11 si no hay Wayland. arboard = { version = "3", features = ["wayland-data-control"] } ropey = "1.6" # El runtime lee gramáticas por ABI, y ahí está el acople: 0.24 lee hasta la 14, # 0.25 lee 13–15. Se subió el 2026-09-06 porque `tree-sitter-rust` 0.23.3 (ABI 14) # lee `&raw` como el arranque de una referencia cruda, así que **una variable # llamada `raw` prestada con `&`** rompe el archivo entero para la gramática: # 69 de 6.428 archivos de este repo (1,1 %). La 0.24.2 lo arregla, pero es ABI 15 # y por eso arrastra al runtime. Las otras gramáticas siguen en ABI 14 y cargan # igual — 0.25 es compatible hacia atrás. tree-sitter = "0.25" tree-sitter-rust = "0.24" tree-sitter-python = "0.23" tree-sitter-typescript = "0.23" tree-sitter-javascript = "0.23" tree-sitter-go = "0.23" # C: el quinto dialecto que minga versiona por AST (el kernel y todo lo ajeno # que la suite absorbe está en C). tree-sitter-c = "0.23" # Dart entra por zorge (SDD-SERVIDOR-AJENO §A.1, RA-2): el otro proyecto es # Flutter, y Dart 3 es lo más parecido a Rust que hay del otro lado —tipado # estático, `sealed` con `switch` exhaustivo, y `_nombre` privado de verdad—. # El fork `orchard` y no `tree-sitter-dart` a secas. El motivo original era el # ABI: `tree-sitter-dart` se generó con la 15 y el runtime del workspace leía # hasta la 14. Con el runtime en 0.25 ese motivo **ya no aplica**; el fork se # conserva porque es lo que está probado, no porque haga falta. tree-sitter-dart-orchard = "0.3" # === FS notify === notify = "6.1" # === Grafos (iniy, nakui-core ya lo usa directo en 0.6) === petgraph = "0.6" # === Image decoding (nahual-image-viewer-llimphi) === # default-features = false: nos quedamos con PNG + JPEG + WebP (lossless). # tullpu-render exporta a las tres; AVIF/TIFF/… los habilitamos si una app # los pide específicamente. # Decoders puro-Rust baratos; avif queda fuera (arrastra dav1d/rav1e). image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp", "gif", "bmp", "ico", "tiff", "tga", "qoi"] } # ONNX Runtime para los proveedores de píxel reales (pixel-verbo-onnx: segmentación # u2net/isnet, inpaint, restyle…). `download-binaries` (default) baja el runtime nativo # solo; ya lo arrastraba fastembed (rimay-verbo) transitivo — aquí lo declaramos directo. ort = "2.0.0-rc.9" # Rasterizador vectorial CPU (relleno/trazo anti-aliased) para capas vectoriales de tullpu. tiny-skia = "0.11" # Booleanos de polígonos robustos (union/intersection/difference/xor) para el # clipper vectorial de tullpu — restar/intersecar paths que se solapan # parcialmente, que la regla de relleno no expresa. Ya estaba en el lock. geo = "0.28" # === FUSE (minga-vfs) === # default-features = false: prescinde de pkg-config/libfuse-dev en build. # El montaje pasa a ser Rust puro (vía el helper `fusermount3` en runtime). fuser = { version = "0.15", default-features = false } # === CLI / auth (minga) === clap = { version = "4", features = ["derive"] } rpassword = "7" # === PAM (auth-core) === pam = "0.8" # === D-Bus (arje compat) === zbus = { version = "4", default-features = false, features = ["tokio"] } # === Tests === tempfile = "3" # === Llimphi (motor gráfico soberano) === # wgpu sobre Vulkan/Metal/DX12, winit para ventana en dev Linux. # raw-window-handle 0.6 alinea winit 0.30 con wgpu 29. # vello 0.9 = rasterizador vectorial sobre wgpu 29 (renderer GPU "wgpu" + opt-in "hybrid" CPU+GPU). # # **El 27→29 no fue por gusto** (2026-07-28): `vello_hybrid 0.0.9` —el ÚNICO # rasterizador que el driver Mali del teléfono digiere, ver # `02_ruway/llimphi/android/DIAGNOSTICO.md`— vive en wgpu 29, y dos versiones de # wgpu no comparten un `Device`. La migración salió barata porque `vello 0.9` # usa el mismo peniko 0.6.1 y no movió su API de `Scene`: el bump de vello dio # CERO errores; todos los que hubo fueron deriva de wgpu, y concentrada en los # cuatro crates que tienen código wgpu propio. # taffy 0.12 = motor Flexbox/Grid puro Rust (0.9→0.12 en 2026-07-27: arregla el percent de ítem de grid en track sizing). # parley 0.6 = shaping/layout de texto compatible con peniko 0.6 (que vello 0.7 expone). wgpu = "29" # El compilador de shaders que wgpu lleva adentro. Se declara acá para que los # tests que validan WGSL headless (llimphi-3d, supay-render-llimphi) usen la # MISMA versión que después compila esos shaders en la GPU. Con dos versiones, # un test puede dar verde sobre un shader que el runtime rechaza — o al revés. naga = "29" winit = "0.30" raw-window-handle = "0.6" pollster = "0.4" # `default-features = false` acá arriba y no en cada consumidor: el default de # vello es ["wgpu","wgpu_default"], y `llimphi-text`/`llimphi-compositor` sólo # quieren sus TIPOS (Scene, peniko), no el motor de GPU. Declararlo abajo no # alcanza — cargo IGNORA `default-features` en un dep heredado si la raíz no lo # fijó, y lo avisa con un warning fácil de pasar por alto. Quien necesita el # motor lo pide por feature (ver llimphi-raster). vello = { version = "0.9", default-features = false } # Renderer hybrid CPU+GPU sin compute shaders (mejor compat WebGL2/Adreno viejas). # Opt-in; el renderer "wgpu" sigue siendo el default. vello_hybrid = "0.0.9" # foreign-lottie = fork vendorizado de velato 0.9 (Lottie → vello::Scene), # completado para no paniquear ante features no soportadas. Lo consume # llimphi-lottie. Ver shared/foreign-lottie. foreign-lottie = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Árbol de accesibilidad para lectores de pantalla (NVDA/VoiceOver/Orca/TalkBack). # Lo consume el runtime de Llimphi (iter 2/3 del plan AccessKit); el modelo # `SemanticsSpec` del compositor es independiente de estas crates. accesskit = "0.24" accesskit_winit = "0.33" taffy = "0.12" # parley = shaping completo (bidi, ligatures, fallback CJK/emoji vía fontique, line break). parley = "0.6" # Bucle Elm (input→update→view→layout→raster→present). Lo consumen las apps. # `config-wawa`: el sentido de la rueda (ratón / touchpad, por separado) sale # del bus `wawa-config` y se fija al arrancar cada app, con watcher para el # cambio en caliente. Va acá y no app por app a propósito: es una preferencia # del HUMANO, no de cada app, y ninguna app del monorepo debería poder # desobedecerla por olvido. Ver `llimphi-ui/src/rueda.rs`. llimphi-ui = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # El compositor DIRECTO, para que el catálogo de widgets cuelgue de él y no del # shell de escritorio (W4.6). Un widget que dependa de `llimphi-ui` arrastra # winit + accesskit + arboard + vello, y con eso queda fuera del alcance de una # app enjaulada; colgando de acá sirve igual en Linux, en el kernel y en la jaula. # # `default-features = false` VA ACÁ Y NO EN CADA WIDGET. Es la trampa recurrente # de cargo: apagar los defaults desde un miembro NO HACE NADA si el workspace # declaró la dep sin ellos (cargo lo avisa y lo ignora). Ya pasó con taffy, vello # y peniko. Sin esto, cada widget encendería el backend `vello` del compositor y # volvería a quedar fuera del alcance de una app enjaulada — que es justamente lo # que W4.6 vino a arreglar. Quien ensambla la app elige el backend: `llimphi-ui` # en Linux, `llimphi-jaula` en la jaula, `llimphi-wawa` en el kernel. llimphi-compositor = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Tier 3 — apps WASM con UI Llimphi real. El guest pinta un WireNode (IR # serializable), el host (runner) lo materializa en View y rebota los # eventos al update del guest. SDK = lado guest, runner = lado host. llimphi-wire-view = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-wire-escena = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-wasm-app-sdk = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-wasm-runner = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Núcleo puro de distribución (CAS + verificación + resolve), SIN runner/GPU. llimphi-wasm-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Cara con baterías: re-exporta core + puente al runner para correr la app. llimphi-wasm-dist = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-wasm-open = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-wasm-registry = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-wasm-wasi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Transporte P2P del bytecode por hash sobre BrahmanNet (card-net). llimphi-wasm-net = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-3d = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Runner wlr-layer-shell: corre un `App` de Llimphi como barra anclada a un # borde (no como ventana), reusando la plumbing sctk+wgpu que pata probó. llimphi-layer = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Paleta semántica compartida por las apps y los widgets. llimphi-theme = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Tweens y helpers de animación sobre el bucle Elm. llimphi-motion = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Máquina de estados de animación (estilo Rive) clip-agnóstica. Núcleo puro; # el render lo cablea el consumidor (llimphi-lottie). Escalón sobre el playback. llimphi-anim = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Studio de animación «rive»: además del editor (bin), expone como lib los # documentos serializables (Doc + RigDoc + Project) que carga mirada-fondo. llimphi-anim-studio = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Render de mallas deformables (skel::Mesh) a vello Scene: vectorial y texturizada. llimphi-mesh = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Iconos vectoriales (BezPath en grid 24×24) compartidos por todas las apps. llimphi-icons = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Puente fino vello_svg → Llimphi para SVG arbitrario (íconos .desktop, logos). llimphi-svg = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Puente fino velato (Lottie) → Llimphi para animación vectorial autorada (.json). llimphi-lottie = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-image = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Decodificador de protocolos de gráficos de terminal (kitty/sixel) → RGBA. llimphi-term-graphics = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Widgets reusables sobre llimphi-ui — uno por crate. llimphi-widget-app-header = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-banner = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-button = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-rive-button = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-card = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-clipboard = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-context-menu = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-edit-menu = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-menubar = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-list = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-grid = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-table = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-color-picker = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-slider = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-app-icon = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-scroll = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-lazy-list = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-splitter = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-stat-card = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-tabs = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-module-allichay = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-module-command-palette = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-module-diff-viewer = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-module-fif = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-module-file-picker = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-module-bookmarks = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-module-mini-map = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-module-shuma-term = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-module-symbol-outline = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-plugin-host = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-theme-switcher = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-text-area = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-text-editor-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-text-editor = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-text-editor-lsp = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-text-input = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-tiled = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-nodegraph = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-tree = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } grafo-nav = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # La lengua de expresiones compartida (PLAN-CRUCES §A5). `default-features = # false` acá NO: los consumidores Linux (maskay, pizarra, yupay, krama) la # quieren con `std`; el kernel y las jaulas la piden sin default desde su propio # manifiesto, como hacen con `format` y `dataflow`. krama-expr = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } krama-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } krama-store = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } krama-app-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-navigator = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-detail-table = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-select = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # `gpu` explícito: el camino GPU-directo del modo grilla pasó a ser una feature # (para que el terminal pueda salir del proceso), y este `default-features = # false` la apagaba para TODOS los que lo toman por el workspace — dejando a # `shuma-module-shell` sin `CellPipeline`. Pedirla acá devuelve exactamente el # comportamiento de antes; quien la quiera apagar lo hace en su manifiesto. llimphi-widget-terminal = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Sello vectorial wawa (rombo + W implícita + Merkle Core). llimphi-widget-wawa-mark = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Widgets de elegancia transversal (tooltip, spinner, progress, toast, # modal, empty, status-bar, shortcuts-help, splash). llimphi-widget-tooltip = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-spinner = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-progress = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-toast = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-modal = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-empty = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-status-bar = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-shortcuts-help = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-timeline = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-transport = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-waveform = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-splash = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Controles de formulario y signaling (switch, segmented, breadcrumb, # badge, avatar, skeleton, field). llimphi-widget-switch = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-segmented = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-rag-sidebar = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-dock-rail = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-toolbar = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-breadcrumb = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-badge = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-avatar = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-skeleton = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-field = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Firma visual transversal (gradient sutil + hairline accent). # `default-features = false` acá y no en `card`: los defaults de un widget sólo # se pueden apagar desde la declaración del WORKSPACE (la trampa recurrente de # cargo). Sin esto, `card` arrastraría a `panel` con backend `vello` y volvería a # quedar fuera de una jaula, aunque `card` pidiera `wire`. llimphi-widget-panel = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-panes = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Widgets Flutter-like — composición sobre primitivas Tier 1/3 ya # expuestas (sombra, gradient, animated, ripple). llimphi-widget-chip = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-fab = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-fugaces = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-wrap = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-range-slider = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-calendar = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-datetime-picker = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-form = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-accordion = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-stepper = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-fitted-box = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-carousel = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-rating = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-gauge = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-seven-segment = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-scaffold = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-hero = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-widget-router = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-workspace = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # Abstracción Selector — host (paths) + wawa (khipus). llimphi-module-selector = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # === Filesystem helpers === directories = "5" # === Diff line-based (llimphi-module-diff-viewer) === # `similar` es la crate de facto: implementa Myers + Patience + LCS, # expone `TextDiff` con ChangeTag por línea (Equal/Insert/Delete), # zero deps fuera de std. La 2.x es estable hace años. similar = "2" # === Fuzzy matching (shuma-history) === # nucleo-matcher = mismo matcher que helix-editor: rápido, Unicode-correct, # bonus por prefijos, ranking estable. La versión 0.3 expone el API simple # que necesitamos (Matcher + Pattern + score). nucleo-matcher = "0.3" # === Transporte autenticado (shuma-link) === # snow = framework Noise pure-rust. Lo usamos en modo Noise_XK (cliente # conoce la pubkey del servidor, server descubre la del cliente y la # valida contra una allowlist). ChaCha20-Poly1305 + X25519 + BLAKE2s. # La versión 0.9 viene pinneada por libp2p, así nos alineamos. snow = "0.9" hex = "0.4" # === PTY + emulador de terminal (shuma-exec, módulos REPL) === # portable-pty aloja un PTY cross-platform; lo usamos para los # comandos TUI tipo vim/htop/less que necesitan un terminal de verdad. # vt100 parsea la secuencia de bytes que el PTY emite (ANSI + cursor # movement + erase + screen state) y mantiene un buffer de pantalla # renderizable como grid. portable-pty = "0.9" vt100 = "0.16" # === WASM web (tawasuyu) === wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" js-sys = "0.3" web-sys = "0.3" glam = "0.30" # === Markdown (pluma) === pulldown-cmark = { version = "0.12", default-features = false, features = ["html"] } # === Archivos comprimidos (nahual archive viewer) === # Sólo listamos el directorio central (nombres/tamaños); no descomprimimos, # por eso default-features=false alcanza para ZIP. Para tar.gz sí # descomprimimos en streaming con flate2 (ya declarado arriba), saltando # los datos de cada entrada — sólo leemos headers. zip = { version = "2.4", default-features = false } tar = { version = "0.4", default-features = false } # === Fuentes (nahual font viewer) === # Parseo de TTF/OTF/TTC y extracción de contornos de glifo a paths. ttf-parser = "0.25" # ============================================================ # Intra-workspace deps de nahual (referenciadas por workspace = true) # ============================================================ nahual-text-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-image-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-pdf-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-cbz-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-thumb-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-vistazo-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-gallery-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-video-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-card-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-audio-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } media-module = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-module = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-icon-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-icon-cli = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-icon-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-icon-llm = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } foreign-svg = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } foreign-pdf = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-render = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-tiles = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-render-gpu = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-ops = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tullpu-paint = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-tree-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-hex-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-svg-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-sheet-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-dbf-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-table-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-markdown-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-pluma-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-cotejo-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-deck-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-archive-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-font-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-map-viewer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-geo-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-geo-voxel = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-iconos = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-viewer-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-file-explorer-llimphi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # ============================================================ # Intra-workspace deps de pineal (módulo de gráficos) # ============================================================ pineal-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-render = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-cartesian = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-stream = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-mesh = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-financial = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-polar = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-heatmap = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-treemap = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-flow = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-phosphor = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-export = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-hexbin = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-contour = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-bars = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-quiver = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal-yupana = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pineal = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # ============================================================ # Intra-workspace deps de iniy (laboratorio semántico de creencias) # ============================================================ iniy-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-evidencia = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-derive = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-emisores = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-cache = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-daemon = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-ingest = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-extract = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-nli = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-nli-llm = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-graph = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } iniy-store = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # la física de decaimiento de khipu la importa iniy-derive (SDD iniy §3) khipu-gravity = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # === auto: declarados por crates internos faltantes === cosmos-coords = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } cosmos-cities = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } cosmos-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } cosmos-ephemeris = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } cosmos-time = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } cosmos-wcs = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } # === auto: externas de eternal === celestial-eop-data = { version = "0.1"} approx = "0.5" byteorder = "1.5" cc = "1.0" chrono = "0.4" chrono-tz = "0.10" crc32fast = "1.4" criterion = "0.5" csv = "1.4" flate2 = "1.0" glob = "0.3" indicatif = "0.18" lz4_flex = "0.11" memmap2 = "0.9" # Cliente Wayland (lado cliente) — lo usa hapiy para hablar zwlr_screencopy # contra mirada (u otro compositor wlroots) y capturar la pantalla. wayland-client = "0.31" wayland-protocols-wlr = { version = "0.3", features = ["client"] } wayland-protocols-misc = { version = "0.3", features = ["client"] } # PipeWire (bindings a libpipewire-0.3, MIT) — el transporte de video que # `xdg-desktop-portal` exige para compartir pantalla. Lo usa # `mirada-screencast`; no entra al compositor (ver su LEEME: el productor es # un cliente wlr-screencopy, no el compositor mismo). # # `v0_3_34` es el piso que habilita `pw_stream_trigger_process` — sin él un # nodo DRIVER no se puede disparar y el consumidor recibe CERO cuadros, sin # error. Se pide el mínimo que hace falta, no la última: la feature declara # contra qué libpipewire se compila, y pedir de más rompería en una distro con # la biblioteca más vieja. pipewire = { version = "0.10", features = ["v0_3_34"] } libspa = "0.10" mockito = "1.0" ndarray = "0.15" num-traits = "0.2" once_cell = "1.19" parking_lot = "0.12" png = "0.18" proptest = "1.4" quick-xml = "0.31" rayon = "1.8" regex = "1.11" # TLS por **rustls**, no por el `default-tls` de reqwest (que es `native-tls` # y arrastra `openssl-sys`). Dos razones, y la segunda es la que muerde: # 1. `openssl-sys` NO cross-compila a `aarch64-linux-android` — su build # script no encuentra la libreria del NDK. Con el default puesto, toda # app que toque HTTP queda fuera del porte a Android (khipu fue la # primera en chocar). # 2. Seis de los doce consumidores YA pedian `rustls-tls` a mano. Como las # features de cargo son aditivas, eso no apagaba `default-tls`: estaban # linkeando **las dos** pilas de TLS creyendo que usaban una. Esto hace # verdadero lo que esos crates ya decian. # El resto de los defaults de reqwest se conservan uno por uno. # ⚠️ Cambio de comportamiento a nombrar: rustls valida contra las raices # empaquetadas (webpki-roots), no contra el almacen de certificados del SO. # Para las APIs publicas que consume la suite da igual; un servidor con CA # propia habria que agregarlo explicitamente. reqwest = { version = "0.12", default-features = false, features = [ "rustls-tls", "charset", "http2", "macos-system-configuration", ] } tiff = "0.11" wide = "0.7" wiremock = "0.6" # === i18n (rimay-localize) === fluent-bundle = "0.15" unic-langid = { version = "0.9", features = ["macros"] } sys-locale = "0.3" # === Servo (puriy-engine) === # Crates publicados de Servo embebibles individualmente. html5ever/markup5ever # ya entran via ammonia→surrealdb→nakui, así que alineamos versión para no # duplicar el árbol. markup5ever_rcdom es el DOM Rc-based simple (suficiente # para Fase 2: parsear y renderizar, sin scripting). cssparser es el tokenizer # CSS de Stylo, sirve para inline styles. ureq = HTTP síncrono minimalista, # evita pull de tokio en el engine. html5ever = "0.39" markup5ever = "0.39" markup5ever_rcdom = "0.39" cssparser = "0.35" url = "2" # `gzip`: sin ella ureq ni anuncia `Accept-Encoding` ni decodifica la respuesta. # python.org (detrás de Fastly) devuelve `content-encoding: gzip` AUNQUE no se lo # pidan, y el cuerpo comprimido se decodificaba como UTF-8: 3.911 caracteres # U+FFFD y una página de 16 cajas en vez de 1.489. Además baja lo que se # descarga en todo el resto. ureq = { version = "2", default-features = false, features = ["tls", "gzip"] } # Charset de la web real: no todo es UTF-8 (google.com sirve ISO-8859-1). # Ya venía transitivo por el stack de Servo — aquí se hace explícito. encoding_rs = "0.8" # === takiy-synth (SoundFont MIDI) === # rustysynth = sintetizador SF2 puro Rust, MIT. Reemplaza el oscilador # feo de takiy-synth por muestras reales (FluidR3, GeneralUser GS, etc). rustysynth = "1.3" # === takiy-playback (audio device output) === # cpal = backend de audio cross-platform (ALSA/PulseAudio/Pipewire en # Linux, WASAPI en Windows, CoreAudio en macOS). Lo usamos sólo para # abrir el device default y empujar muestras f32 — nada de mezclado # ni efectos en el callback. cpal = "0.15" # === media-source-wav (decoder PCM en disco) === # hound = lector/escritor WAV puro-Rust, sin deps nativas. Soporta PCM # entero (8/16/24/32) y float (32). Suficiente para abrir samples y # stems de prueba sin meter ffmpeg/symphonia. hound = "3.5" # === media-source-{mp3,flac,vorbis} (decoders vía symphonia) === # symphonia es una colección de decoders puro-Rust mantenida. `mp3` cubre # media-source-mp3; `flac` (decoder + demuxer FLAC nativo) cubre # media-source-flac (lossless); `vorbis` + `ogg` (codec + demuxer Ogg) # cubren media-source-vorbis (lossy clásico, libre de patentes). Sin aac: # ese tier patentado entra por shared/foreign-av. symphonia = { version = "0.5", default-features = false, features = ["mp3", "flac", "vorbis", "ogg"] } # === media-source-opus (decoder Opus NATIVO puro-Rust) === # Opus es el formato de audio nativo de tawasuyu (par del video AV1). ogg # demuxea las páginas Ogg; opus-wave es un port puro-Rust de libopus # (SILK+CELT, sin C ni FFI) — par del rav1d del lado video. ogg = "0.9" opus-wave = "3" # === media-source-webm (demux nativo Matroska/WebM) === # matroska-demuxer es un demuxer puro-Rust de MKV/WebM (EBML). Saca los # paquetes de los tracks V_AV1 y A_OPUS para alimentar a media-source-av1 # y media-source-opus — un .webm AV1+Opus se reproduce 100% nativo. matroska-demuxer = "0.7" # === Perfil `dist`: binarios de reparto livianos (equipos chicos / poca RAM) === # Hereda de `release` pero prioriza HUELLA sobre tiempo de compilación: LTO thin # (poda código muerto entre crates), un solo codegen-unit (mejor inlining/DCE) y # `strip` de símbolos. Reduce el tamaño en disco Y el segmento de código mapeado # en RAM de cada binario (mirada, pata, apps Llimphi). No toca `cargo build # --release` de iteración diaria; se usa sólo al empaquetar: # cargo build --profile dist -p mirada-compositor -p pata-host … # `panic = "unwind"` se mantiene a propósito: mirada-plugin-host aísla plugins # con `catch_unwind`, así que `abort` rompería el sandbox. # === Crates del monorepo consumidos por git-dep (pin del tag) === arje-bus = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } arje-card = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } auth-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } auth-huellita = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } chasqui-card = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } cosmos-sundial = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } foreign-av = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } format = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } hapiy-capture = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } kikin-wasmi = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } llimphi-test = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } maskay-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } media-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } nahual-source-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pata-config = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pata-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pata-host = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pluma-llm = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pluma-llm-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } pluma-llm-mock = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } rimay-localize = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } sandokan-sysmon-core = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } sandokan-vigilante = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } tejido = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } wawa-config = { git = "https://git.tawasuyu.net/tawasuyu/tawasuyu.git", tag = "v0.3.0" } [profile.dist] inherits = "release" lto = "thin" codegen-units = 1 strip = "symbols" panic = "unwind" # === Patch: smithay vendorizado (tearing / flip async) === # smithay 0.7.0 NO expone `DRM_MODE_PAGE_FLIP_ASYNC` por la API de su # `DrmCompositor` (ni el protocolo `wp_tearing_control_v1`). Para cerrar F1.4 # (tearing sin vsync para gaming, paridad Hyprland `general:allow_tearing`) # vendorizamos smithay y le añadimos, de forma contenida y espejando `use_vrr`: # · `AtomicDrmSurface::use_tearing/tearing_enabled/tearing_supported` + flip async # con fallback a vsync si el kernel rechaza el async de ese frame (EINVAL). # · Wrappers `DrmSurface::*` y `DrmCompositor::use_tearing/tearing_*`. # El protocolo `wp_tearing_control_v1` lo cablea mirada a mano (smithay no da helper). # Diff mínimo: sólo añade API, no cambia comportamiento con tearing apagado (default). [patch.crates-io] smithay = { path = "vendor/smithay" } # === Patch: taffy con el arreglo de DioxusLabs/taffy#1000 === # `distribute_space_up_to_limits` (grid track sizing) reparte espacio libre en # VARIAS iteraciones y acumula lo entregado en `track.item_incurred_increase`, # pero las dos cuentas que deciden cuánto le cabe a cada pista miraban # `track_affected_property(track)` PELADO, sin sumarle lo ya acumulado: el # margen restante quedaba inflado y el guarda que aplica el incremento dejaba # pasar pistas ya CONGELADAS por el filtro de elegibilidad. Resultado: las # pistas `auto` de un grid se pasan del contenedor definido aunque sus # max-content entraran de sobra. # # Es lo que descuadraba el infobox de Wikipedia, el footer de wordpress.org y # la grilla de patrocinadores de ziglang.org — la MISMA causa en los tres. # El diagnóstico completo, con traza, está en # `02_ruway/llimphi/llimphi-layout/taffy-1000-distribute-space.patch` y en el # encabezado de `llimphi-layout/tests/grid_maximise_overshoot.rs`. # # El fork es taffy v0.12.2 + esas 8 líneas, nada más. Verificado contra la # suite ENTERA de taffy: 4421 tests generados de web-platform, 105 unitarios, # 43 hand-written, 5 de doc — cero fallas. Se retira cuando taffy lo tome # upstream (sigue vivo en su master 0972b84). # # DIVERGENCIA CONOCIDA: el árbol de `03_ukupacha/wawa` NO hereda esto. Sus apps # son cada una su propio `[workspace]` (se compilan sueltas para wasm32) y un # `[patch]` sólo vale desde la raíz del workspace que compila, así que Llimphi # en wawa sigue con el taffy de crates.io. Es una diferencia de reparto de # pistas de grid, no de API: nada se rompe, pero un grid sobre-suscripto se # dibuja distinto en wawa que en Linux. Cerrarla es repetir estas dos líneas en # cada manifiesto de `apps/*`. # Por HTTPS y no por SSH a propósito: el repo es de lectura pública, así el # runner del CI (y cualquiera que clone) resuelve el fork sin llave. taffy = { git = "https://git.tawasuyu.net/tawasuyu/taffy.git", branch = "tawasuyu-0.12.2" }