gioser

tawasuyu/mirada

Sovereign tiling Wayland compositor + window manager in Rust, on Llimphi.

Rust 50Markdown 30TOML 211282 Definitions

⎇ e01d64de3cc1c0b8857edfe98e96fad9ed36fcbd Cargo.toml TOML · 447 lines · 20.6 KB History raw

chore: migra host gioser.net → tawasuyu.net (mismo repo, rebrand tawasuyu) e01d64de3 · Sergio ·

1# Cargo.toml raíz STANDALONE de mirada — compositor Wayland + WM sobre Llimphi.
2# Versión magra: sin el asistente IA (excluye mirada-asistente-llimphi,
3# asistente-puente y su cola pluma-llm) ni la barra web wasm (mirada-bar-web).
4# Llimphi se consume por git desde su repo publicado; las hojas compartidas
5# (format/auth-core/rimay-localize/wawa-config/app-bus) y el widget menubar
6# se vendorizan en su ruta original para no romper paths relativos.
7[workspace]
8resolver = "2"
9members = [
10    "02_ruway/mirada/mirada-app-llimphi",
11    "02_ruway/mirada/mirada-bar-core",
12    "02_ruway/mirada/mirada-body",
13    "02_ruway/mirada/mirada-brain",
14    "02_ruway/mirada/mirada-compositor",
15    "02_ruway/mirada/mirada-ctl",
16    "02_ruway/mirada/mirada-greeter",
17    "02_ruway/mirada/mirada-launcher",
18    "02_ruway/mirada/mirada-layout",
19    "02_ruway/mirada/mirada-link",
20    "02_ruway/mirada/mirada-portal",
21    "02_ruway/mirada/mirada-protocol",
22    "02_ruway/llimphi/widgets/menubar",
23    "shared/format", "shared/auth/auth-core",
24    "shared/rimay-localize", "shared/wawa-config", "shared/app-bus",
25]
26
27[workspace.package]
28version = "0.1.0"
29edition = "2021"
30rust-version = "1.80"
31license = "MIT"
32authors = ["Sergio <gerencia@jlsoltech.com>"]
33publish = false
34repository = "https://git.tawasuyu.net/tawasuyu/mirada"
35
36[workspace.dependencies]
37# === Registro de apps / menú global ===
38app-bus = { path = "shared/app-bus" }
39# === Serialización ===
40serde = { version = "1", features = ["derive"] }
41serde_json = "1"
42lsp-types = "0.97"
43serde-big-array = "0.5"
44postcard = { version = "1", features = ["use-std"] }
45toml = "0.8"
46ron = "0.8"
47bincode = "1"
48base64 = "0.22"
49
50# === Errores ===
51thiserror = "2"           # bump uniforme; arje (era 1) puede requerir ajustes menores
52anyhow = "1"
53
54# === Async ===
55tokio = { version = "1", features = ["full"] }
56tokio-util = { version = "0.7", features = ["compat"] }
57async-trait = "0.1"
58futures = "0.3"
59
60# === Observabilidad ===
61tracing = "0.1"
62tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
63
64# === Linux primitives (arje) ===
65nix = { version = "0.29", features = ["signal", "process", "sched", "mount", "fs", "socket", "net", "user"] }
66libc = "0.2"
67
68# === IDs / Hash / Crypto ===
69ulid = { version = "1", features = ["serde"] }
70uuid = { version = "1", features = ["v4", "rng-getrandom"] }
71sha2 = "0.10"
72blake3 = "1.5"
73ed25519-dalek = "2"
74aes-gcm = "0.10"
75chacha20poly1305 = "0.10"
76argon2 = "0.5"
77rand = "0.8"
78
79# === WASM (arje) ===
80# wasmi 1.0: unifica la versión con renaser (su kernel ya corre 1.0), para
81# que el ABI WASM del host sea idéntico en Linux y en bare-metal.
82wasmi = "1.0"
83wat = "1"
84
85# === Storage / DB ===
86sled = "0.34"
87rusqlite = { version = "0.31", features = ["bundled", "blob"] }
88
89# === Ingesta de documentos (iniy-ingest: PDF / EPUB) ===
90pdf-extract = "0.7"
91epub = "2.1"
92
93# === Bulk import Wikipedia (iniy-wiki dump) ===
94bzip2 = "0.4"
95
96# === Compresión (minga multi-bundle) ===
97zstd = "0.13"
98
99# === HTTP server (iniy-server) ===
100axum = "0.7"
101tower = "0.5"
102
103# === ANN sobre embeddings (iniy nli --ann) ===
104instant-distance = "0.6"
105
106# === P2P (minga) ===
107libp2p = { version = "0.56", features = ["tokio", "tcp", "noise", "yamux", "macros", "kad", "identify", "relay", "dcutr", "autonat", "mdns"] }
108libp2p-stream = "=0.4.0-alpha"
109libp2p-allow-block-list = "0.6"
110
111# === SSH (ssh, sandokan RemoteEngine, matilda) ===
112russh = "0.54"
113
114# === Math determinista cross-platform (dominium) ===
115libm = "0.2"
116
117# === SMF (takiy-midi) ===
118# midly: parser/emitter SMF tipo 0/1, no_std-friendly, sin allocs en hot path.
119midly = "0.5"
120
121# === Code parsing (minga) ===
122arboard = "3"
123ropey = "1.6"
124tree-sitter = "0.24"
125tree-sitter-rust = "0.23"
126tree-sitter-python = "0.23"
127tree-sitter-typescript = "0.23"
128tree-sitter-javascript = "0.23"
129tree-sitter-go = "0.23"
130
131# === FS notify ===
132notify = "6.1"
133
134# === Grafos (iniy, nakui-core ya lo usa directo en 0.6) ===
135petgraph = "0.6"
136
137# === Image decoding (nahual-image-viewer-llimphi) ===
138# default-features = false: nos quedamos con PNG + JPEG + WebP (lossless).
139# tullpu-render exporta a las tres; AVIF/TIFF/… los habilitamos si una app
140# los pide específicamente.
141image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp"] }
142
143# === FUSE (minga-vfs) ===
144# default-features = false: prescinde de pkg-config/libfuse-dev en build.
145# El montaje pasa a ser Rust puro (vía el helper `fusermount3` en runtime).
146fuser = { version = "0.15", default-features = false }
147
148# === CLI / auth (minga) ===
149clap = { version = "4", features = ["derive"] }
150rpassword = "7"
151
152# === PAM (auth-core) ===
153pam = "0.8"
154
155# === D-Bus (arje compat) ===
156zbus = { version = "4", default-features = false, features = ["tokio"] }
157
158# === Tests ===
159tempfile = "3"
160
161# === Llimphi (motor gráfico soberano) ===
162# wgpu sobre Vulkan/Metal/DX12, winit para ventana en dev Linux.
163# raw-window-handle 0.6 alinea winit 0.30 con wgpu 24.
164# vello 0.5 = rasterizador vectorial sobre wgpu 24.
165# taffy 0.9 = motor Flexbox/Grid puro Rust (ya pulled por transitivos, lo alineamos).
166# parley 0.2 = shaping/layout de texto compatible con peniko 0.4 (que vello 0.5 expone).
167wgpu = "24"
168winit = "0.30"
169raw-window-handle = "0.6"
170pollster = "0.4"
171vello = "0.5"
172taffy = "0.9"
173# parley = shaping completo (bidi, ligatures, fallback CJK/emoji vía fontique, line break).
174parley = "0.4"
175# Bucle Elm (input→update→view→layout→raster→present). Lo consumen las apps.
176llimphi-ui = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
177# Paleta semántica compartida por las apps y los widgets.
178llimphi-theme = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
179# Tweens y helpers de animación sobre el bucle Elm.
180llimphi-motion = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
181# Iconos vectoriales (BezPath en grid 24×24) compartidos por todas las apps.
182llimphi-icons = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
183# Widgets reusables sobre llimphi-ui — uno por crate.
184llimphi-widget-app-header = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
185llimphi-widget-banner = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
186llimphi-widget-button = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
187llimphi-widget-card = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
188llimphi-clipboard = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
189llimphi-widget-context-menu = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
190llimphi-widget-edit-menu = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
191llimphi-widget-menubar = { path = "02_ruway/llimphi/widgets/menubar" }
192llimphi-widget-list = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
193llimphi-widget-grid = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
194llimphi-widget-slider = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
195llimphi-widget-scroll = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
196llimphi-widget-splitter = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
197llimphi-widget-stat-card = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
198llimphi-widget-tabs = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
199llimphi-module-command-palette = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
200llimphi-module-diff-viewer = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
201llimphi-module-fif = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
202llimphi-module-file-picker = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
203llimphi-module-bookmarks = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
204llimphi-module-mini-map = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
205llimphi-module-shuma-term = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
206llimphi-module-symbol-outline = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
207llimphi-plugin-host = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
208llimphi-widget-theme-switcher = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
209llimphi-widget-text-area = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
210llimphi-widget-text-editor-core = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
211llimphi-widget-text-editor = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
212llimphi-widget-text-editor-lsp = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
213llimphi-widget-text-input = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
214llimphi-widget-tiled = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
215llimphi-widget-nodegraph = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
216llimphi-widget-tree = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
217llimphi-widget-navigator = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
218# Sello vectorial wawa (rombo + W implícita + Merkle Core).
219llimphi-widget-wawa-mark = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
220# Widgets de elegancia transversal (tooltip, spinner, progress, toast,
221# modal, empty, status-bar, shortcuts-help, splash).
222llimphi-widget-tooltip = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
223llimphi-widget-spinner = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
224llimphi-widget-progress = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
225llimphi-widget-toast = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
226llimphi-widget-modal = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
227llimphi-widget-empty = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
228llimphi-widget-status-bar = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
229llimphi-widget-shortcuts-help = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
230llimphi-widget-timeline = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
231llimphi-widget-splash = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
232# Controles de formulario y signaling (switch, segmented, breadcrumb,
233# badge, avatar, skeleton, field).
234llimphi-widget-switch = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
235llimphi-widget-segmented = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
236llimphi-widget-dock-rail = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
237llimphi-widget-breadcrumb = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
238llimphi-widget-badge = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
239llimphi-widget-avatar = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
240llimphi-widget-skeleton = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
241llimphi-widget-field = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
242# Firma visual transversal (gradient sutil + hairline accent).
243llimphi-widget-panel = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
244llimphi-widget-panes = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
245llimphi-workspace = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
246# Abstracción Selector — host (paths) + wawa (khipus).
247llimphi-module-selector = { git = "https://git.tawasuyu.net/tawasuyu/llimphi.git", tag = "v0.1.0" }
248
249# === Filesystem helpers ===
250directories = "5"
251
252# === Diff line-based (llimphi-module-diff-viewer) ===
253# `similar` es la crate de facto: implementa Myers + Patience + LCS,
254# expone `TextDiff` con ChangeTag por línea (Equal/Insert/Delete),
255# zero deps fuera de std. La 2.x es estable hace años.
256similar = "2"
257
258# === Fuzzy matching (shuma-history) ===
259# nucleo-matcher = mismo matcher que helix-editor: rápido, Unicode-correct,
260# bonus por prefijos, ranking estable. La versión 0.3 expone el API simple
261# que necesitamos (Matcher + Pattern + score).
262nucleo-matcher = "0.3"
263
264# === Transporte autenticado (shuma-link) ===
265# snow = framework Noise pure-rust. Lo usamos en modo Noise_XK (cliente
266# conoce la pubkey del servidor, server descubre la del cliente y la
267# valida contra una allowlist). ChaCha20-Poly1305 + X25519 + BLAKE2s.
268# La versión 0.9 viene pinneada por libp2p, así nos alineamos.
269snow = "0.9"
270hex = "0.4"
271
272# === PTY + emulador de terminal (shuma-exec, módulos REPL) ===
273# portable-pty aloja un PTY cross-platform; lo usamos para los
274# comandos TUI tipo vim/htop/less que necesitan un terminal de verdad.
275# vt100 parsea la secuencia de bytes que el PTY emite (ANSI + cursor
276# movement + erase + screen state) y mantiene un buffer de pantalla
277# renderizable como grid.
278portable-pty = "0.9"
279vt100 = "0.16"
280
281# === WASM web (gioser) ===
282wasm-bindgen = "0.2"
283wasm-bindgen-futures = "0.4"
284js-sys = "0.3"
285web-sys = "0.3"
286glam = "0.30"
287
288# === Markdown (pluma) ===
289pulldown-cmark = { version = "0.12", default-features = false, features = ["html"] }
290
291# === Archivos comprimidos (nahual archive viewer) ===
292# Sólo listamos el directorio central (nombres/tamaños); no descomprimimos,
293# por eso default-features=false alcanza para ZIP. Para tar.gz sí
294# descomprimimos en streaming con flate2 (ya declarado arriba), saltando
295# los datos de cada entrada — sólo leemos headers.
296zip = { version = "2.4", default-features = false }
297tar = { version = "0.4", default-features = false }
298
299# === Fuentes (nahual font viewer) ===
300# Parseo de TTF/OTF/TTC y extracción de contornos de glifo a paths.
301ttf-parser = "0.25"
302
303# ============================================================
304# Intra-workspace deps de nahual (referenciadas por workspace = true)
305# ============================================================
306nahual-text-viewer-llimphi = { path = "02_ruway/nahual/nahual-text-viewer-llimphi" }
307nahual-image-viewer-llimphi = { path = "02_ruway/nahual/nahual-image-viewer-llimphi" }
308nahual-thumb-core = { path = "02_ruway/nahual/nahual-thumb-core" }
309nahual-gallery-llimphi = { path = "02_ruway/nahual/nahual-gallery-llimphi" }
310nahual-video-viewer-llimphi = { path = "02_ruway/nahual/nahual-video-viewer-llimphi" }
311nahual-card-viewer-llimphi = { path = "02_ruway/nahual/nahual-card-viewer-llimphi" }
312nahual-audio-viewer-llimphi = { path = "02_ruway/nahual/nahual-audio-viewer-llimphi" }
313nahual-tree-viewer-llimphi = { path = "02_ruway/nahual/nahual-tree-viewer-llimphi" }
314nahual-hex-viewer-llimphi = { path = "02_ruway/nahual/nahual-hex-viewer-llimphi" }
315nahual-table-viewer-llimphi = { path = "02_ruway/nahual/nahual-table-viewer-llimphi" }
316nahual-markdown-viewer-llimphi = { path = "02_ruway/nahual/nahual-markdown-viewer-llimphi" }
317nahual-archive-viewer-llimphi = { path = "02_ruway/nahual/nahual-archive-viewer-llimphi" }
318nahual-font-viewer-llimphi = { path = "02_ruway/nahual/nahual-font-viewer-llimphi" }
319nahual-map-viewer-llimphi = { path = "02_ruway/nahual/nahual-map-viewer-llimphi" }
320nahual-geo-core = { path = "02_ruway/nahual/nahual-geo-core" }
321nahual-viewer-core = { path = "02_ruway/nahual/nahual-viewer-core" }
322nahual-file-explorer-llimphi = { path = "02_ruway/nahual/nahual-file-explorer-llimphi" }
323
324# ============================================================
325# Intra-workspace deps de pineal (módulo de gráficos)
326# ============================================================
327pineal-core = { path = "00_unanchay/pineal/pineal-core" }
328pineal-render = { path = "00_unanchay/pineal/pineal-render" }
329pineal-cartesian = { path = "00_unanchay/pineal/pineal-cartesian" }
330pineal-stream = { path = "00_unanchay/pineal/pineal-stream" }
331pineal-mesh = { path = "00_unanchay/pineal/pineal-mesh" }
332pineal-financial = { path = "00_unanchay/pineal/pineal-financial" }
333pineal-polar = { path = "00_unanchay/pineal/pineal-polar" }
334pineal-heatmap = { path = "00_unanchay/pineal/pineal-heatmap" }
335pineal-treemap = { path = "00_unanchay/pineal/pineal-treemap" }
336pineal-flow = { path = "00_unanchay/pineal/pineal-flow" }
337pineal-phosphor = { path = "00_unanchay/pineal/pineal-phosphor" }
338pineal-export = { path = "00_unanchay/pineal/pineal-export" }
339pineal-hexbin = { path = "00_unanchay/pineal/pineal-hexbin" }
340pineal-contour = { path = "00_unanchay/pineal/pineal-contour" }
341pineal-bars = { path = "00_unanchay/pineal/pineal-bars" }
342pineal = { path = "00_unanchay/pineal/pineal-umbrella" }
343
344# ============================================================
345# Intra-workspace deps de iniy (laboratorio semántico de creencias)
346# ============================================================
347iniy-core = { path = "01_yachay/iniy/iniy-core" }
348iniy-ingest = { path = "01_yachay/iniy/iniy-ingest" }
349iniy-extract = { path = "01_yachay/iniy/iniy-extract" }
350iniy-nli = { path = "01_yachay/iniy/iniy-nli" }
351iniy-nli-llm = { path = "01_yachay/iniy/iniy-nli-llm" }
352iniy-graph = { path = "01_yachay/iniy/iniy-graph" }
353iniy-store = { path = "01_yachay/iniy/iniy-store" }
354
355# === auto: declarados por crates internos faltantes ===
356cosmos-coords = { path = "01_yachay/cosmos/cosmos-coords" }
357cosmos-core = { path = "01_yachay/cosmos/cosmos-core" }
358cosmos-ephemeris = { path = "01_yachay/cosmos/cosmos-ephemeris" }
359cosmos-time = { path = "01_yachay/cosmos/cosmos-time" }
360cosmos-wcs = { path = "01_yachay/cosmos/cosmos-wcs" }
361
362# === auto: externas de eternal ===
363celestial-eop-data = { version = "0.1"}
364approx = "0.5"
365byteorder = "1.5"
366cc = "1.0"
367chrono = "0.4"
368crc32fast = "1.4"
369criterion = "0.5"
370csv = "1.4"
371flate2 = "1.0"
372glob = "0.3"
373indicatif = "0.18"
374lz4_flex = "0.11"
375memmap2 = "0.9"
376mockito = "1.0"
377ndarray = "0.15"
378num-traits = "0.2"
379once_cell = "1.19"
380parking_lot = "0.12"
381png = "0.18"
382proptest = "1.4"
383quick-xml = "0.31"
384rayon = "1.8"
385regex = "1.11"
386reqwest = "0.12"
387tiff = "0.11"
388wide = "0.7"
389wiremock = "0.6"
390
391# === i18n (rimay-localize) ===
392fluent-bundle = "0.15"
393unic-langid = { version = "0.9", features = ["macros"] }
394sys-locale = "0.3"
395
396# === Servo (puriy-engine) ===
397# Crates publicados de Servo embebibles individualmente. html5ever/markup5ever
398# ya entran via ammonia→surrealdb→nakui, así que alineamos versión para no
399# duplicar el árbol. markup5ever_rcdom es el DOM Rc-based simple (suficiente
400# para Fase 2: parsear y renderizar, sin scripting). cssparser es el tokenizer
401# CSS de Stylo, sirve para inline styles. ureq = HTTP síncrono minimalista,
402# evita pull de tokio en el engine.
403html5ever = "0.39"
404markup5ever = "0.39"
405markup5ever_rcdom = "0.39"
406cssparser = "0.35"
407url = "2"
408ureq = { version = "2", default-features = false, features = ["tls"] }
409
410# === takiy-synth (SoundFont MIDI) ===
411# rustysynth = sintetizador SF2 puro Rust, MIT. Reemplaza el oscilador
412# feo de takiy-synth por muestras reales (FluidR3, GeneralUser GS, etc).
413rustysynth = "1.3"
414
415# === takiy-playback (audio device output) ===
416# cpal = backend de audio cross-platform (ALSA/PulseAudio/Pipewire en
417# Linux, WASAPI en Windows, CoreAudio en macOS). Lo usamos sólo para
418# abrir el device default y empujar muestras f32 — nada de mezclado
419# ni efectos en el callback.
420cpal = "0.15"
421
422# === media-source-wav (decoder PCM en disco) ===
423# hound = lector/escritor WAV puro-Rust, sin deps nativas. Soporta PCM
424# entero (8/16/24/32) y float (32). Suficiente para abrir samples y
425# stems de prueba sin meter ffmpeg/symphonia.
426hound = "3.5"
427
428# === media-source-{mp3,flac,vorbis} (decoders vía symphonia) ===
429# symphonia es una colección de decoders puro-Rust mantenida. `mp3` cubre
430# media-source-mp3; `flac` (decoder + demuxer FLAC nativo) cubre
431# media-source-flac (lossless); `vorbis` + `ogg` (codec + demuxer Ogg)
432# cubren media-source-vorbis (lossy clásico, libre de patentes). Sin aac:
433# ese tier patentado entra por shared/foreign-av.
434symphonia = { version = "0.5", default-features = false, features = ["mp3", "flac", "vorbis", "ogg"] }
435
436# === media-source-opus (decoder Opus NATIVO puro-Rust) ===
437# Opus es el formato de audio nativo de gioser (par del video AV1). ogg
438# demuxea las páginas Ogg; opus-wave es un port puro-Rust de libopus
439# (SILK+CELT, sin C ni FFI) — par del rav1d del lado video.
440ogg = "0.9"
441opus-wave = "3"
442
443# === media-source-webm (demux nativo Matroska/WebM) ===
444# matroska-demuxer es un demuxer puro-Rust de MKV/WebM (EBML). Saca los
445# paquetes de los tracks V_AV1 y A_OPUS para alimentar a media-source-av1
446# y media-source-opus — un .webm AV1+Opus se reproduce 100% nativo.
447matroska-demuxer = "0.7"