tawasuyu

tawasuyu/llimphi

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

Rust 229TOML 101Markdown 82Shell 24052 Sutichaykuna

⎇ dba855e446ca2bd4e7d146bdc168fb232cad15a4 Cargo.toml TOML · 446 siq'ikuna · 19.9 KB Ñawpa willay ch'uya

chore: preparar publicación a crates.io (publish=true, versiones en deps, descriptions, repository, orden topológico + script) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> dba855e44 · Sergio ·

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